From 004a0d5281fb1793f9106de06fc6758ff97a48fb Mon Sep 17 00:00:00 2001 From: Alex Yatskov Date: Wed, 28 Sep 2016 20:14:21 -0700 Subject: [PATCH] Fix activation bug --- ext/bg/js/yomichan.js | 16 +++++++++------- ext/fg/js/driver.js | 9 ++++++++- ext/fg/js/util.js | 8 ++++++++ 3 files changed, 25 insertions(+), 8 deletions(-) diff --git a/ext/bg/js/yomichan.js b/ext/bg/js/yomichan.js index f1b3ffc4..46a240a3 100644 --- a/ext/bg/js/yomichan.js +++ b/ext/bg/js/yomichan.js @@ -23,6 +23,7 @@ class Yomichan { Handlebars.registerHelper('kanjiLinks', kanjiLinks); this.translator = new Translator(); + this.options = null; this.importTabId = null; this.asyncPools = {}; this.ankiConnectVer = 0; @@ -30,8 +31,6 @@ class Yomichan { chrome.runtime.onMessage.addListener(this.onMessage.bind(this)); chrome.browserAction.onClicked.addListener(this.onBrowserAction.bind(this)); - chrome.tabs.onCreated.addListener(tab => this.onTabReady(tab.id)); - chrome.tabs.onUpdated.addListener(this.onTabReady.bind(this)); loadOptions().then(opts => { this.setOptions(opts); @@ -66,11 +65,6 @@ class Yomichan { return true; } - onTabReady(tabId) { - this.tabInvoke(tabId, 'setOptions', this.options); - this.tabInvoke(tabId, 'setEnabled', this.state === 'enabled'); - } - onBrowserAction() { switch (this.state) { case 'disabled': @@ -258,6 +252,14 @@ class Yomichan { return note; } + api_getEnabled({callback}) { + callback(this.state === 'enabled'); + } + + api_getOptions({callback}) { + loadOptions().then(opts => callback(opts)); + } + api_addDefinition({definition, mode, callback}) { const note = this.formatNote(definition, mode); this.ankiInvokeSafe('addNote', {note}, null, callback); diff --git a/ext/fg/js/driver.js b/ext/fg/js/driver.js index 68cbcdee..d0907e7d 100644 --- a/ext/fg/js/driver.js +++ b/ext/fg/js/driver.js @@ -25,7 +25,7 @@ class Driver { this.lastTextSource = null; this.pendingLookup = false; this.enabled = false; - this.options = {}; + this.options = null; this.definitions = null; this.sequence = 0; this.fgRoot = chrome.extension.getURL('fg'); @@ -37,6 +37,13 @@ class Driver { window.addEventListener('keydown', this.onKeyDown.bind(this)); window.addEventListener('scroll', e => this.hidePopup()); window.addEventListener('resize', e => this.hidePopup()); + + getOptions().then(opts => { + this.options = opts; + return getEnabled(); + }).then(enabled => { + this.enabled = enabled; + }); } onKeyDown(e) { diff --git a/ext/fg/js/util.js b/ext/fg/js/util.js index c24ad885..cf5621ec 100644 --- a/ext/fg/js/util.js +++ b/ext/fg/js/util.js @@ -21,6 +21,14 @@ function invokeApiBg(action, params) { return new Promise((resolve, reject) => chrome.runtime.sendMessage({action, params}, resolve)); } +function getEnabled() { + return invokeApiBg('getEnabled', {}); +} + +function getOptions() { + return invokeApiBg('getOptions', {}); +} + function findTerm(text) { return invokeApiBg('findTerm', {text}); }