diff options
Diffstat (limited to 'ext')
-rw-r--r-- | ext/bg/js/backend.js | 88 |
1 files changed, 44 insertions, 44 deletions
diff --git a/ext/bg/js/backend.js b/ext/bg/js/backend.js index d071a857..a268396d 100644 --- a/ext/bg/js/backend.js +++ b/ext/bg/js/backend.js @@ -201,9 +201,8 @@ class Backend { this._clipboardMonitor.on('change', this._onClipboardTextChange.bind(this)); - this._sendMessageAllTabs('backendReady'); - const callback = () => this._checkLastError(chrome.runtime.lastError); - chrome.runtime.sendMessage({action: 'backendReady'}, callback); + this._sendMessageAllTabsIgnoreResponse('backendReady', {}); + this._sendMessageIgnoreResponse({action: 'backendReady', params: {}}); } catch (e) { yomichan.logError(e); throw e; @@ -350,21 +349,19 @@ class Backend { } _onZoomChange({tabId, oldZoomFactor, newZoomFactor}) { - const callback = () => this._checkLastError(chrome.runtime.lastError); - chrome.tabs.sendMessage(tabId, {action: 'zoomChanged', params: {oldZoomFactor, newZoomFactor}}, callback); + this._sendMessageTabIgnoreResponse(tabId, {action: 'zoomChanged', params: {oldZoomFactor, newZoomFactor}}); } // Message handlers _onApiRequestBackendReadySignal(_params, sender) { // tab ID isn't set in background (e.g. browser_action) - const callback = () => this._checkLastError(chrome.runtime.lastError); - const data = {action: 'backendReady'}; + const data = {action: 'backendReady', params: {}}; if (typeof sender.tab === 'undefined') { - chrome.runtime.sendMessage(data, callback); + this._sendMessageIgnoreResponse(data); return false; } else { - chrome.tabs.sendMessage(sender.tab.id, data, callback); + this._sendMessageTabIgnoreResponse(sender.tab.id, data); return true; } } @@ -509,8 +506,7 @@ class Backend { const tabId = sender.tab.id; const frameId = sender.frameId; - const callback = () => this._checkLastError(chrome.runtime.lastError); - chrome.tabs.sendMessage(tabId, {action, params, frameId}, {frameId: targetFrameId}, callback); + this._sendMessageTabIgnoreResponse(tabId, {action, params, frameId}, {frameId: targetFrameId}); return true; } @@ -521,8 +517,7 @@ class Backend { const tabId = sender.tab.id; const frameId = sender.frameId; - const callback = () => this._checkLastError(chrome.runtime.lastError); - chrome.tabs.sendMessage(tabId, {action, params, frameId}, callback); + this._sendMessageTabIgnoreResponse(tabId, {action, params, frameId}); return true; } @@ -858,7 +853,7 @@ class Backend { const tab = tabs[0]; await this._waitUntilTabFrameIsReady(tab.id, 0, 2000); - await this._sendMessageTab( + await this._sendMessageTabPromise( tab.id, {action: 'setMode', params: {mode: 'popup'}}, {frameId: 0} @@ -869,22 +864,13 @@ class Backend { } _updateSearchQuery(tabId, text, animate) { - return this._sendMessageTab( + return this._sendMessageTabPromise( tabId, {action: 'updateSearchQuery', params: {text, animate}}, {frameId: 0} ); } - _sendMessageAllTabs(action, params={}) { - const callback = () => this._checkLastError(chrome.runtime.lastError); - chrome.tabs.query({}, (tabs) => { - for (const tab of tabs) { - chrome.tabs.sendMessage(tab.id, {action, params}, callback); - } - }); - } - _applyOptions(source) { const options = this.getOptions({current: true}); this._updateBadge(); @@ -904,7 +890,7 @@ class Backend { this._clipboardMonitor.stop(); } - this._sendMessageAllTabs('optionsUpdated', {source}); + this._sendMessageAllTabsIgnoreResponse('optionsUpdated', {source}); } _getProfile(optionsContext, useSchema=false) { @@ -1269,7 +1255,7 @@ class Backend { async _getTabUrl(tabId) { try { - const {url} = await this._sendMessageTab( + const {url} = await this._sendMessageTabPromise( tabId, {action: 'getUrl', params: {}}, {frameId: 0} @@ -1387,20 +1373,15 @@ class Backend { chrome.runtime.onMessage.addListener(onMessage); - chrome.tabs.sendMessage(tabId, {action: 'isReady'}, {frameId}, (response) => { - const error = chrome.runtime.lastError; - if (error) { return; } - - try { - const value = yomichan.getMessageResponseResult(response); - if (!value) { return; } - - cleanup(); - resolve(); - } catch (e) { - // NOP - } - }); + this._sendMessageTabPromise(tabId, {action: 'isReady'}, {frameId}) + .then( + (value) => { + if (!value) { return; } + cleanup(); + resolve(); + }, + () => {} // NOP + ); if (timeout !== null) { timer = setTimeout(() => { @@ -1427,7 +1408,26 @@ class Backend { return await (json ? response.json() : response.text()); } - _sendMessageTab(...args) { + _sendMessageIgnoreResponse(...args) { + const callback = () => this._checkLastError(chrome.runtime.lastError); + chrome.runtime.sendMessage(...args, callback); + } + + _sendMessageTabIgnoreResponse(...args) { + const callback = () => this._checkLastError(chrome.runtime.lastError); + chrome.tabs.sendMessage(...args, callback); + } + + _sendMessageAllTabsIgnoreResponse(action, params) { + const callback = () => this._checkLastError(chrome.runtime.lastError); + chrome.tabs.query({}, (tabs) => { + for (const tab of tabs) { + chrome.tabs.sendMessage(tab.id, {action, params}, callback); + } + }); + } + + _sendMessageTabPromise(...args) { return new Promise((resolve, reject) => { const callback = (response) => { try { @@ -1482,7 +1482,7 @@ class Backend { if (typeof tabId === 'number' && typeof ownerFrameId === 'number') { const action = 'setAllVisibleOverride'; const params = {value: false, priority: 0, awaitFrame: true}; - token = await this._sendMessageTab(tabId, {action, params}, {frameId: ownerFrameId}); + token = await this._sendMessageTabPromise(tabId, {action, params}, {frameId: ownerFrameId}); } return await new Promise((resolve, reject) => { @@ -1500,7 +1500,7 @@ class Backend { const action = 'clearAllVisibleOverride'; const params = {token}; try { - await this._sendMessageTab(tabId, {action, params}, {frameId: ownerFrameId}); + await this._sendMessageTabPromise(tabId, {action, params}, {frameId: ownerFrameId}); } catch (e) { // NOP } @@ -1651,7 +1651,7 @@ class Backend { _triggerDatabaseUpdated(type, cause) { this._translator.clearDatabaseCaches(); - this._sendMessageAllTabs('databaseUpdated', {type, cause}); + this._sendMessageAllTabsIgnoreResponse('databaseUpdated', {type, cause}); } async _saveOptions(source) { |