import { useState } from 'react'; import styled from '@emotion/styled'; import { useRecoilValue } from 'recoil'; import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState'; import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState'; import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; import { useDeleteOneRecord } from '@/object-record/hooks/useDeleteOneRecord'; import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords'; import { SettingsPageContainer } from '@/settings/components/SettingsPageContainer'; import { IconSettings, IconTrash } from '@/ui/display/icon'; import { H1Title } from '@/ui/display/typography/components/H1Title'; import { H2Title } from '@/ui/display/typography/components/H2Title'; import { IconButton } from '@/ui/input/button/components/IconButton'; import { ConfirmationModal } from '@/ui/layout/modal/components/ConfirmationModal'; import { SubMenuTopBarContainer } from '@/ui/layout/page/SubMenuTopBarContainer'; import { Section } from '@/ui/layout/section/components/Section'; import { WorkspaceInviteLink } from '@/workspace/components/WorkspaceInviteLink'; import { WorkspaceMemberCard } from '@/workspace/components/WorkspaceMemberCard'; import { WorkspaceMember } from '@/workspace-member/types/WorkspaceMember'; const StyledH1Title = styled(H1Title)` margin-bottom: 0; `; const StyledButtonContainer = styled.div` align-items: center; display: flex; flex-direction: row; margin-left: ${({ theme }) => theme.spacing(3)}; `; export const SettingsWorkspaceMembers = () => { const [isConfirmationModalOpen, setIsConfirmationModalOpen] = useState(false); const [workspaceMemberToDelete, setWorkspaceMemberToDelete] = useState< string | undefined >(); const { records: workspaceMembers } = useFindManyRecords({ objectNameSingular: CoreObjectNameSingular.WorkspaceMember, }); const { deleteOneRecord: deleteOneWorkspaceMember } = useDeleteOneRecord({ objectNameSingular: CoreObjectNameSingular.WorkspaceMember, }); const currentWorkspace = useRecoilValue(currentWorkspaceState); const currentWorkspaceMember = useRecoilValue(currentWorkspaceMemberState); const handleRemoveWorkspaceMember = async (workspaceMemberId: string) => { await deleteOneWorkspaceMember?.(workspaceMemberId); setIsConfirmationModalOpen(false); }; return ( {currentWorkspace?.inviteHash && (
)}
{workspaceMembers?.map((member) => ( { setIsConfirmationModalOpen(true); setWorkspaceMemberToDelete(member.id); }} variant="tertiary" size="medium" Icon={IconTrash} /> ) } /> ))}
This action cannot be undone. This will permanently delete this user and remove them from all their assignements. } onConfirmClick={() => workspaceMemberToDelete && handleRemoveWorkspaceMember(workspaceMemberToDelete) } deleteButtonText="Delete account" />
); };