import { useCallback, useEffect, useState, type FormEvent } from 'react'; import { getMindSpaceAdminConfig, updateMindSpaceAdminConfig } from '../../api/client'; import type { MindSpaceAdminConfig } from '../../types'; function safeConfig(config: MindSpaceAdminConfig | null): MindSpaceAdminConfig { return config ?? { publicPageLimit: 10, analytics: { enabled: false, websiteId: '', analyticsUrl: 'http://127.0.0.1:3100', domains: '127.0.0.1,localhost', idSecretConfigured: false } }; } export function MindSpacePage() { const [config, setConfig] = useState(null); const [limit, setLimit] = useState('10'); const [loading, setLoading] = useState(true); const [busy, setBusy] = useState(false); const [error, setError] = useState(null); const [message, setMessage] = useState(null); const load = useCallback(async () => { setLoading(true); setError(null); setMessage(null); try { const nextConfig = await getMindSpaceAdminConfig(); setConfig(nextConfig); setLimit(String(nextConfig.publicPageLimit)); } catch (err) { setError(err instanceof Error ? err.message : '加载 MindSpace 配置失败'); } finally { setLoading(false); } }, []); useEffect(() => { void load(); }, [load]); const handleSave = async (event: FormEvent) => { event.preventDefault(); setBusy(true); setError(null); setMessage(null); try { const nextConfig = await updateMindSpaceAdminConfig({ publicPageLimit: Number(limit) }); setConfig(nextConfig); setLimit(String(nextConfig.publicPageLimit)); setMessage(`已更新为 ${nextConfig.publicPageLimit},主站会立即按新值校验。`); } catch (err) { setError(err instanceof Error ? err.message : '保存 MindSpace 配置失败'); } finally { setBusy(false); } }; const current = safeConfig(config); return (

MindSpace 配置

公开页面数量上限由这里统一管理,主站会直接读取数据库配置。

{error &&

{error}

} {message &&

{message}

}

公开页面上限

当前值:{loading ? '—' : current.publicPageLimit}。建议在修改后同步检查主站发布流程。

); }