Migrate Stream settings in Global storage to Stream storage

This commit is contained in:
redphx 2025-01-28 19:22:48 +07:00
parent 91f9d76c57
commit 6e31caa4fc
4 changed files with 39 additions and 14 deletions

View File

@ -1174,13 +1174,8 @@ class BaseSettingsStorage {
get settings() {
if (this._settings) return this._settings;
let settings = JSON.parse(this.storage.getItem(this.storageKey) || "{}");
for (let key in settings) {
if (!this.definitions.hasOwnProperty(key)) {
delete settings[key];
continue;
}
for (let key in settings)
settings[key] = this.validateValue("get", key, settings[key]);
}
return this._settings = settings, settings;
}
getDefinition(key) {
@ -2408,6 +2403,16 @@ class StreamSettingsStorage extends BaseSettingsStorage {
return controllerSetting;
}
}
function migrateStreamSettings() {
let storage = window.localStorage, globalSettings = JSON.parse(storage.getItem("BetterXcloud") || "{}"), streamSettings = JSON.parse(storage.getItem("BetterXcloud.Stream") || "{}"), modified2 = !1;
for (let key in globalSettings)
if (isStreamPref(key)) {
if (!streamSettings.hasOwnProperty(key)) streamSettings[key] = globalSettings[key];
delete globalSettings[key], modified2 = !0;
}
if (modified2) storage.setItem("BetterXcloud", JSON.stringify(globalSettings)), storage.setItem("BetterXcloud.Stream", JSON.stringify(streamSettings));
}
migrateStreamSettings();
var STORAGE = {
Global: new GlobalSettingsStorage,
Stream: new StreamSettingsStorage

File diff suppressed because one or more lines are too long

View File

@ -1,8 +1,32 @@
import { ALL_PREFS, GlobalPref, StreamPref, type AnyPref } from "@/enums/pref-keys";
import { ALL_PREFS, GlobalPref, StorageKey, StreamPref, type AnyPref } from "@/enums/pref-keys";
import type { PrefInfo, SettingActionOrigin } from "@/types/setting-definition";
import { GlobalSettingsStorage } from "./settings-storages/global-settings-storage";
import { StreamSettingsStorage } from "./settings-storages/stream-settings-storage";
// Migrate Stream settings in Global storage to Stream storage
function migrateStreamSettings() {
const storage = window.localStorage;
const globalSettings = JSON.parse(storage.getItem(StorageKey.GLOBAL) || '{}');
const streamSettings = JSON.parse(storage.getItem(StorageKey.STREAM) || '{}');
let modified = false;
for (const key in globalSettings) {
if (isStreamPref(key as AnyPref)) {
// Migration
if (!streamSettings.hasOwnProperty(key)) {
streamSettings[key] = globalSettings[key];
}
delete globalSettings[key];
modified = true;
}
}
if (modified) {
storage.setItem(StorageKey.GLOBAL, JSON.stringify(globalSettings));
storage.setItem(StorageKey.STREAM, JSON.stringify(streamSettings));
}
}
migrateStreamSettings();
export const STORAGE = {
Global: new GlobalSettingsStorage(),
Stream: new StreamSettingsStorage(),

View File

@ -44,12 +44,6 @@ 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]);
}