diff options
author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2020-07-18 17:11:38 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-18 17:11:38 -0400 |
commit | d7f78c23b50218eaa52ab4570a1e2297c52c287e (patch) | |
tree | 64a217ccc1f96efeec3c81e1d16215963536c733 /ext/bg | |
parent | e696dc84a857e60adcfa7feec44398765c430cac (diff) |
Script ready state change (#672)
* Update how backend/frontend ready states are awaited and signaled
* Log errors on the search page
* Update action name
Diffstat (limited to 'ext/bg')
-rw-r--r-- | ext/bg/js/backend.js | 12 | ||||
-rw-r--r-- | ext/bg/js/context-main.js | 4 | ||||
-rw-r--r-- | ext/bg/js/search-main.js | 4 | ||||
-rw-r--r-- | ext/bg/js/settings/main.js | 62 |
4 files changed, 46 insertions, 36 deletions
diff --git a/ext/bg/js/backend.js b/ext/bg/js/backend.js index 301fe135..854c64d6 100644 --- a/ext/bg/js/backend.js +++ b/ext/bg/js/backend.js @@ -85,7 +85,7 @@ class Backend { this._logErrorLevel = null; this._messageHandlers = new Map([ - ['yomichanCoreReady', {async: false, contentScript: true, handler: this._onApiYomichanCoreReady.bind(this)}], + ['requestBackendReadySignal', {async: false, contentScript: true, handler: this._onApiRequestBackendReadySignal.bind(this)}], ['optionsSchemaGet', {async: false, contentScript: true, handler: this._onApiOptionsSchemaGet.bind(this)}], ['optionsGet', {async: false, contentScript: true, handler: this._onApiOptionsGet.bind(this)}], ['optionsGetFull', {async: false, contentScript: true, handler: this._onApiOptionsGetFull.bind(this)}], @@ -212,9 +212,9 @@ class Backend { this._clipboardMonitor.on('change', this._onClipboardTextChange.bind(this)); - this._sendMessageAllTabs('backendPrepared'); + this._sendMessageAllTabs('backendReady'); const callback = () => this._checkLastError(chrome.runtime.lastError); - chrome.runtime.sendMessage({action: 'backendPrepared'}, callback); + chrome.runtime.sendMessage({action: 'backendReady'}, callback); } catch (e) { yomichan.logError(e); throw e; @@ -361,10 +361,10 @@ class Backend { // Message handlers - _onApiYomichanCoreReady(_params, sender) { + _onApiRequestBackendReadySignal(_params, sender) { // tab ID isn't set in background (e.g. browser_action) const callback = () => this._checkLastError(chrome.runtime.lastError); - const data = {action: 'backendPrepared'}; + const data = {action: 'backendReady'}; if (typeof sender.tab === 'undefined') { chrome.runtime.sendMessage(data, callback); return false; @@ -1393,7 +1393,7 @@ class Backend { sender.tab.id !== tabId || sender.frameId !== frameId || !isObject(message) || - message.action !== 'yomichanCoreReady' + message.action !== 'yomichanReady' ) { return; } diff --git a/ext/bg/js/context-main.js b/ext/bg/js/context-main.js index 6d17dbf7..14013d3f 100644 --- a/ext/bg/js/context-main.js +++ b/ext/bg/js/context-main.js @@ -76,7 +76,7 @@ async function setupOptions() { (async () => { api.forwardLogsToBackend(); - await yomichan.ready(); + await yomichan.backendReady(); const manifest = chrome.runtime.getManifest(); @@ -87,4 +87,6 @@ async function setupOptions() { setupButtonEvents('.action-open-search', 'search', chrome.runtime.getURL('/bg/search.html')); setupButtonEvents('.action-open-options', 'options', chrome.runtime.getURL(manifest.options_ui.page)); setupButtonEvents('.action-open-help', 'help', 'https://foosoft.net/projects/yomichan/'); + + yomichan.ready(); })(); diff --git a/ext/bg/js/search-main.js b/ext/bg/js/search-main.js index bbe6c343..cf9282fd 100644 --- a/ext/bg/js/search-main.js +++ b/ext/bg/js/search-main.js @@ -23,10 +23,12 @@ (async () => { try { api.forwardLogsToBackend(); - await yomichan.ready(); + await yomichan.backendReady(); const displaySearch = new DisplaySearch(); await displaySearch.prepare(); + + yomichan.ready(); } catch (e) { yomichan.logError(e); } diff --git a/ext/bg/js/settings/main.js b/ext/bg/js/settings/main.js index 48b72735..db371d37 100644 --- a/ext/bg/js/settings/main.js +++ b/ext/bg/js/settings/main.js @@ -63,45 +63,51 @@ async function setupEnvironmentInfo() { (async () => { - api.forwardLogsToBackend(); - await yomichan.ready(); + try { + api.forwardLogsToBackend(); + await yomichan.backendReady(); - setupEnvironmentInfo(); - showExtensionInformation(); - settingsPopulateModifierKeys(); + setupEnvironmentInfo(); + showExtensionInformation(); + settingsPopulateModifierKeys(); - const optionsFull = await api.optionsGetFull(); + const optionsFull = await api.optionsGetFull(); - const settingsController = new SettingsController(optionsFull.profileCurrent); - settingsController.prepare(); + const settingsController = new SettingsController(optionsFull.profileCurrent); + settingsController.prepare(); - const storageController = new StorageController(); - storageController.prepare(); + const storageController = new StorageController(); + storageController.prepare(); - const genericSettingController = new GenericSettingController(settingsController); - genericSettingController.prepare(); + const genericSettingController = new GenericSettingController(settingsController); + genericSettingController.prepare(); - const clipboardPopupsController = new ClipboardPopupsController(settingsController); - clipboardPopupsController.prepare(); + const clipboardPopupsController = new ClipboardPopupsController(settingsController); + clipboardPopupsController.prepare(); - const popupPreviewController = new PopupPreviewController(settingsController); - popupPreviewController.prepare(); + const popupPreviewController = new PopupPreviewController(settingsController); + popupPreviewController.prepare(); - const audioController = new AudioController(settingsController); - audioController.prepare(); + const audioController = new AudioController(settingsController); + audioController.prepare(); - const profileController = new ProfileController(settingsController); - profileController.prepare(); + const profileController = new ProfileController(settingsController); + profileController.prepare(); - const dictionaryController = new DictionaryController(settingsController, storageController); - dictionaryController.prepare(); + const dictionaryController = new DictionaryController(settingsController, storageController); + dictionaryController.prepare(); - const ankiController = new AnkiController(settingsController); - ankiController.prepare(); + const ankiController = new AnkiController(settingsController); + ankiController.prepare(); - const ankiTemplatesController = new AnkiTemplatesController(settingsController, ankiController); - ankiTemplatesController.prepare(); + const ankiTemplatesController = new AnkiTemplatesController(settingsController, ankiController); + ankiTemplatesController.prepare(); - const settingsBackup = new SettingsBackup(settingsController); - settingsBackup.prepare(); + const settingsBackup = new SettingsBackup(settingsController); + settingsBackup.prepare(); + + yomichan.ready(); + } catch (e) { + yomichan.logError(e); + } })(); |