From e6a1bcc0f58a4e9271149ec75d77f4072f357989 Mon Sep 17 00:00:00 2001 From: toasted-nutbread Date: Wed, 14 Oct 2020 19:38:50 -0400 Subject: [PATCH] Ensure settings exist for all installed dictionaries (#922) --- ext/bg/js/settings/dictionary-controller.js | 29 +++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/ext/bg/js/settings/dictionary-controller.js b/ext/bg/js/settings/dictionary-controller.js index 3db16979..2ff12ab9 100644 --- a/ext/bg/js/settings/dictionary-controller.js +++ b/ext/bg/js/settings/dictionary-controller.js @@ -196,6 +196,7 @@ class DictionaryController { } this._dictionaryEntries = []; + await this._ensureDictionarySettings(dictionaries); for (const dictionary of dictionaries) { this._createDictionaryEntry(dictionary); } @@ -393,4 +394,32 @@ class DictionaryController { } await this._settingsController.modifyGlobalSettings(targets); } + + async _ensureDictionarySettings(dictionaries2) { + const optionsFull = await this._settingsController.getOptionsFull(); + const {profiles} = optionsFull; + const targets = []; + for (const {title} of dictionaries2) { + for (let i = 0, ii = profiles.length; i < ii; ++i) { + const {options: {dictionaries: dictionaryOptions}} = profiles[i]; + if (Object.prototype.hasOwnProperty.call(dictionaryOptions, title)) { continue; } + + const path = ObjectPropertyAccessor.getPathString(['profiles', i, 'options', 'dictionaries', title]); + targets.push({ + action: 'set', + path, + value: { + enabled: false, + allowSecondarySearches: false, + priority: 0 + } + }); + } + } + + if (targets.length > 0) { + const r = await this._settingsController.modifyGlobalSettings(targets); + console.log(r); + } + } }