import { useMemo } from "react"; import { useRouter } from "next/router"; import { faTrash } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { createNotification } from "@app/components/notifications"; import { IconButton, Td, Tooltip, Tr } from "@app/components/v2"; import { useWorkspace } from "@app/context"; import { ProjectMembershipRole } from "@app/hooks/api/roles/types"; import { TWorkspaceUser } from "@app/hooks/api/types"; import { UsePopUpState } from "@app/hooks/usePopUp"; type Props = { membership: TWorkspaceUser; handlePopUpOpen: (popUpName: keyof UsePopUpState<["removeUserFromProject"]>, data?: {}) => void; }; const formatRoleName = (role: string, customRoleName?: string) => { if (role === ProjectMembershipRole.Custom) return customRoleName; if (role === ProjectMembershipRole.Admin) return "Admin"; if (role === ProjectMembershipRole.Member) return "Developer"; if (role === ProjectMembershipRole.Viewer) return "Viewer"; if (role === ProjectMembershipRole.NoAccess) return "No Access"; return role; }; export const UserProjectRow = ({ membership: { id, project, user, roles }, handlePopUpOpen }: Props) => { const { workspaces } = useWorkspace(); const router = useRouter(); const isAccessible = useMemo(() => { const workspaceIds = new Map(); workspaces?.forEach((workspace) => { workspaceIds.set(workspace.id, true); }); return workspaceIds.has(project.id); }, [workspaces, project]); return (