diff options
author | Marius David Wieschollek <passwords.public@mdns.eu> | 2021-01-10 13:26:04 +0300 |
---|---|---|
committer | Marius David Wieschollek <passwords.public@mdns.eu> | 2021-01-10 13:26:04 +0300 |
commit | c948cc84fa935b5471f6c121eb852a4c458c8945 (patch) | |
tree | 97a4b4c1d24249fbf5472a737a24be28fdd11d18 | |
parent | 595227da8d7963c85bb1e5c9fc2b75b9db552749 (diff) |
Fix settings issues when default server changes
Signed-off-by: Marius David Wieschollek <passwords.public@mdns.eu>
-rw-r--r-- | src/js/Services/SettingsService.js | 27 | ||||
-rw-r--r-- | src/js/Settings/MasterSettingsProvider.js | 6 |
2 files changed, 25 insertions, 8 deletions
diff --git a/src/js/Services/SettingsService.js b/src/js/Services/SettingsService.js index f98f516..f3ca90f 100644 --- a/src/js/Services/SettingsService.js +++ b/src/js/Services/SettingsService.js @@ -1,5 +1,6 @@ import Setting from '@js/Models/Setting/Setting'; -import InvalidScopeError from "passwords-client/src/Exception/InvalidScopeError"; +import SystemService from "@js/Services/SystemService"; +import ErrorManager from "@js/Manager/ErrorManager"; class SettingsService { @@ -26,7 +27,7 @@ class SettingsService { return this._settings[name]; } - let data = await this._backend.get(name), + let data = await this._backend.get(name), setting = new Setting(name, data.value, data.scope); this._settings[name] = setting; @@ -62,6 +63,11 @@ class SettingsService { if(this._settings.hasOwnProperty(name)) { this._settings[name].setValue(value); } + + if(name === 'server.default' && SystemService.getArea() === SystemService.AREA_BACKGROUND) { + this._reloadSettings() + .catch(ErrorManager.catchEvt); + } } /** @@ -79,8 +85,25 @@ class SettingsService { this._settings[name].setValue(value); } + if(name === 'server.default' && SystemService.getArea() === SystemService.AREA_BACKGROUND) { + this._reloadSettings() + .catch(ErrorManager.catchEvt); + } + return isSetting ? setting:value; } + + /** + * @return {Promise<void>} + * @private + */ + async _reloadSettings() { + for(let name in this._settings) { + if(!this._settings.hasOwnProperty(name)) continue; + let data = await this._backend.get(name); + this._settings[name].setValue(data.value); + } + } } export default new SettingsService();
\ No newline at end of file diff --git a/src/js/Settings/MasterSettingsProvider.js b/src/js/Settings/MasterSettingsProvider.js index 7aef6e7..45d3b5c 100644 --- a/src/js/Settings/MasterSettingsProvider.js +++ b/src/js/Settings/MasterSettingsProvider.js @@ -8,7 +8,6 @@ class MasterSettingsProvider { constructor() { this.browserScopes = [Setting.SCOPE_LOCAL, Setting.SCOPE_SYNC]; this.serverScopes = [Setting.SCOPE_USER, Setting.SCOPE_SERVER, Setting.SCOPE_CLIENT]; - this._serverSettings = {}; this._mapping = { 'server.default' : [ @@ -283,16 +282,11 @@ class MasterSettingsProvider { * @private */ async _getServerSetting(key) { - if(this._serverSettings.hasOwnProperty(key)) { - return this._serverSettings[key]; - } - let repository = await this._getSettingsRepository(); if(!repository) return null; let settings = /** @type {SettingCollection} **/ await repository.findByName(key); if(settings.length === 0) return null; - this._serverSettings[key] = settings.get(0); return settings.get(0); } |