Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/marius-wieschollek/passwords-webextension.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarius David Wieschollek <passwords.public@mdns.eu>2021-01-10 13:26:04 +0300
committerMarius David Wieschollek <passwords.public@mdns.eu>2021-01-10 13:26:04 +0300
commitc948cc84fa935b5471f6c121eb852a4c458c8945 (patch)
tree97a4b4c1d24249fbf5472a737a24be28fdd11d18
parent595227da8d7963c85bb1e5c9fc2b75b9db552749 (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.js27
-rw-r--r--src/js/Settings/MasterSettingsProvider.js6
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);
}