From a4d5f5b38035c9c97a728748c45e98629ae6b2e6 Mon Sep 17 00:00:00 2001 From: wukko Date: Sun, 22 Jun 2025 16:28:18 +0600 Subject: [PATCH] web/settings: migrate boolean localProcessing to enum --- web/src/lib/settings/defaults.ts | 3 ++- web/src/lib/settings/migrate.ts | 15 +++++++++++++++ web/src/lib/types/settings/v6.ts | 4 +++- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/web/src/lib/settings/defaults.ts b/web/src/lib/settings/defaults.ts index a082adf6..ce3114ec 100644 --- a/web/src/lib/settings/defaults.ts +++ b/web/src/lib/settings/defaults.ts @@ -22,7 +22,8 @@ const defaultSettings: CobaltSettings = { }, save: { alwaysProxy: false, - localProcessing: device.supports.defaultLocalProcessing || false, + localProcessing: + device.supports.defaultLocalProcessing ? "preferred" : "disabled", audioBitrate: "128", audioFormat: "mp3", disableMetadata: false, diff --git a/web/src/lib/settings/migrate.ts b/web/src/lib/settings/migrate.ts index 60b1028a..d033a6f9 100644 --- a/web/src/lib/settings/migrate.ts +++ b/web/src/lib/settings/migrate.ts @@ -5,6 +5,7 @@ import type { CobaltSettingsV3, CobaltSettingsV4, CobaltSettingsV5, + CobaltSettingsV6, } from "$lib/types/settings"; import { getBrowserLanguage } from "$lib/settings/audio-sub-language"; @@ -80,6 +81,20 @@ const migrations: Record = { return out as AllPartialSettingsWithSchema; }, + + [6]: (settings: AllPartialSettingsWithSchema) => { + const out = settings as RecursivePartial; + out.schemaVersion = 6; + + if (settings?.save) { + if ("localProcessing" in settings.save) { + out.save!.localProcessing = + settings.save.localProcessing ? "preferred" : "disabled"; + } + } + + return out as AllPartialSettingsWithSchema; + }, }; export const migrate = (settings: AllPartialSettingsWithSchema): PartialSettings => { diff --git a/web/src/lib/types/settings/v6.ts b/web/src/lib/types/settings/v6.ts index 762d6a77..0a933e67 100644 --- a/web/src/lib/types/settings/v6.ts +++ b/web/src/lib/types/settings/v6.ts @@ -2,10 +2,12 @@ import type { SubtitleLang } from "$lib/settings/audio-sub-language"; import type { CobaltSettingsV5 } from "$lib/types/settings/v5"; export const youtubeVideoContainerOptions = ["auto", "mp4", "webm", "mkv"] as const; +export const localProcessingOptions = ["disabled", "preferred", "forced"] as const; export type CobaltSettingsV6 = Omit & { schemaVersion: 6, - save: CobaltSettingsV5['save'] & { + save: Omit & { + localProcessing: typeof localProcessingOptions[number], youtubeVideoContainer: typeof youtubeVideoContainerOptions[number]; subtitleLang: SubtitleLang, },