import {useForm} from 'react-hook-form'; import {useId} from 'react'; import {User} from '../../../user'; import {AccountSettingsPanel} from '../account-settings-panel'; import {Button} from '@common/ui/buttons/button'; import {Form} from '@common/ui/forms/form'; import {FormTextField} from '@common/ui/forms/input-field/text-field/text-field'; import {useUpdateAccountDetails} from './update-account-details'; import {Trans} from '@common/i18n/trans'; import {useUploadAvatar} from '../avatar/upload-avatar'; import {useRemoveAvatar} from '../avatar/remove-avatar'; import {FormImageSelector} from '@common/ui/images/image-selector'; import {FileUploadProvider} from '@common/uploads/uploader/file-upload-provider'; import {AccountSettingsId} from '@common/auth/ui/account-settings/account-settings-sidenav'; interface Props { user: User; } export function BasicInfoPanel({user}: Props) { const uploadAvatar = useUploadAvatar({user}); const removeAvatar = useRemoveAvatar({user}); const formId = useId(); const form = useForm>>({ defaultValues: { first_name: user.first_name || '', last_name: user.last_name || '', avatar: user.avatar, }, }); const updateDetails = useUpdateAccountDetails(form); return ( } actions={ } >
{ updateDetails.mutate(newDetails); }} id={formId} >
} /> } />
} onChange={url => { if (url) { uploadAvatar.mutate({url}); } else { removeAvatar.mutate(); } }} />
); }