summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/bg/js/settings/main.js10
-rw-r--r--ext/fg/js/frontend.js2
-rw-r--r--ext/mixed/js/core.js11
-rw-r--r--ext/mixed/js/display.js15
4 files changed, 12 insertions, 26 deletions
diff --git a/ext/bg/js/settings/main.js b/ext/bg/js/settings/main.js
index 78a5870c..870769e5 100644
--- a/ext/bg/js/settings/main.js
+++ b/ext/bg/js/settings/main.js
@@ -204,14 +204,6 @@ async function onOptionsUpdate({source}) {
await formWrite(options);
}
-function onMessage({action, params}) {
- switch (action) {
- case 'optionsUpdate':
- onOptionsUpdate(params);
- break;
- }
-}
-
function showExtensionInformation() {
const node = document.getElementById('extension-info');
@@ -235,7 +227,7 @@ async function onReady() {
storageInfoInitialize();
- chrome.runtime.onMessage.addListener(onMessage);
+ yomichan.on('optionsUpdate', onOptionsUpdate);
}
$(document).ready(() => onReady());
diff --git a/ext/fg/js/frontend.js b/ext/fg/js/frontend.js
index c8e112a7..1d63d928 100644
--- a/ext/fg/js/frontend.js
+++ b/ext/fg/js/frontend.js
@@ -54,6 +54,7 @@ class Frontend extends TextScanner {
try {
await this.updateOptions();
+ yomichan.on('optionsUpdate', () => this.updateOptions());
chrome.runtime.onMessage.addListener(this.onRuntimeMessage.bind(this));
this.isPreparedPromiseResolve();
} catch (e) {
@@ -200,6 +201,5 @@ Frontend._windowMessageHandlers = new Map([
]);
Frontend._runtimeMessageHandlers = new Map([
- ['optionsUpdate', (self) => { self.updateOptions(); }],
['popupSetVisibleOverride', (self, {visible}) => { self.popup.setVisibleOverride(visible); }]
]);
diff --git a/ext/mixed/js/core.js b/ext/mixed/js/core.js
index edb1f913..a3c8c0b0 100644
--- a/ext/mixed/js/core.js
+++ b/ext/mixed/js/core.js
@@ -232,10 +232,13 @@ class EventDispatcher {
*/
const yomichan = (() => {
- class Yomichan {
+ class Yomichan extends EventDispatcher {
constructor() {
+ super();
+
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));
@@ -253,6 +256,10 @@ const yomichan = (() => {
_onMessageGetUrl() {
return {url: window.location.href};
}
+
+ _onMessageOptionsUpdate({source}) {
+ this.trigger('optionsUpdate', {source});
+ }
}
return new Yomichan();
diff --git a/ext/mixed/js/display.js b/ext/mixed/js/display.js
index f3b5dd2a..089941a9 100644
--- a/ext/mixed/js/display.js
+++ b/ext/mixed/js/display.js
@@ -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() {
throw new Error('Override me');
}
@@ -244,7 +235,7 @@ class Display {
async initialize(options=null) {
await this.updateOptions(options);
- chrome.runtime.onMessage.addListener(this.onRuntimeMessage.bind(this));
+ yomichan.on('optionsUpdate', () => this.updateOptions(null));
}
async updateOptions(options) {
@@ -878,7 +869,3 @@ Display._onKeyDownHandlers = new Map([
return false;
}]
]);
-
-Display._runtimeMessageHandlers = new Map([
- ['optionsUpdate', (self) => self.updateOptions(null)]
-]);