diff options
| -rw-r--r-- | ext/bg/js/yomichan.js | 16 | ||||
| -rw-r--r-- | ext/fg/js/driver.js | 9 | ||||
| -rw-r--r-- | 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});  } |