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 ? (