import React, { useMemo, useRef } from 'react'; import { __ } from '@wordpress/i18n'; import { useForm } from 'react-hook-form'; // store import { storeSet, useStore } from '../../store'; // components import set404FromErrorResponse from '../../helpers/set404FromErrorResponse'; import FormField from '../../components/FormField'; import { Button } from 'primereact/button'; import { Toast } from 'primereact/toast'; // api import UserService from '../../service/user-service'; // tools import getDateFromISOstring from '../../helpers/getDateFromISOstring'; const Profile = () => { const isAsyncRequest = useStore().main.isAsyncRequest(); const userData = useStore().main.userData(); const toast = useRef(null); const { control, handleSubmit, formState: { errors } } = useForm({ defaultValues: useMemo(() => { return userData; }, [userData]), mode: 'onChange' }); const onSubmit = (formData) => { storeSet.main.setAsyncRequest(); UserService.updateUser(userData.id, formData, updateCallback, updateError); }; const updateCallback = (data) => { if (data.status === 'SUCCESS') { storeSet.main.userData(data.data); if (toast.current) { toast.current.show({ severity: 'success', summary: '', detail: __('L\'utente è stato aggiornato!', 'gepafin') }); } } storeSet.main.unsetAsyncRequest(); } const updateError = (data) => { set404FromErrorResponse(data); storeSet.main.unsetAsyncRequest(); } return (