import { faPlus } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { createNotification } from "@app/components/notifications"; import { DeleteActionModal, IconButton } from "@app/components/v2"; import { useOrganization, useUser } from "@app/context"; import { useDeleteUserFromWorkspace, useGetOrgMembership } from "@app/hooks/api"; import { usePopUp } from "@app/hooks/usePopUp"; import { UserAddToProjectModal } from "./UserAddToProjectModal"; import { UserProjectsTable } from "./UserProjectsTable"; type Props = { membershipId: string; }; export const UserProjectsSection = ({ membershipId }: Props) => { const { user } = useUser(); const { currentOrg } = useOrganization(); const userId = user?.id || ""; const orgId = currentOrg?.id || ""; const { data: membership } = useGetOrgMembership(orgId, membershipId); const { mutateAsync: removeUserFromWorkspace } = useDeleteUserFromWorkspace(); const { popUp, handlePopUpOpen, handlePopUpClose, handlePopUpToggle } = usePopUp([ "addUserToProject", "removeUserFromProject" ] as const); const handleRemoveUser = async (projectId: string, username: string) => { try { await removeUserFromWorkspace({ projectId, usernames: [username], orgId }); createNotification({ text: "Successfully removed user from project", type: "success" }); } catch (error) { console.error(error); createNotification({ text: "Failed to remove user from the project", type: "error" }); } handlePopUpClose("removeUserFromProject"); }; return membership ? (

Projects

{userId !== membership.user.id && membership.status !== "invited" && ( { handlePopUpOpen("addUserToProject", { username: membership.user.username }); }} > )}
handlePopUpToggle("removeUserFromProject", isOpen)} onDeleteApproved={() => { const popupData = popUp?.removeUserFromProject?.data as { username: string; projectId: string; projectName: string; }; return handleRemoveUser(popupData.projectId, popupData.username); }} />
) : (
); };