diff options
Diffstat (limited to 'ext/bg/js/api.js')
-rw-r--r-- | ext/bg/js/api.js | 102 |
1 files changed, 27 insertions, 75 deletions
diff --git a/ext/bg/js/api.js b/ext/bg/js/api.js index ac53a7a3..103d247c 100644 --- a/ext/bg/js/api.js +++ b/ext/bg/js/api.js @@ -21,81 +21,6 @@ * Helpers */ -function utilMessageDispatch({action, params}, sender, callback) { - const forward = (promise, callback) => { - return promise.then(result => { - callback({result}); - }).catch(error => { - callback({error}); - }); - }; - - const handlers = { - optionsGet: ({callback}) => { - forward(optionsLoad(), callback); - }, - - kanjiFind: ({text, callback}) => { - forward(apiKanjiFind(text), callback); - }, - - termsFind: ({text, callback}) => { - forward(apiTermsFind(text), callback); - }, - - templateRender: ({template, data, callback}) => { - forward(apiTemplateRender(template, data), callback); - }, - - definitionAdd: ({definition, mode, callback}) => { - forward(apiDefinitionAdd(definition, mode), callback); - }, - - definitionsAddable: ({definitions, modes, callback}) => { - forward(apiDefinitionsAddable(definitions, modes), callback); - }, - - noteView: ({noteId}) => { - forward(apiNoteView(noteId), callback); - } - }; - - const handler = handlers[action]; - if (handler) { - params.callback = callback; - handler(params); - } - - return true; -} - -function utilCommandDispatch(command) { - const handlers = { - search: () => { - chrome.tabs.create({url: chrome.extension.getURL('/bg/search.html')}); - }, - - help: () => { - chrome.tabs.create({url: 'https://foosoft.net/projects/yomichan/'}); - }, - - options: () => { - chrome.runtime.openOptionsPage(); - }, - - toggle: () => { - const options = chrome.extension.getBackgroundPage().yomichan.options; - options.general.enable = !options.general.enable; - optionsSave(options).then(() => apiOptionsSet(options)); - } - }; - - const handler = handlers[command]; - if (handler) { - handler(); - } -} - function utilNoteFormat(definition, mode) { const options = chrome.extension.getBackgroundPage().yomichan.options; const note = {fields: {}, tags: options.anki.tags}; @@ -142,6 +67,33 @@ function utilNoteFormat(definition, mode) { * API */ +async function apiCommandExec(command) { + const handlers = { + search: () => { + chrome.tabs.create({url: chrome.extension.getURL('/bg/search.html')}); + }, + + help: () => { + chrome.tabs.create({url: 'https://foosoft.net/projects/yomichan/'}); + }, + + options: () => { + chrome.runtime.openOptionsPage(); + }, + + toggle: () => { + const options = chrome.extension.getBackgroundPage().yomichan.options; + options.general.enable = !options.general.enable; + optionsSave(options).then(() => apiOptionsSet(options)); + } + }; + + const handler = handlers[command]; + if (handler) { + handler(); + } +} + async function apiOptionsSet(options) { // In Firefox, setting options from the options UI somehow carries references // to the DOM across to the background page, causing the options object to |