import { faEllipsisV, faFolder, faPlus, faTrash } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { format, formatDistance } from "date-fns"; import { AnimatePresence, motion } from "framer-motion"; import { twMerge } from "tailwind-merge"; import { createNotification } from "@app/components/notifications"; import { ProjectPermissionCan } from "@app/components/permissions"; import { DeleteActionModal, EmptyState, IconButton, Table, TableContainer, TableSkeleton, Tag, TBody, Td, Th, THead, Tooltip, Tr } from "@app/components/v2"; import { ProjectPermissionActions, ProjectPermissionMemberActions, ProjectPermissionSub, useProjectPermission, useUser } from "@app/context"; import { usePopUp } from "@app/hooks"; import { useDeleteProjectUserAdditionalPrivilege, useListProjectUserPrivileges } from "@app/hooks/api"; import { TWorkspaceUser } from "@app/hooks/api/types"; import { MembershipProjectAdditionalPrivilegeModifySection } from "./MembershipProjectAdditionalPrivilegeModifySection"; type Props = { membershipDetails: TWorkspaceUser; }; export const MemberProjectAdditionalPrivilegeSection = ({ membershipDetails }: Props) => { const { user } = useUser(); const userId = user?.id; const { popUp, handlePopUpOpen, handlePopUpToggle, handlePopUpClose } = usePopUp([ "deletePrivilege", "modifyPrivilege" ] as const); const { permission } = useProjectPermission(); const { mutateAsync: deletePrivilege } = useDeleteProjectUserAdditionalPrivilege(); const { data: userProjectPrivileges, isPending } = useListProjectUserPrivileges( membershipDetails?.id ); const isOwnProjectMembershipDetails = userId === membershipDetails?.user?.id; const handlePrivilegeDelete = async () => { const { id } = popUp?.deletePrivilege?.data as { id: string }; try { await deletePrivilege({ privilegeId: id, projectMembershipId: membershipDetails.id }); createNotification({ type: "success", text: "Successfully removed the privilege" }); handlePopUpClose("deletePrivilege"); } catch (err) { console.log(err); createNotification({ type: "error", text: "Failed to delete privilege" }); } }; return (
| Name | Duration | |
|---|---|---|
| {privilegeDetails.slug} |
|
|