import { useEffect, useState } from "react"; import { CopyCheck, Download, FolderTree, Image, Music2, Save, Settings2, Tags, } from "lucide-react"; import { Button } from "../components/Button"; import { Checkbox } from "../components/Checkbox"; import { Input } from "../components/Input"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "../components/Select"; import { loadSpotiRipSettings, saveSpotiRipSettings, type SpotiRipSettings, } from "../helpers/spotiripSettings"; import { getDesktopBridge } from "../helpers/desktopBridge"; import styles from "./settings.module.css"; import { MobileNav } from "../components/MobileNav"; export default function SettingsPage() { const [settings, setSettings] = useState(() => loadSpotiRipSettings()); const [saved, setSaved] = useState(false); const desktop = getDesktopBridge(); const [downloadFolder, setDownloadFolder] = useState(); useEffect(() => { desktop?.getDownloadFolder().then(setDownloadFolder).catch(() => undefined); }, []); async function chooseDownloadFolder() { const chosen = await desktop?.chooseDownloadFolder(); if (chosen) setDownloadFolder(chosen); } function update(changes: Partial) { setSaved(false); setSettings((current) => ({ ...current, ...changes })); } function save() { saveSpotiRipSettings(settings); setSaved(true); } return (
Preferences

Settings

Defaults for local file repair and metadata cleanup.

{desktop ? (
Songs are saved here; each playlist gets its own subfolder. Changes apply immediately.
) : null}
update({ filenameTemplate: event.target.value })} /> Available tokens: {"{artist}"} {"{title}"} {"{album}"} {"{year}"} {"{track}"}
update({ folderTemplate: event.target.value })} /> Tokens: {"{album_artist}"} {"{artist}"} {"{album}"} {"{year}"} {"{genre}"} {"{disc}"}
{saved ? "Settings saved on this device." : "Original source files are always preserved."}
); }