Don't store invalid keys in localStorage

This commit is contained in:
redphx 2025-01-28 14:54:57 +07:00
parent d638700e03
commit d281db5767
3 changed files with 18 additions and 2 deletions

View File

@ -1102,8 +1102,13 @@ this.definitions = definitions, this._settings = null;
get settings() {
if (this._settings) return this._settings;
let settings = JSON.parse(this.storage.getItem(this.storageKey) || "{}");
for (let key in settings)
for (let key in settings) {
if (!this.definitions.hasOwnProperty(key)) {
delete settings[key];
continue;
}
settings[key] = this.validateValue("get", key, settings[key]);
}
return this._settings = settings, settings;
}
getDefinition(key) {

View File

@ -1174,8 +1174,13 @@ this.definitions = definitions, this._settings = null;
get settings() {
if (this._settings) return this._settings;
let settings = JSON.parse(this.storage.getItem(this.storageKey) || "{}");
for (let key in settings)
for (let key in settings) {
if (!this.definitions.hasOwnProperty(key)) {
delete settings[key];
continue;
}
settings[key] = this.validateValue("get", key, settings[key]);
}
return this._settings = settings, settings;
}
getDefinition(key) {

View File

@ -44,6 +44,12 @@ export class BaseSettingsStorage<T extends AnyPref> {
// Validate setting values
for (const key in settings) {
// Don't store invalid keys
if (!this.definitions.hasOwnProperty(key)) {
delete settings[key];
continue;
}
settings[key] = this.validateValue('get', key as T, settings[key]);
}