'use client'; import { useLayoutEffect, useMemo, useState } from 'react'; import { toast } from 'react-toastify'; import SubmitButton from '@/components/Common/SubmitButton'; import TextInput from '@/components/Common/TextInput'; import { useBlockNavigation } from '@/context/NagivationContext'; import { useUserProfile } from '@/context/UserProfileContext'; import { IUserUpdateData } from '@/models/library'; function EditorProfile() { const { updateUser, user, processing } = useUserProfile(); const [username, setUsername] = useState(''); const [email, setEmail] = useState(''); const [first_name, setFirstName] = useState(''); const [last_name, setLastName] = useState(''); const isModified: boolean = useMemo( () => { if (!user) { return false; } return ( user.email !== email || user.first_name !== first_name || user.last_name !== last_name ); }, [user, email, first_name, last_name]); useBlockNavigation(isModified); useLayoutEffect(() => { if (user) { setUsername(user.username); setEmail(user.email); setFirstName(user.first_name); setLastName(user.last_name); } }, [user]); function handleSubmit(event: React.FormEvent) { event.preventDefault(); const data: IUserUpdateData = { username: username, email: email, first_name: first_name, last_name: last_name, }; updateUser(data, () => toast.success('Изменения сохранены')); } return (
setFirstName(event.target.value)} /> setLastName(event.target.value)} /> setEmail(event.target.value)} /> ); } export default EditorProfile;