import {useReducer, useState} from 'react'; import Container from '@mui/material/Container'; 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 'next-i18next'; import ProfileField from './ProfileField'; import { UsersPermissionsUser, useUpdateMeMutation, } from '../../generated/graphql'; import ManagingNotificationsField from './ManagingNotificationsField'; import StripeDashboardLink from './StripeDashboardLink'; import {Box, Divider} from '@mui/material'; import theme from '../../theme'; interface Props { profile: UsersPermissionsUser; logout: () => void; } const Profile = ({profile, logout}: Props) => { const {t} = useTranslation(); const [updateProfile] = useUpdateMeMutation(); const [isEditing, setIsEditing] = useState(false); const [firstName, setFirstName] = useState(profile.firstName); const [lastName, setLastName] = useState(profile.lastName); const [email, setEmail] = useState(profile.email); const [newsletterConsent, toggleNewsletter] = useReducer( i => !i, profile.newsletterConsent ); const [notificationEnabled, toggleNotification] = useReducer( i => !i, profile.notificationEnabled ); const isStrapiUser = profile.provider === 'local'; const onSave = async () => { try { await updateProfile({ variables: { userUpdate: { firstName, lastName, email, newsletterConsent, notificationEnabled, }, }, }); setIsEditing(false); } catch (error) { console.error(error); } }; return ( {!isEditing && ( <> )} {isEditing && ( )} ); }; export default Profile;