diff options
author | Alex Yatskov <alex@foosoft.net> | 2016-04-04 22:02:26 -0700 |
---|---|---|
committer | Alex Yatskov <alex@foosoft.net> | 2016-04-04 22:02:26 -0700 |
commit | 37ffcbf3ee2d9722751e899bdf4bac91ca7c92c1 (patch) | |
tree | ee2c320602cbf5bb846d2b2832375e8e4650f11e /ext/bg/yomichan.js | |
parent | e5a3904cf7a90519aaf7d7529179156eb4b28fdf (diff) |
File reorg
Diffstat (limited to 'ext/bg/yomichan.js')
-rw-r--r-- | ext/bg/yomichan.js | 83 |
1 files changed, 0 insertions, 83 deletions
diff --git a/ext/bg/yomichan.js b/ext/bg/yomichan.js deleted file mode 100644 index 2e4552a1..00000000 --- a/ext/bg/yomichan.js +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright (C) 2016 Alex Yatskov <alex@foosoft.net> - * Author: Alex Yatskov <alex@foosoft.net> - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - - -class Yomichan { - constructor() { - Handlebars.partials = Handlebars.templates; - - this.translator = new Translator(); - this.updateState('disabled'); - - chrome.runtime.onMessage.addListener(this.onMessage.bind(this)); - chrome.browserAction.onClicked.addListener(this.onBrowserAction.bind(this)); - } - - onMessage(request, sender, callback) { - const {action, data} = request; - const handler = { - findKanji: ({text}) => this.translator.onFindKanji(text), - findTerm: ({text}) => this.translator.findTerm(text), - getState: () => this.state, - renderTemplate: ({data, template}) => Handlebars.templates[template](data) - }[action]; - - if (handler !== null) { - const result = handler.call(this, data); - if (callback !== null) { - callback(result); - } - } - } - - onBrowserAction(tab) { - switch (this.state) { - case 'disabled': - this.updateState('loading'); - break; - case 'enabled': - this.updateState('disabled'); - break; - } - } - - updateState(state) { - this.state = state; - - switch (state) { - case 'disabled': - chrome.browserAction.setBadgeText({text: ''}); - break; - case 'enabled': - chrome.browserAction.setBadgeText({text: 'on'}); - break; - case 'loading': - chrome.browserAction.setBadgeText({text: '...'}); - this.translator.loadData(() => this.updateState('enabled')); - break; - } - - chrome.tabs.query({}, (tabs) => { - for (const tab of tabs) { - chrome.tabs.sendMessage(tab.id, this.state, () => null); - } - }); - } -} - -window.yomichan = new Yomichan(); |