import {useState} from 'react'; import { styled } from '@mui/material/styles'; import Card from '@mui/material/Card'; import CardContent from '@mui/material/CardContent'; import CardActions from '@mui/material/CardActions'; import Button from '@mui/material/Button'; import {useTranslation} from 'react-i18next'; import EditPassword from './EditPassword'; import ProfileField from './ProfileField'; import useToastStore from '../../stores/useToastStore'; import {useUpdateMeMutation} from '../../generated/graphql'; const PREFIX = 'Profile'; const classes = { actions: `${PREFIX}-actions` }; // TODO jss-to-styled codemod: The Fragment root was replaced by div. Change the tag if needed. const Root = styled('div')(( { theme } ) => ({ [`& .${classes.actions}`]: { marginTop: theme.spacing(2), justifyContent: 'flex-end', } })); const Profile = ({profile, logout}) => { const {t} = useTranslation(); const addToast = useToastStore(s => s.addToast); const [updateProfile] = useUpdateMeMutation(); const [isEditing, setIsEditing] = useState(false); const [isEditingPassword, setIsEditingPassword] = useState(false); const [firstName, setFirstName] = useState(profile.firstName); const [lastName, setLastName] = useState(profile.lastName); const [email, setEmail] = useState(profile.email); const [oldPassword, setOldPassword] = useState(''); const [newPassword, setNewPassword] = useState(''); const [errorPassword, setErrorPassword] = useState(''); const isStrapiUser = profile.provider === 'local'; const resetPassword = () => { setIsEditingPassword(false); setNewPassword(''); setOldPassword(''); setErrorPassword(''); }; const savePassword = async () => { try { await updateProfile({ variables: { userUpdate: {oldPassword, password: newPassword}, }, }); addToast(t('profile.password_changed')); resetPassword(); } catch (err) { if (err.message === 'Wrong password') { setErrorPassword(t('profile.errors.password_nomatch')); return; } } }; const onSave = async () => { try { await updateProfile({ variables: { userUpdate: {firstName, lastName, email}, }, }); setIsEditing(false); } catch (error) { console.error(error); } }; if (isEditingPassword) return ( ); return ( ( {!isEditing && ( <> )} {isEditing && isStrapiUser && ( )} {isEditing && ( )} ) ); }; export default Profile;