diff options
author | flo-mic <florianmichel@hotmail.de> | 2021-02-23 23:47:31 +0300 |
---|---|---|
committer | flo-mic <florianmichel@hotmail.de> | 2021-02-23 23:47:31 +0300 |
commit | 4e22a874f616f31ef04b1e795b45669b4589480c (patch) | |
tree | 6cab0794cb639309e1ca36fa8c75b9a6bccd14df /src/js | |
parent | 17c79a284397c9556f8a44e48a9a92466f8145c5 (diff) |
trigger autofill when page is loaded
Diffstat (limited to 'src/js')
-rw-r--r-- | src/js/App/Client.js | 2 | ||||
-rw-r--r-- | src/js/Manager/AutofillManager.js | 53 | ||||
-rw-r--r-- | src/js/Services/MessageService.js | 2 |
3 files changed, 47 insertions, 10 deletions
diff --git a/src/js/App/Client.js b/src/js/App/Client.js index 61b987b..4057278 100644 --- a/src/js/App/Client.js +++ b/src/js/App/Client.js @@ -3,6 +3,7 @@ import ErrorManager from '@js/Manager/ErrorManager'; import MessageService from '@js/Services/MessageService'; import ConverterManager from '@js/Manager/ConverterManager'; import ClientControllerManager from '@js/Manager/ClientControllerManager'; +import AutofillManager from '@js/Manager/AutofillManager'; import DomMiner from '@js/Miner/DomMiner'; class Client { @@ -17,6 +18,7 @@ class Client { ClientControllerManager.init(); let miner = new DomMiner(); miner.init(); + AutofillManager.initClient(); } catch(e) { ErrorManager.logError(e); } diff --git a/src/js/Manager/AutofillManager.js b/src/js/Manager/AutofillManager.js index 51d024d..16f122c 100644 --- a/src/js/Manager/AutofillManager.js +++ b/src/js/Manager/AutofillManager.js @@ -8,18 +8,54 @@ export default new class AutofillManager { constructor() { this._recommendationListener = (recommendations) => { - this._sendAutofillPassword(recommendations); - }; - this._sendPasswordToMessageService = (recommendations) => { - this._sendPwdToMessageService(recommendations); + this.recommendations = recommendations; + this.currentURL =TabManager.getAll()[TabManager.currentTabId].url }; + this.recommendations = []; + this.currentURL = null; } /** * */ - init() { + async init() { RecommendationManager.listen.on(this._recommendationListener); + MessageService.listen( + 'autofill.page.ready', + (message, reply) => { + if(message.url = this.currentURL) { + this._sendAutofillPassword(this.recommendations); + } + } + ); + } + + /** + * + */ + initClient() { + if (document.readyState === "complete" + || document.readyState === "loaded" + || document.readyState === "interactive") { + this._sendBrowserPageReadyMessage() + } else { + window.addEventListener("domcontentloaded", this._sendBrowserPageReadyMessage()); + } + } + + /** + * + */ + _sendBrowserPageReadyMessage() { + MessageService.send( + { + type : 'autofill.page.ready', + payload : { + url: window.location.href + }, + receiver: 'background' + } + ); } /** @@ -30,16 +66,15 @@ export default new class AutofillManager { async _sendAutofillPassword(recommendations) { if(recommendations.length === 0 || await SettingsService.getValue('paste.autofill') === false) return; let password = recommendations[0]; - var self = this; - setTimeout(function () { + setTimeout(() => { let ids = TabManager.get('autofill.ids', []); if(ids.indexOf(password.getId()) === -1) { ids.push(password.getId()); TabManager.set('autofill.ids', ids); } - self._sendPasswordToMessageService(password); - }, 2500); + this._sendPwdToMessageService(password); + }, 500); } /** diff --git a/src/js/Services/MessageService.js b/src/js/Services/MessageService.js index 79b18b1..461390e 100644 --- a/src/js/Services/MessageService.js +++ b/src/js/Services/MessageService.js @@ -292,7 +292,7 @@ class MessageService { */ _checkClientRestrictions(message) { return message.getSender() !== 'client' || - (message.getType() !== 'password.mine' && message.getType() !== 'queue.items' && message.getType() !== 'debug.form.fields') || + (message.getType() !== 'password.mine' && message.getType() !== 'queue.items' && message.getType() !== 'debug.form.fields' && message.getType() !== 'autofill.page.ready') || (message.getType() === 'queue.items' && message.getPayload().name !== 'error'); } |