import {FieldErrors, useForm} from 'react-hook-form'; import {Fragment, ReactNode} from 'react'; import { AdminSettingsWithFiles, useUpdateAdminSettings, } from './requests/update-admin-settings'; import {AdminSettings} from './admin-settings'; import {useAdminSettings} from './requests/use-admin-settings'; import {Form} from '../../ui/forms/form'; import {Button} from '../../ui/buttons/button'; import {ProgressCircle} from '../../ui/progress/progress-circle'; import {ProgressBar} from '../../ui/progress/progress-bar'; import {Trans} from '../../i18n/trans'; interface Props { title: ReactNode; description: ReactNode; children: ReactNode; } export function SettingsPanel({title, description, children}: Props) { const {data} = useAdminSettings(); return (

{title}

{description}
{data ? ( {children} ) : ( )}
); } interface FormWrapperProps { children: ReactNode; defaultValues: AdminSettings; } function FormWrapper({children, defaultValues}: FormWrapperProps) { const form = useForm({defaultValues}); const updateSettings = useUpdateAdminSettings(form); return (
{ // clear group errors, because hook form won't automatically // clear errors that are not bound to a specific form field const errors = form.formState.errors as FieldErrors; const keys = Object.keys(errors).filter(key => { return key.endsWith('_group'); }); form.clearErrors(keys as any); }} onSubmit={value => { updateSettings.mutate(value); }} > {children}
{updateSettings.isPending && ( )} ); }