import { mdiChartTimelineVariant, mdiUpload } from '@mdi/js'; import Head from 'next/head'; import React, { ReactElement, useEffect, useState } from 'react'; import { ToastContainer, toast } from 'react-toastify'; import DatePicker from 'react-datepicker'; import 'react-datepicker/dist/react-datepicker.css'; import CardBox from '../components/CardBox'; import LayoutAuthenticated from '../layouts/Authenticated'; import SectionMain from '../components/SectionMain'; import SectionTitleLineWithButton from '../components/SectionTitleLineWithButton'; import { getPageTitle } from '../config'; import { Field, Form, Formik } from 'formik'; import FormField from '../components/FormField'; import BaseDivider from '../components/BaseDivider'; import BaseButtons from '../components/BaseButtons'; import BaseButton from '../components/BaseButton'; import FormCheckRadio from '../components/FormCheckRadio'; import FormCheckRadioGroup from '../components/FormCheckRadioGroup'; import FormImagePicker from '../components/FormImagePicker'; import { SwitchField } from '../components/SwitchField'; import { SelectField } from '../components/SelectField'; import { update, fetch } from '../stores/users/usersSlice'; import { useAppDispatch, useAppSelector } from '../stores/hooks'; import { useRouter } from 'next/router'; import { findMe } from '../stores/authSlice'; const EditUsers = () => { const { currentUser, isFetching, token } = useAppSelector( (state) => state.auth, ); const router = useRouter(); const dispatch = useAppDispatch(); const notify = (type, msg) => toast(msg, { type }); const initVals = { firstName: '', lastName: '', phoneNumber: '', email: '', app_role: '', disabled: false, avatar: [], password: '', }; const [initialValues, setInitialValues] = useState(initVals); useEffect(() => { if (currentUser?.id && typeof currentUser === 'object') { const newInitialVal = { ...initVals }; Object.keys(initVals).forEach( (el) => (newInitialVal[el] = currentUser[el]), ); setInitialValues(newInitialVal); } }, [currentUser]); const handleSubmit = async (data) => { await dispatch(update({ id: currentUser.id, data })); await dispatch(findMe()); await router.push('/users/users-list'); notify('success', 'Profile was updated!'); }; return ( <> {getPageTitle('Edit profile')} {''} {currentUser?.avatar[0]?.publicUrl && (
Avatar
)} handleSubmit(values)} >
router.push('/users/users-list')} />
); }; EditUsers.getLayout = function getLayout(page: ReactElement) { return {page}; }; export default EditUsers;