import { useState } from 'react'; import styled from '@emotion/styled'; import { useRecoilValue } from 'recoil'; import { currentWorkspaceState } from '@/auth/states/currentWorkspaceState'; import { useDeleteOneObjectRecord } from '@/object-record/hooks/useDeleteOneObjectRecord'; import { useFindManyObjectRecords } from '@/object-record/hooks/useFindManyObjectRecords'; 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 { objects: workspaceMembers } = useFindManyObjectRecords({ objectNamePlural: 'workspaceMembersV2', }); const { deleteOneObject: deleteOneWorkspaceMember } = useDeleteOneObjectRecord({ objectNameSingular: 'workspaceMemberV2', }); const currentWorkspace = useRecoilValue(currentWorkspaceState); 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" />
); };