import { useState } from 'react'; import styled from '@emotion/styled'; import { useRecoilState } from 'recoil'; import { currentUserState } from '@/auth/states/currentUserState'; import { IconButton } from '@/ui/button/components/IconButton'; import { IconSettings, IconTrash } from '@/ui/icon'; import { SubMenuTopBarContainer } from '@/ui/layout/components/SubMenuTopBarContainer'; import { ConfirmationModal } from '@/ui/modal/components/ConfirmationModal'; import { Section } from '@/ui/section/components/Section'; import { H1Title } from '@/ui/typography/components/H1Title'; import { H2Title } from '@/ui/typography/components/H2Title'; import { WorkspaceInviteLink } from '@/workspace/components/WorkspaceInviteLink'; import { WorkspaceMemberCard } from '@/workspace/components/WorkspaceMemberCard'; import { useGetWorkspaceMembersQuery, useRemoveWorkspaceMemberMutation, } from '~/generated/graphql'; const StyledContainer = styled.div` display: flex; flex-direction: column; padding: ${({ theme }) => theme.spacing(8)}; width: 350px; `; 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 [userToDelete, setUserToDelete] = useState(); const [currentUser] = useRecoilState(currentUserState); const workspace = currentUser?.workspaceMember?.workspace; const { data } = useGetWorkspaceMembersQuery(); const [removeWorkspaceMember] = useRemoveWorkspaceMemberMutation(); const handleRemoveWorkspaceMember = async (userId: string) => { await removeWorkspaceMember({ variables: { where: { userId, }, }, optimisticResponse: { __typename: 'Mutation', deleteWorkspaceMember: { __typename: 'WorkspaceMember', id: userId, }, }, update: (cache, { data: responseData }) => { if (!responseData) { return; } cache.evict({ id: cache.identify({ id: responseData.deleteWorkspaceMember.id, __typename: 'WorkspaceMember', }), }); cache.evict({ id: cache.identify({ id: userId, __typename: 'User', }), }); cache.gc(); }, }); setIsConfirmationModalOpen(false); }; return ( {workspace?.inviteHash && (
)}
{data?.workspaceMembers?.map((member) => ( { setIsConfirmationModalOpen(true); setUserToDelete(member.user.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={() => userToDelete && handleRemoveWorkspaceMember(userToDelete) } deleteButtonText="Delete account" />
); };