diff --git a/app/admin/site/page.tsx b/app/admin/site/page.tsx index d1d71804..39258d71 100644 --- a/app/admin/site/page.tsx +++ b/app/admin/site/page.tsx @@ -9,43 +9,49 @@ import { Switch } from "@/components/ui/switch" import { useStore } from "@/lib/store" import { Save, Globe, Menu, FileText, Palette } from "lucide-react" +const defaultSiteConfig = { + siteName: "卡若日记", + siteTitle: "一场SOUL的创业实验场", + siteDescription: "来自Soul派对房的真实商业故事", + logo: "/logo.png", + favicon: "/favicon.ico", + primaryColor: "#00CED1", +} + +const defaultMenuConfig = { + home: { enabled: true, label: "首页" }, + chapters: { enabled: true, label: "目录" }, + match: { enabled: true, label: "匹配" }, + my: { enabled: true, label: "我的" }, +} + +const defaultPageConfig = { + homeTitle: "一场SOUL的创业实验场", + homeSubtitle: "来自Soul派对房的真实商业故事", + chaptersTitle: "我要看", + matchTitle: "语音匹配", + myTitle: "我的", + aboutTitle: "关于作者", +} + export default function SiteConfigPage() { const { settings, updateSettings } = useStore() const [localSettings, setLocalSettings] = useState({ - siteConfig: settings.siteConfig || { - siteName: "卡若日记", - siteTitle: "一场SOUL的创业实验场", - siteDescription: "来自Soul派对房的真实商业故事", - logo: "/logo.png", - favicon: "/favicon.ico", - primaryColor: "#00CED1", - }, - menuConfig: settings.menuConfig || { - home: { enabled: true, label: "首页" }, - chapters: { enabled: true, label: "目录" }, - match: { enabled: true, label: "匹配" }, - my: { enabled: true, label: "我的" }, - }, - pageConfig: settings.pageConfig || { - homeTitle: "一场SOUL的创业实验场", - homeSubtitle: "来自Soul派对房的真实商业故事", - chaptersTitle: "我要看", - matchTitle: "语音匹配", - myTitle: "我的", - aboutTitle: "关于作者", - }, + siteConfig: { ...defaultSiteConfig }, + menuConfig: { ...defaultMenuConfig }, + pageConfig: { ...defaultPageConfig }, }) const [saved, setSaved] = useState(false) + const [mounted, setMounted] = useState(false) useEffect(() => { - if (settings.siteConfig) { - setLocalSettings({ - siteConfig: settings.siteConfig, - menuConfig: settings.menuConfig, - pageConfig: settings.pageConfig, - }) - } - }, [settings]) + setMounted(true) + setLocalSettings({ + siteConfig: { ...defaultSiteConfig, ...settings.siteConfig }, + menuConfig: { ...defaultMenuConfig, ...settings.menuConfig }, + pageConfig: { ...defaultPageConfig, ...settings.pageConfig }, + }) + }, [settings.siteConfig, settings.menuConfig, settings.pageConfig]) const handleSave = () => { updateSettings(localSettings) @@ -53,6 +59,17 @@ export default function SiteConfigPage() { setTimeout(() => setSaved(false), 2000) } + if (!mounted) { + return ( +