"use client"; import { useEffect, useState } from "react"; import { api } from "@/lib/api"; import { Save } from "lucide-react"; const settingFields = [ { key: "site_title", label: "Site Title" }, { key: "site_tagline", label: "Site Tagline" }, { key: "telegram_link", label: "Telegram Link" }, { key: "nostr_link", label: "Nostr Link" }, { key: "x_link", label: "X Link" }, { key: "youtube_link", label: "YouTube Link" }, { key: "discord_link", label: "Discord Link" }, { key: "linkedin_link", label: "LinkedIn Link" }, ]; export default function SettingsPage() { const [settings, setSettings] = useState>({}); const [original, setOriginal] = useState>({}); const [loading, setLoading] = useState(true); const [saving, setSaving] = useState(false); const [error, setError] = useState(""); const [success, setSuccess] = useState(""); useEffect(() => { async function load() { try { const data = await api.getSettings(); setSettings(data); setOriginal(data); } catch (err: any) { setError(err.message); } finally { setLoading(false); } } load(); }, []); const handleSave = async () => { setSaving(true); setError(""); setSuccess(""); try { const changed = Object.entries(settings).filter( ([key, value]) => value !== (original[key] || "") ); await Promise.all( changed.map(([key, value]) => api.updateSetting(key, value)) ); setOriginal({ ...settings }); setSuccess("Settings saved successfully."); } catch (err: any) { setError(err.message); } finally { setSaving(false); } }; const hasChanges = Object.entries(settings).some( ([key, value]) => value !== (original[key] || "") ); if (loading) { return (
Loading settings...
); } return (

Site Settings

{error &&

{error}

} {success &&

{success}

}
{settingFields.map((field) => (
setSettings({ ...settings, [field.key]: e.target.value }) } className="bg-surface-container-highest text-on-surface rounded-lg px-4 py-3 w-full focus:outline-none focus:ring-1 focus:ring-primary/40" />
))}
); }