export type SpotiRipSettings = { filenameTemplate: string; folderTemplate: string; multiDiscMode: "disc-prefix" | "offset" | "track-only"; mp3Bitrate: 128 | 192 | 256 | 320; embedArtwork: boolean; autoSelectMatches: boolean; smartDedup: boolean; }; export const DEFAULT_SPOTIRIP_SETTINGS: SpotiRipSettings = { filenameTemplate: "{artist} - {title}", folderTemplate: "{album_artist}/{year} - {album}", multiDiscMode: "disc-prefix", mp3Bitrate: 192, embedArtwork: true, autoSelectMatches: true, smartDedup: true, }; const STORAGE_KEY = "aurora-spotirip-settings-v1"; export function loadSpotiRipSettings(): SpotiRipSettings { if (typeof window === "undefined") return DEFAULT_SPOTIRIP_SETTINGS; try { const stored = window.localStorage.getItem(STORAGE_KEY); if (!stored) return DEFAULT_SPOTIRIP_SETTINGS; const parsed = JSON.parse(stored) as Partial; return { filenameTemplate: typeof parsed.filenameTemplate === "string" && parsed.filenameTemplate.trim() ? parsed.filenameTemplate : DEFAULT_SPOTIRIP_SETTINGS.filenameTemplate, folderTemplate: typeof parsed.folderTemplate === "string" && parsed.folderTemplate.trim() ? parsed.folderTemplate : DEFAULT_SPOTIRIP_SETTINGS.folderTemplate, multiDiscMode: parsed.multiDiscMode === "disc-prefix" || parsed.multiDiscMode === "offset" || parsed.multiDiscMode === "track-only" ? parsed.multiDiscMode : DEFAULT_SPOTIRIP_SETTINGS.multiDiscMode, mp3Bitrate: parsed.mp3Bitrate === 128 || parsed.mp3Bitrate === 192 || parsed.mp3Bitrate === 256 || parsed.mp3Bitrate === 320 ? parsed.mp3Bitrate : DEFAULT_SPOTIRIP_SETTINGS.mp3Bitrate, embedArtwork: typeof parsed.embedArtwork === "boolean" ? parsed.embedArtwork : DEFAULT_SPOTIRIP_SETTINGS.embedArtwork, autoSelectMatches: typeof parsed.autoSelectMatches === "boolean" ? parsed.autoSelectMatches : DEFAULT_SPOTIRIP_SETTINGS.autoSelectMatches, smartDedup: typeof parsed.smartDedup === "boolean" ? parsed.smartDedup : DEFAULT_SPOTIRIP_SETTINGS.smartDedup, }; } catch { return DEFAULT_SPOTIRIP_SETTINGS; } } export function saveSpotiRipSettings(settings: SpotiRipSettings) { window.localStorage.setItem(STORAGE_KEY, JSON.stringify(settings)); }