import { useEffect, useState } from '@wordpress/element'; import { __ } from '@wordpress/i18n'; import type { FormEvent, JSX } from 'react'; import type { Settings } from '../../shared/api/types/settings'; import { useUpdateSettings } from '../../shared/api/useSettings'; import { Button } from '../../shared/ui/Button'; import { useNotifyOutcome } from '../../shared/ui/useNotifyOutcome'; import { settingsUpdateOf, withoutHost } from './settingsDraft'; import { settingToggles } from './settingToggles'; import { SkipHosts } from './SkipHosts'; import { ToggleRow } from './ToggleRow'; const EMAIL_FIELD_STYLE = { flex: '1 1 240px', maxWidth: 320 }; export function SettingsForm( { saved }: { saved: Settings } ): JSX.Element { const notifyOutcome = useNotifyOutcome(); const updateSettings = useUpdateSettings(); const [ draft, setDraft ] = useState( saved ); useEffect( () => { setDraft( saved ); }, [ saved ] ); const changeDraft = ( change: Partial< Settings > ) => { setDraft( ( previousDraft ) => ( { ...previousDraft, ...change } ) ); }; const submit = ( event: FormEvent ) => { event.preventDefault(); updateSettings.mutate( settingsUpdateOf( draft ), notifyOutcome( __( 'Settings saved.', 'aiplaz-link-checkup' ) ) ); }; return (
); }