import { useEffect, useState } from 'react' import { Breadcrumbs } from '../components/Breadcrumbs' import { PageTitle } from '../components/PageTitle' import { Switch } from '../components/Switch' import { useToast } from '../context/ToastContext' import { useT } from '../i18n/useT' import { ApiError } from '../lib/api' import { getSettings, updateDashboardSettings, type DashboardSettings, } from '../services/settingsService' import pageStyles from '../components/PageContent.module.css' import styles from './ProductSettingsPage.module.css' const DEFAULT_SETTINGS: DashboardSettings = { comments: { autoApprove: false }, expertReviews: { autoApprove: false }, } export function BlogSettingsPage() { const t = useT() const { showToast } = useToast() const [settings, setSettings] = useState(DEFAULT_SETTINGS) const [isLoading, setIsLoading] = useState(true) const [savingKey, setSavingKey] = useState(null) const [error, setError] = useState('') useEffect(() => { const controller = new AbortController() void loadSettings(controller.signal) return () => controller.abort() }, []) async function loadSettings(signal?: AbortSignal) { setIsLoading(true) setError('') try { const data = await getSettings(signal) setSettings(data.settings.dashboard) } catch (err) { if (err instanceof DOMException && err.name === 'AbortError') return if (err instanceof ApiError) { setError(err.message) } else { setError(t('productSettings.errorLoad')) } } finally { setIsLoading(false) } } async function handleCommentsAutoApprove(checked: boolean) { setSavingKey('comments') setError('') try { const data = await updateDashboardSettings({ comments: { autoApprove: checked }, }) setSettings(data.settings.dashboard) showToast(t('productSettings.saved'), 'success') } catch (err) { if (err instanceof ApiError) { setError(err.message) } else { setError(t('productSettings.errorSave')) } } finally { setSavingKey(null) } } return (
{t('blog.settings.title')}

{t('blog.settings.subtitle')}

{error && (
{error}
)}

{t('productSettings.moderation')}

{isLoading ? (

{t('productSettings.loading')}

) : (

{t('blog.settings.commentsAutoDesc')}

void handleCommentsAutoApprove(checked)} />
)}
) }