/* FreeSize — Einstellungen (Settings) view */
function SettingsView({ tweaks, setTweak, nav }) {
const { fmt } = window.FZ;
const volumes = window.VOLUMES;
const [licensed, setLicensed] = React.useState(false);
const [key, setKey] = React.useState("");
const [licMsg, setLicMsg] = React.useState(null);
const [autoSync, setAutoSync] = React.useState(true);
const [interval, setIntervalMin] = React.useState(60);
const [monitored, setMonitored] = React.useState(new Set());
const [saved, setSaved] = React.useState(false);
const savedT = React.useRef(null);
const activate = () => {
if (key.trim().length < 6) { setLicMsg({ ok: false, t: "Bitte einen gültigen Lizenzschlüssel eingeben." }); return; }
setLicensed(true);
setLicMsg({ ok: true, t: "Lizenz erfolgreich aktiviert. Willkommen bei FreeSize Pro!" });
};
const save = () => {
setSaved(true);
clearTimeout(savedT.current);
savedT.current = setTimeout(() => setSaved(false), 2200);
};
const toggleVol = (id) => setMonitored((p) => { const n = new Set(p); n.has(id) ? n.delete(id) : n.add(id); return n; });
const ToggleSwitch = ({ on, onClick }) => (
);
const proOverlay = (
Nur in FreeSize Pro
);
return (
Einstellungen
Erscheinungsbild, Lizenz, Synchronisierung und überwachte Volumes verwalten.
{/* ---- Appearance ---- */}
{tweaks.dark ? : }
Erscheinungsbild
Helles oder dunkles Design.
Dunkles Design
Dunkle Oberfläche für wenig Umgebungslicht.
setTweak("dark", !tweaks.dark)} />
{/* ---- License ---- */}
Lizenz
Status deiner FreeSize-Aktivierung.
{licensed
? FreeSize Pro aktiv
: Nicht aktiviert}
{licensed ? (
FreeSize Pro
Hintergrund-Synchronisierung und Portal-Metriken sind freigeschaltet.
) : (
Auf FreeSize Pro upgraden
Schalte die kontinuierliche Überwachung und das Portal-Dashboard für all deine Geräte frei.
{["Automatische Metrik-Synchronisierung", "Volume-Überwachung im Hintergrund", "Verlauf & Trends im FreeSize-Portal", "Mehrere Geräte zentral verwalten"].map((f) => (
- {f}
))}
setKey(e.target.value)} />
{licMsg && (
{licMsg.t}
)}
)}
{/* ---- Sync (Pro) ---- */}
Synchronisierung
Volume-Metriken an das FreeSize-Portal senden.
Automatische Metrik-Synchronisierung
Sendet regelmässig Auslastungsdaten der überwachten Volumes.
setAutoSync((s) => !s)} />
Intervall
Wie oft Metriken gesendet werden.
setIntervalMin(Math.max(5, +e.target.value || 5))}
style={{ width: 86, opacity: autoSync ? 1 : 0.5 }} disabled={!autoSync} />
Minuten
{autoSync ? "Heute, 14:32" : "—"}
{!licensed && proOverlay}
{/* ---- Monitored volumes (Pro) ---- */}
Überwachte Volumes
Ohne Auswahl werden alle erkannten Volumes überwacht.
{volumes.map((v) => (
toggleVol(v.id)} style={{ cursor: "pointer" }}>
{v.label}
{v.caption}
{fmt(v.total)}
))}
{!licensed && proOverlay}
{/* ---- Actions ---- */}
Gespeichert
{/* ---- Info ---- */}
Geräte-ID
Für den Support — eindeutige Kennung dieses Geräts.
7F3A-9C21-D8E0-4B65
);
}
window.SettingsView = SettingsView;