/** * 隐私中心(截图版)hook。 */ import { useCallback } from 'react'; import { fetchPrivacyCenter, updatePrivacyCenterSetting } from '../api'; import type { PrivacyCenter, UpdateTogglePayload } from '../types'; import { useAsyncData } from './useAsyncData'; export interface PrivacyCenterState { privacyCenter: PrivacyCenter | null; loading: boolean; error: Error | null; refresh: () => void; toggle: (id: string, enabled: boolean) => Promise; } export function usePrivacyCenter(): PrivacyCenterState { const fetcher = useCallback(async (): Promise => fetchPrivacyCenter(), []); const { data, loading, error, refresh } = useAsyncData(fetcher); const toggle = useCallback( async (id: string, enabled: boolean) => { const payload: UpdateTogglePayload = { id, enabled }; try { await updatePrivacyCenterSetting(payload); refresh(); } catch (err) { console.error('[usePrivacyCenter] toggle error', err); } }, [refresh], ); return { privacyCenter: data ?? null, loading, error, refresh, toggle, }; }