import React, {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 {useTranslation} from 'react-i18next'; import EditPassword from './EditPassword'; import {useToast} from '../../contexts/Toast'; import ProfileField from './ProfileField'; import {makeStyles} from '@material-ui/core'; const Profile = ({profile, updateProfile, logout}) => { const {t} = useTranslation(); const {addToast} = useToast(); 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 resetPassword = () => { setIsEditingPassword(false); setNewPassword(''); setOldPassword(''); setErrorPassword(''); }; const savePassword = async () => { try { await updateProfile({ old_password: oldPassword, password: newPassword, }); addToast(t('profile.password_changed')); resetPassword(); } catch (err) { if (err.kind === 'bad_data') { setErrorPassword(t('profile.errors.password_nomatch')); return; } } }; if (isEditingPassword) return ( ); return (
{ if (evt.preventDefault) evt.preventDefault(); if (isEditing) { try { updateProfile({firstName, lastName, email}); } catch (err) { console.log(err); return; } addToast(t('profile.updated')); } setIsEditing(!isEditing); }} > {isEditing && ( )} {!isEditing && ( <> )} {isEditing && ( )}
); }; const useStyles = makeStyles(theme => ({ actions: { marginTop: theme.spacing(2), }, changePassword: { marginTop: theme.spacing(2), }, })); export default Profile;