diff --git a/web/preferences.js b/web/preferences.js index 125007031..6e8b9b048 100644 --- a/web/preferences.js +++ b/web/preferences.js @@ -35,25 +35,16 @@ class BasePreferences { enumerable: true, configurable: false, }); - this.prefs = Object.assign(Object.create(null), this.defaults); + this.prefs = Object.create(null); this._initializedPromise = this._readFromStorage(this.defaults).then( prefs => { - if (!prefs) { - return; - } - for (const name in prefs) { - const defaultValue = this.defaults[name], - prefValue = prefs[name]; - // Ignore preferences not present in, or whose types don't match, - // the default values. - if ( - defaultValue === undefined || - typeof prefValue !== typeof defaultValue - ) { - continue; + for (const name in this.defaults) { + const prefValue = prefs?.[name]; + // Ignore preferences whose types don't match the default values. + if (typeof prefValue === typeof this.defaults[name]) { + this.prefs[name] = prefValue; } - this.prefs[name] = prefValue; } } ); @@ -86,7 +77,7 @@ class BasePreferences { */ async reset() { await this._initializedPromise; - this.prefs = Object.assign(Object.create(null), this.defaults); + this.prefs = Object.create(null); return this._writeToStorage(this.defaults); } @@ -114,8 +105,7 @@ class BasePreferences { value = value.toString(); } else { throw new Error( - `Set preference: "${value}" is a ${valueType}, ` + - `expected a ${defaultType}.` + `Set preference: "${value}" is a ${valueType}, expected a ${defaultType}.` ); } } else {