import LoadingButton from '@mui/lab/LoadingButton'; import Grid from '@mui/material/Grid'; import Stack from '@mui/material/Stack'; import Alert from '@mui/material/Alert'; import MuiTextField from '@mui/material/TextField'; import useEnqueueSnackbar from 'hooks/useEnqueueSnackbar'; import * as React from 'react'; import { useQueryClient } from '@tanstack/react-query'; 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 useFormatMessage from 'hooks/useFormatMessage'; import useRoles from 'hooks/useRoles.ee'; import useAdminCreateUser from 'hooks/useAdminCreateUser'; function generateRoleOptions(roles) { return roles?.map(({ name: label, id: value }) => ({ label, value })); } export default function CreateUser() { const formatMessage = useFormatMessage(); const { mutateAsync: createUser, isPending: isCreateUserPending, data: createdUser, } = useAdminCreateUser(); const { data: rolesData, loading: isRolesLoading } = useRoles(); const roles = rolesData?.data; const enqueueSnackbar = useEnqueueSnackbar(); const queryClient = useQueryClient(); const handleUserCreation = async (userData) => { try { await createUser({ fullName: userData.fullName, email: userData.email, roleId: userData.role?.id, }); queryClient.invalidateQueries({ queryKey: ['admin', 'users'] }); enqueueSnackbar(formatMessage('createUser.successfullyCreated'), { variant: 'success', persist: true, SnackbarProps: { 'data-test': 'snackbar-create-user-success', }, }); } catch (error) { enqueueSnackbar(formatMessage('createUser.error'), { variant: 'error', persist: true, SnackbarProps: { 'data-test': 'snackbar-error', }, }); throw new Error('Failed while creating!'); } }; return ( {formatMessage('createUserPage.title')}
( )} loading={isRolesLoading} /> {formatMessage('createUser.submit')} {createdUser && ( {formatMessage('createUser.invitationEmailInfo', { link: () => ( {createdUser.data.acceptInvitationUrl} ), })} )}
); }