diff options
author | Alex Yatskov <alex@foosoft.net> | 2017-03-04 17:56:10 -0800 |
---|---|---|
committer | Alex Yatskov <alex@foosoft.net> | 2017-03-04 17:56:10 -0800 |
commit | b039d300249087aee18c7e8565ae7447d2cf5b15 (patch) | |
tree | ba38dfd95b4005cb14953685dc12efc675bc8024 /ext/bg/js/yomichan.js | |
parent | c8eb77cfd9e30625ae33739b7de5a86f59d0457c (diff) |
wip
Diffstat (limited to 'ext/bg/js/yomichan.js')
-rw-r--r-- | ext/bg/js/yomichan.js | 64 |
1 files changed, 35 insertions, 29 deletions
diff --git a/ext/bg/js/yomichan.js b/ext/bg/js/yomichan.js index 898f2eea..f7bec615 100644 --- a/ext/bg/js/yomichan.js +++ b/ext/bg/js/yomichan.js @@ -17,7 +17,7 @@ */ -class Yomichan { +window.yomichan = new class { constructor() { Handlebars.partials = Handlebars.templates; Handlebars.registerHelper('kanjiLinks', helperKanjiLinks); @@ -28,7 +28,9 @@ class Yomichan { this.options = null; chrome.runtime.onMessage.addListener(this.onMessage.bind(this)); - chrome.runtime.onInstalled.addListener(this.onInstalled.bind(this)); + if (chrome.runtime.onInstalled) { + chrome.runtime.onInstalled.addListener(this.onInstalled.bind(this)); + } this.translator.prepare().then(optionsLoad).then(this.setOptions.bind(this)); } @@ -142,32 +144,12 @@ class Yomichan { }); } - textRender(template, data) { - return Handlebars.templates[template](data); - } - - api_optionsGet({callback}) { - promiseCallback(optionsLoad(), callback); - } - - api_kanjiFind({text, callback}) { - promiseCallback(this.kanjiFind(text), callback); - } - - api_termsFind({text, callback}) { - promiseCallback(this.termsFind(text), callback); - } - - api_textRender({template, data, callback}) { - callback({result: this.textRender(template, data)}); - } - - api_definitionAdd({definition, mode, callback}) { + definitionAdd(definition, mode) { const note = this.formatNote(definition, mode); - promiseCallback(this.anki.addNote(note), callback); + return this.anki.addNote(note); } - api_definitionsAddable({definitions, modes, callback}) { + definitionsAddable(definitions, modes) { const notes = []; for (const definition of definitions) { for (const mode of modes) { @@ -175,7 +157,7 @@ class Yomichan { } } - const promise = this.anki.canAddNotes(notes).then(raw => { + return this.anki.canAddNotes(notes).then(raw => { const states = []; for (let resultBase = 0; resultBase < raw.length; resultBase += modes.length) { const state = {}; @@ -188,9 +170,33 @@ class Yomichan { return states; }); + } - promiseCallback(promise, callback); + textRender(template, data) { + return Promise.resolve(Handlebars.templates[template](data)); + } + + api_optionsGet({callback}) { + promiseCallback(optionsLoad(), callback); } -} -window.yomichan = new Yomichan(); + api_kanjiFind({text, callback}) { + promiseCallback(this.kanjiFind(text), callback); + } + + api_termsFind({text, callback}) { + promiseCallback(this.termsFind(text), callback); + } + + api_textRender({template, data, callback}) { + promiseCallback(this.textRender(template, data), callback); + } + + api_definitionAdd({definition, mode, callback}) { + promiseCallback(this.definitionAdd(definition, mode), callback); + } + + api_definitionsAddable({definitions, modes, callback}) { + promiseCallback(this.definitionsAddable(definitions, modes), callback); + } +}; |