web/settings: move migration to separate file, rename v7 migration

This commit is contained in:
jj
2024-10-30 12:42:48 +00:00
parent 44f842997e
commit b125894b7e
3 changed files with 144 additions and 136 deletions

View File

@@ -4,13 +4,11 @@ import { merge } from 'ts-deepmerge';
import type {
PartialSettings,
AllPartialSettingsWithSchema,
CobaltSettings,
CobaltSettingsV3
CobaltSettings
} from '../types/settings';
import { getBrowserLanguage } from '$lib/settings/youtube-lang';
import { migrateOldSettings } from '../settings/migrate';
import { migrateOldSettings } from '../settings/migrate-v7';
import defaultSettings from '../settings/defaults';
import type { RecursivePartial } from '$lib/types/generic';
import { migrate } from '$lib/settings/migrate';
const updatePlausiblePreference = (settings: PartialSettings) => {
if (settings.privacy?.disableAnalytics) {
@@ -29,34 +27,6 @@ const writeToStorage = (settings: PartialSettings) => {
return settings;
}
type Migrator = (s: AllPartialSettingsWithSchema) => AllPartialSettingsWithSchema;
const migrations: Record<number, Migrator> = {
[3]: (settings: AllPartialSettingsWithSchema) => {
const out = settings as RecursivePartial<CobaltSettingsV3>;
out.schemaVersion = 3;
if (settings?.save && 'youtubeDubBrowserLang' in settings.save) {
if (settings.save.youtubeDubBrowserLang) {
out.save!.youtubeDubLang = getBrowserLanguage();
}
delete settings.save.youtubeDubBrowserLang;
}
return out as AllPartialSettingsWithSchema;
}
}
const migrate = (settings: AllPartialSettingsWithSchema): PartialSettings => {
return Object.keys(migrations)
.map(Number)
.filter(version => version > settings.schemaVersion)
.reduce((settings, migrationVersion) => {
return migrations[migrationVersion](settings);
}, settings as AllPartialSettingsWithSchema) as PartialSettings;
}
const loadFromStorage = () => {
if (!browser)
return {};