diff options
author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2019-11-12 20:13:25 -0500 |
---|---|---|
committer | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2019-11-12 20:13:25 -0500 |
commit | db4a30336595eca94e976b6279c1e8c79df85906 (patch) | |
tree | 496d022485b9b342ea3d0627092089c1dbc5d4c8 /ext/bg/js/settings-dictionaries.js | |
parent | 72e7a42c8d39e1c1b9c2c7119d1cf4e245e77317 (diff) |
Fix dictionary settings not using the current profile
Diffstat (limited to 'ext/bg/js/settings-dictionaries.js')
-rw-r--r-- | ext/bg/js/settings-dictionaries.js | 36 |
1 files changed, 26 insertions, 10 deletions
diff --git a/ext/bg/js/settings-dictionaries.js b/ext/bg/js/settings-dictionaries.js index cb6ae348..ebd380ac 100644 --- a/ext/bg/js/settings-dictionaries.js +++ b/ext/bg/js/settings-dictionaries.js @@ -21,28 +21,40 @@ let dictionaryUI = null; class SettingsDictionaryListUI { - constructor(container, template, extraContainer, extraTemplate, optionsDictionaries) { + constructor(container, template, extraContainer, extraTemplate) { this.container = container; this.template = template; this.extraContainer = extraContainer; this.extraTemplate = extraTemplate; - this.optionsDictionaries = optionsDictionaries; - + this.optionsDictionaries = null; + this.dictionaries = null; this.dictionaryEntries = []; this.extra = null; document.querySelector('#dict-delete-confirm').addEventListener('click', (e) => this.onDictionaryConfirmDelete(e), false); } + setOptionsDictionaries(optionsDictionaries) { + this.optionsDictionaries = optionsDictionaries; + if (this.dictionaries !== null) { + this.setDictionaries(this.dictionaries); + } + } + setDictionaries(dictionaries) { for (const dictionaryEntry of this.dictionaryEntries) { dictionaryEntry.cleanup(); } this.dictionaryEntries = []; + this.dictionaries = toIterable(dictionaries); + + if (this.optionsDictionaries === null) { + return; + } let changed = false; - for (const dictionaryInfo of toIterable(dictionaries)) { + for (const dictionaryInfo of this.dictionaries) { if (this.createEntry(dictionaryInfo)) { changed = true; } @@ -52,7 +64,7 @@ class SettingsDictionaryListUI { const titles = this.dictionaryEntries.map(e => e.dictionaryInfo.title); const removeKeys = Object.keys(this.optionsDictionaries).filter(key => titles.indexOf(key) < 0); - if (removeKeys.length >= 0) { + if (removeKeys.length > 0) { for (const key of toIterable(removeKeys)) { delete this.optionsDictionaries[key]; } @@ -331,15 +343,11 @@ class SettingsDictionaryExtraUI { async function dictSettingsInitialize() { - const optionsContext = getOptionsContext(); - const options = await apiOptionsGet(optionsContext); - dictionaryUI = new SettingsDictionaryListUI( document.querySelector('#dict-groups'), document.querySelector('#dict-template'), document.querySelector('#dict-groups-extra'), - document.querySelector('#dict-extra-template'), - options.dictionaries + document.querySelector('#dict-extra-template') ); dictionaryUI.save = () => settingsSaveOptions(); @@ -349,9 +357,17 @@ async function dictSettingsInitialize() { document.querySelector('#dict-file').addEventListener('change', (e) => onDictionaryImport(e), false); document.querySelector('#dict-main').addEventListener('change', (e) => onDictionaryMainChanged(e), false); + const optionsContext = getOptionsContext(); + const options = await apiOptionsGet(optionsContext); + onDictionaryOptionsChanged(options); onDatabaseUpdated(options); } +async function onDictionaryOptionsChanged(options) { + if (dictionaryUI === null) { return; } + dictionaryUI.setOptionsDictionaries(options.dictionaries); +} + async function onDatabaseUpdated(options) { try { const dictionaries = await utilDatabaseGetDictionaryInfo(); |