aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Yatskov <alex@foosoft.net>2017-03-04 18:24:57 -0800
committerAlex Yatskov <alex@foosoft.net>2017-03-04 18:24:57 -0800
commit30999c13d32e7f111db16814dc2cbb0f30825861 (patch)
tree3aa24f7045f10237aa744651844d18219d1890e6
parentb039d300249087aee18c7e8565ae7447d2cf5b15 (diff)
wip
-rw-r--r--ext/bg/background.html1
-rw-r--r--ext/bg/js/options.js8
-rw-r--r--ext/bg/js/popup.js2
-rw-r--r--ext/bg/js/yomichan.js79
-rw-r--r--ext/fg/js/display-frame.js40
-rw-r--r--ext/fg/js/driver.js12
-rw-r--r--ext/mixed/js/display.js8
7 files changed, 79 insertions, 71 deletions
diff --git a/ext/bg/background.html b/ext/bg/background.html
index 3c7b0dd9..1aa60559 100644
--- a/ext/bg/background.html
+++ b/ext/bg/background.html
@@ -5,7 +5,6 @@
<script src="/mixed/lib/dexie.min.js"></script>
<script src="/mixed/lib/wanakana.min.js"></script>
<script src="/bg/js/templates.js"></script>
- <script src="/bg/js/gecko.js"></script>
<script src="/bg/js/util.js"></script>
<script src="/bg/js/anki-connect.js"></script>
<script src="/bg/js/anki-null.js"></script>
diff --git a/ext/bg/js/options.js b/ext/bg/js/options.js
index 565ccd41..f06cc056 100644
--- a/ext/bg/js/options.js
+++ b/ext/bg/js/options.js
@@ -189,7 +189,7 @@ function onDictionaryPurge(e) {
options.dictionaries = {};
return optionsSave(options).then(() => {
populateDictionaries(options);
- instYomi().setOptions(options);
+ instYomi().optionsSet(options);
});
});
}
@@ -208,7 +208,7 @@ function onDictionaryImport() {
optionsLoad().then(options => {
instDb().importDictionary(dictUrl.val(), (total, current) => setProgress(current / total * 100.0)).then(summary => {
options.dictionaries[summary.title] = {enabled: true, priority: 0};
- return optionsSave(options).then(() => instYomi().setOptions(options));
+ return optionsSave(options).then(() => instYomi().optionsSet(options));
}).then(() => populateDictionaries(options)).catch(showDictionaryError).then(() => {
showDictionarySpinner(false);
dictProgress.hide();
@@ -339,7 +339,7 @@ function onAnkiModelChanged(e) {
optionsNew.anki[tabId].fields = {};
populateAnkiFields(element, optionsNew).then(() => {
- optionsSave(optionsNew).then(() => instYomi().setOptions(optionsNew));
+ optionsSave(optionsNew).then(() => instYomi().optionsSet(optionsNew));
}).catch(showAnkiError).then(() => showAnkiSpinner(false));
});
}
@@ -351,7 +351,7 @@ function onOptionsChanged(e) {
getFormData().then(({optionsNew, optionsOld}) => {
return optionsSave(optionsNew).then(() => {
- instYomi().setOptions(optionsNew);
+ instYomi().optionsSet(optionsNew);
updateVisibility(optionsNew);
const ankiUpdated =
diff --git a/ext/bg/js/popup.js b/ext/bg/js/popup.js
index 0d1fb04e..37a76832 100644
--- a/ext/bg/js/popup.js
+++ b/ext/bg/js/popup.js
@@ -28,7 +28,7 @@ $(document).ready(() => {
toggle.bootstrapToggle();
toggle.change(() => {
options.general.enable = toggle.prop('checked');
- optionsSave(options).then(() => instYomi().setOptions(options));
+ optionsSave(options).then(() => instYomi().optionsSet(options));
});
});
});
diff --git a/ext/bg/js/yomichan.js b/ext/bg/js/yomichan.js
index f7bec615..37fe74ee 100644
--- a/ext/bg/js/yomichan.js
+++ b/ext/bg/js/yomichan.js
@@ -32,27 +32,10 @@ window.yomichan = new class {
chrome.runtime.onInstalled.addListener(this.onInstalled.bind(this));
}
- this.translator.prepare().then(optionsLoad).then(this.setOptions.bind(this));
+ this.translator.prepare().then(optionsLoad).then(this.optionsSet.bind(this));
}
- onInstalled(details) {
- if (details.reason === 'install') {
- chrome.tabs.create({url: chrome.extension.getURL('bg/guide.html')});
- }
- }
-
- onMessage(request, sender, callback) {
- const {action, params} = request, method = this['api_' + action];
-
- if (typeof(method) === 'function') {
- params.callback = callback;
- method.call(this, params);
- }
-
- return true;
- }
-
- setOptions(options) {
+ optionsSet(options) {
this.options = options;
let usable = false;
@@ -72,7 +55,7 @@ window.yomichan = new class {
this.anki = new AnkiNull();
}
- this.tabInvokeAll('setOptions', this.options);
+ this.tabInvokeAll('optionsSet', this.options);
}
tabInvokeAll(action, params) {
@@ -83,7 +66,7 @@ window.yomichan = new class {
});
}
- formatNote(definition, mode) {
+ noteFormat(definition, mode) {
const note = {fields: {}, tags: this.options.anki.tags};
let fields = [];
@@ -145,7 +128,7 @@ window.yomichan = new class {
}
definitionAdd(definition, mode) {
- const note = this.formatNote(definition, mode);
+ const note = this.noteFormat(definition, mode);
return this.anki.addNote(note);
}
@@ -153,7 +136,7 @@ window.yomichan = new class {
const notes = [];
for (const definition of definitions) {
for (const mode of modes) {
- notes.push(this.formatNote(definition, mode));
+ notes.push(this.noteFormat(definition, mode));
}
}
@@ -176,27 +159,45 @@ window.yomichan = new class {
return Promise.resolve(Handlebars.templates[template](data));
}
- api_optionsGet({callback}) {
- promiseCallback(optionsLoad(), callback);
+ onInstalled(details) {
+ if (details.reason === 'install') {
+ chrome.tabs.create({url: chrome.extension.getURL('bg/guide.html')});
+ }
}
- api_kanjiFind({text, callback}) {
- promiseCallback(this.kanjiFind(text), callback);
- }
+ onMessage(request, sender, callback) {
+ const handlers = new class {
+ api_optionsGet({callback}) {
+ promiseCallback(optionsLoad(), callback);
+ }
- api_termsFind({text, callback}) {
- promiseCallback(this.termsFind(text), callback);
- }
+ api_kanjiFind({text, callback}) {
+ promiseCallback(this.kanjiFind(text), callback);
+ }
- api_textRender({template, data, callback}) {
- promiseCallback(this.textRender(template, data), callback);
- }
+ api_termsFind({text, callback}) {
+ promiseCallback(this.termsFind(text), callback);
+ }
- api_definitionAdd({definition, mode, callback}) {
- promiseCallback(this.definitionAdd(definition, mode), callback);
- }
+ api_textRender({template, data, callback}) {
+ promiseCallback(this.textRender(template, data), callback);
+ }
- api_definitionsAddable({definitions, modes, callback}) {
- promiseCallback(this.definitionsAddable(definitions, modes), callback);
+ api_definitionAdd({definition, mode, callback}) {
+ promiseCallback(this.definitionAdd(definition, mode), callback);
+ }
+
+ api_definitionsAddable({definitions, modes, callback}) {
+ promiseCallback(this.definitionsAddable(definitions, modes), callback);
+ }
+ };
+
+ const {action, params} = request, method = handlers[`api_${action}`];
+ if (typeof(method) === 'function') {
+ params.callback = callback;
+ method.call(this, params);
+ }
+
+ return true;
}
};
diff --git a/ext/fg/js/display-frame.js b/ext/fg/js/display-frame.js
index 16435a27..56b56861 100644
--- a/ext/fg/js/display-frame.js
+++ b/ext/fg/js/display-frame.js
@@ -41,31 +41,37 @@ window.displayFrame = new class extends Display {
handleError(error) {
if (window.orphaned) {
- this.api_showOrphaned();
+ this.showOrphaned();
} else {
errorShow(error);
}
}
- onMessage(e) {
- const {action, params} = e.originalEvent.data, method = this['api_' + action];
- if (typeof(method) === 'function') {
- method.call(this, params);
- }
+ showOrphaned() {
+ $('#content').hide();
+ $('#orphan').show();
}
- api_showTermDefs({definitions, options, context}) {
- window.scrollTo(0, 0);
- super.showTermDefs(definitions, options, context);
- }
+ onMessage(e) {
+ const handlers = new class {
+ api_showTermDefs({definitions, options, context}) {
+ window.scrollTo(0, 0);
+ this.showTermDefs(definitions, options, context);
+ }
- api_showKanjiDefs({definitions, options, context}) {
- window.scrollTo(0, 0);
- super.showKanjiDefs(defintions, options, context);
- }
+ api_showKanjiDefs({definitions, options, context}) {
+ window.scrollTo(0, 0);
+ this.showKanjiDefs(defintions, options, context);
+ }
- api_showOrphaned() {
- $('#content').hide();
- $('#orphan').show();
+ api_showOrphaned() {
+ this.showOrphaned();
+ }
+ };
+
+ const {action, params} = e.originalEvent.data, method = handlers[`api_${action}`];
+ if (typeof(method) === 'function') {
+ method.call(this, params);
+ }
}
};
diff --git a/ext/fg/js/driver.js b/ext/fg/js/driver.js
index 73ddd84f..2cbe3e08 100644
--- a/ext/fg/js/driver.js
+++ b/ext/fg/js/driver.js
@@ -102,7 +102,13 @@ class Driver {
}
onBgMessage({action, params}, sender, callback) {
- const method = this['api_' + action];
+ const handlers = new class {
+ api_optionsSet(options) {
+ this.options = options;
+ }
+ };
+
+ const method = handlers[`api_${action}`];
if (typeof(method) === 'function') {
method.call(this, params);
}
@@ -205,10 +211,6 @@ class Driver {
errorShow(error);
}
}
-
- api_setOptions(options) {
- this.options = options;
- }
}
window.driver = new Driver();
diff --git a/ext/mixed/js/display.js b/ext/mixed/js/display.js
index 26d50862..c2382d43 100644
--- a/ext/mixed/js/display.js
+++ b/ext/mixed/js/display.js
@@ -67,13 +67,13 @@ class Display {
this.textRender('terms.html', params).then(content => {
this.container.html(content);
$('.action-add-note').click(this.onActionAddNote.bind(this));
- $('.kanji-link').click(this.onKanjiSearch.bind(this));
$('.action-play-audio').click(this.onActionPlayAudio.bind(this));
+ $('.kanji-link').click(e => this.onKanjiSearch(e, options));
return this.adderButtonsUpdate(['term_kanji', 'term_kana'], sequence);
}).catch(this.handleError.bind(this));
}
- showKanjiDefs({definitions, options, context}) {
+ showKanjiDefs(definitions, options, context) {
const sequence = ++this.sequence;
const params = {
definitions,
@@ -122,11 +122,11 @@ class Display {
});
}
- onKanjiSearch(e) {
+ onKanjiSearch(e, options) {
e.preventDefault();
const character = $(e.target).text();
this.kanjiFind(character).then(definitions => {
- this.api_showKanjiDefs({definitions, options, context});
+ this.showKanjiDefs(definitions, options, context);
}).catch(this.handleError.bind(this));
}