aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/bg/js/yomichan.js16
-rw-r--r--ext/fg/js/driver.js9
-rw-r--r--ext/fg/js/util.js8
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});
}