import LoadingButton from '@mui/lab/LoadingButton'; import Grid from '@mui/material/Grid'; import Skeleton from '@mui/material/Skeleton'; import Stack from '@mui/material/Stack'; import Chip from '@mui/material/Chip'; import Typography from '@mui/material/Typography'; import MuiTextField from '@mui/material/TextField'; import useEnqueueSnackbar from 'hooks/useEnqueueSnackbar'; import * as React from 'react'; import { useNavigate, useParams } from 'react-router-dom'; import Can from 'components/Can'; import Container from 'components/Container'; import ControlledAutocomplete from 'components/ControlledAutocomplete'; import Form from 'components/Form'; import PageTitle from 'components/PageTitle'; import TextField from 'components/TextField'; import * as URLS from 'config/urls'; import useFormatMessage from 'hooks/useFormatMessage'; import useRoles from 'hooks/useRoles.ee'; import useAdminUpdateUser from 'hooks/useAdminUpdateUser'; import useAdminUser from 'hooks/useAdminUser'; function generateRoleOptions(roles) { return roles?.map(({ name: label, id: value }) => ({ label, value })); } export default function EditUser() { const formatMessage = useFormatMessage(); const { userId } = useParams(); const { mutateAsync: updateUser, isPending: isAdminUpdateUserPending } = useAdminUpdateUser(userId); const { data: userData, isLoading: isUserLoading } = useAdminUser({ userId }); const user = userData?.data; const { data, isLoading: isRolesLoading } = useRoles(); const roles = data?.data; const enqueueSnackbar = useEnqueueSnackbar(); const navigate = useNavigate(); const handleUserUpdate = async (userDataToUpdate) => { try { await updateUser({ fullName: userDataToUpdate.fullName, email: userDataToUpdate.email, roleId: userDataToUpdate.role?.id, }); enqueueSnackbar(formatMessage('editUser.successfullyUpdated'), { variant: 'success', SnackbarProps: { 'data-test': 'snackbar-edit-user-success', persist: true, }, }); navigate(URLS.USERS); } catch (error) { throw new Error('Failed while updating!'); } }; return ( {formatMessage('editUserPage.title')} {isUserLoading && ( )} {!isUserLoading && (
{formatMessage('editUser.status')} ( )} loading={isRolesLoading} /> {formatMessage('editUser.submit')}
)}
); }