import {useState} from 'react'; import Card from '@material-ui/core/Card'; import CardContent from '@material-ui/core/CardContent'; import CardActions from '@material-ui/core/CardActions'; import Button from '@material-ui/core/Button'; import {makeStyles} from '@material-ui/core'; import {useTranslation} from 'react-i18next'; import EditPassword from './EditPassword'; import ProfileField from './ProfileField'; import useToastStore from '../../stores/useToastStore'; const Profile = ({profile, updateProfile, logout}) => { const {t} = useTranslation(); const addToast = useToastStore(s => s.addToast); const classes = useStyles(); 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({ oldPassword, password: newPassword, }); addToast(t('profile.password_changed')); resetPassword(); } catch (err) { if (err.message === 'Auth.form.error.password.matching') { setErrorPassword(t('profile.errors.password_nomatch')); return; } } }; const onSave = async () => { try { await updateProfile({firstName, lastName, email}); setIsEditing(false); } catch (error) { console.error(error); } }; if (isEditingPassword) return ( ); return (
{!isEditing && ( <> )} {isEditing && isStrapiUser && ( )} {isEditing && ( )}
); }; const useStyles = makeStyles(theme => ({ actions: { marginTop: theme.spacing(2), justifyContent: 'flex-end', }, })); export default Profile;