diff options
Diffstat (limited to 'ext')
| -rw-r--r-- | ext/bg/js/api.js | 102 | ||||
| -rw-r--r-- | ext/bg/js/backend.js | 50 | ||||
| -rw-r--r-- | ext/bg/js/popup.js | 8 | 
3 files changed, 79 insertions, 81 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 diff --git a/ext/bg/js/backend.js b/ext/bg/js/backend.js index f7823047..2f60b4b7 100644 --- a/ext/bg/js/backend.js +++ b/ext/bg/js/backend.js @@ -26,8 +26,54 @@ window.yomichan = new class {          this.translator.prepare().then(optionsLoad).then(options => {              apiOptionsSet(options); -            chrome.commands.onCommand.addListener(utilCommandDispatch); -            chrome.runtime.onMessage.addListener(utilMessageDispatch); +            chrome.commands.onCommand.addListener(apiCommandExec); +            chrome.runtime.onMessage.addListener(({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; +            });              if (options.general.showGuide) {                  chrome.tabs.create({url: chrome.extension.getURL('/bg/guide.html')}); diff --git a/ext/bg/js/popup.js b/ext/bg/js/popup.js index 712839d9..77cb5166 100644 --- a/ext/bg/js/popup.js +++ b/ext/bg/js/popup.js @@ -18,14 +18,14 @@  $(document).ready(() => { -    $('#open-search').click(() => utilCommandDispatch('search')); -    $('#open-options').click(() => utilCommandDispatch('options')); -    $('#open-help').click(() => utilCommandDispatch('help')); +    $('#open-search').click(() => apiCommandExec('search')); +    $('#open-options').click(() => apiCommandExec('options')); +    $('#open-help').click(() => apiCommandExec('help'));      optionsLoad().then(options => {          const toggle = $('#enable-search');          toggle.prop('checked', options.general.enable).change();          toggle.bootstrapToggle(); -        toggle.change(() => utilCommandDispatch('toggle')); +        toggle.change(() => apiCommandExec('toggle'));      });  }); |