Move optionsUpdate message handler into Yomichan class

This commit is contained in:
toasted-nutbread 2019-12-20 13:36:54 -05:00
parent e14bd75a4f
commit 2a95f1420f
4 changed files with 12 additions and 26 deletions

View File

@ -204,14 +204,6 @@ async function onOptionsUpdate({source}) {
await formWrite(options); await formWrite(options);
} }
function onMessage({action, params}) {
switch (action) {
case 'optionsUpdate':
onOptionsUpdate(params);
break;
}
}
function showExtensionInformation() { function showExtensionInformation() {
const node = document.getElementById('extension-info'); const node = document.getElementById('extension-info');
@ -235,7 +227,7 @@ async function onReady() {
storageInfoInitialize(); storageInfoInitialize();
chrome.runtime.onMessage.addListener(onMessage); yomichan.on('optionsUpdate', onOptionsUpdate);
} }
$(document).ready(() => onReady()); $(document).ready(() => onReady());

View File

@ -54,6 +54,7 @@ class Frontend extends TextScanner {
try { try {
await this.updateOptions(); await this.updateOptions();
yomichan.on('optionsUpdate', () => this.updateOptions());
chrome.runtime.onMessage.addListener(this.onRuntimeMessage.bind(this)); chrome.runtime.onMessage.addListener(this.onRuntimeMessage.bind(this));
this.isPreparedPromiseResolve(); this.isPreparedPromiseResolve();
} catch (e) { } catch (e) {
@ -200,6 +201,5 @@ Frontend._windowMessageHandlers = new Map([
]); ]);
Frontend._runtimeMessageHandlers = new Map([ Frontend._runtimeMessageHandlers = new Map([
['optionsUpdate', (self) => { self.updateOptions(); }],
['popupSetVisibleOverride', (self, {visible}) => { self.popup.setVisibleOverride(visible); }] ['popupSetVisibleOverride', (self, {visible}) => { self.popup.setVisibleOverride(visible); }]
]); ]);

View File

@ -232,10 +232,13 @@ class EventDispatcher {
*/ */
const yomichan = (() => { const yomichan = (() => {
class Yomichan { class Yomichan extends EventDispatcher {
constructor() { constructor() {
super();
this._messageHandlers = new Map([ this._messageHandlers = new Map([
['getUrl', this._onMessageGetUrl.bind(this)] ['getUrl', this._onMessageGetUrl.bind(this)],
['optionsUpdate', this._onMessageOptionsUpdate.bind(this)]
]); ]);
chrome.runtime.onMessage.addListener(this._onMessage.bind(this)); chrome.runtime.onMessage.addListener(this._onMessage.bind(this));
@ -253,6 +256,10 @@ const yomichan = (() => {
_onMessageGetUrl() { _onMessageGetUrl() {
return {url: window.location.href}; return {url: window.location.href};
} }
_onMessageOptionsUpdate({source}) {
this.trigger('optionsUpdate', {source});
}
} }
return new Yomichan(); return new Yomichan();

View File

@ -225,15 +225,6 @@ class Display {
} }
} }
onRuntimeMessage({action, params}, sender, callback) {
const handler = Display._runtimeMessageHandlers.get(action);
if (typeof handler !== 'function') { return false; }
const result = handler(this, params, sender);
callback(result);
return false;
}
getOptionsContext() { getOptionsContext() {
throw new Error('Override me'); throw new Error('Override me');
} }
@ -244,7 +235,7 @@ class Display {
async initialize(options=null) { async initialize(options=null) {
await this.updateOptions(options); await this.updateOptions(options);
chrome.runtime.onMessage.addListener(this.onRuntimeMessage.bind(this)); yomichan.on('optionsUpdate', () => this.updateOptions(null));
} }
async updateOptions(options) { async updateOptions(options) {
@ -878,7 +869,3 @@ Display._onKeyDownHandlers = new Map([
return false; return false;
}] }]
]); ]);
Display._runtimeMessageHandlers = new Map([
['optionsUpdate', (self) => self.updateOptions(null)]
]);