From cb4499fd8ab0322fa3ab706adfb46caf21c57eec Mon Sep 17 00:00:00 2001 From: toasted-nutbread Date: Fri, 22 Dec 2023 20:23:51 -0500 Subject: Update offscreen to use invokeApiMapHandler (#427) * Update offscreen to use invokeApiMapHandler * Simplify init --- ext/js/background/offscreen.js | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) (limited to 'ext') diff --git a/ext/js/background/offscreen.js b/ext/js/background/offscreen.js index 1cab5929..7e3576ba 100644 --- a/ext/js/background/offscreen.js +++ b/ext/js/background/offscreen.js @@ -18,8 +18,7 @@ import * as wanakana from '../../lib/wanakana.js'; import {ClipboardReader} from '../comm/clipboard-reader.js'; -import {invokeMessageHandler} from '../core.js'; -import {createApiMap, getApiMapHandler} from '../core/api-map.js'; +import {createApiMap, invokeApiMapHandler} from '../core/api-map.js'; import {ArrayBufferUtil} from '../data/sandbox/array-buffer-util.js'; import {DictionaryDatabase} from '../language/dictionary-database.js'; import {JapaneseUtil} from '../language/sandbox/japanese-util.js'; @@ -53,8 +52,8 @@ export class Offscreen { /* eslint-disable no-multi-spaces */ - /** @type {import('offscreen').OffscreenApiMapInit} */ - const messageHandlersInit = [ + /** @type {import('offscreen').OffscreenApiMap} */ + this._apiMap = createApiMap([ ['clipboardGetTextOffscreen', this._getTextHandler.bind(this)], ['clipboardGetImageOffscreen', this._getImageHandler.bind(this)], ['clipboardSetBrowserOffscreen', this._setClipboardBrowser.bind(this)], @@ -67,10 +66,8 @@ export class Offscreen { ['findTermsOffscreen', this._findTermsHandler.bind(this)], ['getTermFrequenciesOffscreen', this._getTermFrequenciesHandler.bind(this)], ['clearDatabaseCachesOffscreen', this._clearDatabaseCachesHandler.bind(this)] - ]; - - /** @type {import('offscreen').OffscreenApiMap} */ - this._messageHandlers = createApiMap(messageHandlersInit); + ]); + /* eslint-enable no-multi-spaces */ /** @type {?Promise} */ this._prepareDatabasePromise = null; @@ -174,10 +171,8 @@ export class Offscreen { this._translator.clearDatabaseCaches(); } - /** @type {import('extension').ChromeRuntimeOnMessageCallback} */ - _onMessage({action, params}, sender, callback) { - const messageHandler = getApiMapHandler(this._messageHandlers, action); - if (typeof messageHandler === 'undefined') { return false; } - return invokeMessageHandler(messageHandler, params, callback, sender); + /** @type {import('extension').ChromeRuntimeOnMessageCallback} */ + _onMessage({action, params}, _sender, callback) { + return invokeApiMapHandler(this._apiMap, action, params, [], callback); } } -- cgit v1.2.3