import { faPlus } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { createNotification } from "@app/components/notifications"; import { OrgPermissionCan } from "@app/components/permissions"; import { DeleteActionModal, IconButton, Tooltip } from "@app/components/v2"; import { OrgPermissionGroupActions, OrgPermissionSubjects, useOrganization } from "@app/context"; import { useOidcManageGroupMembershipsEnabled, useRemoveUserFromGroup } from "@app/hooks/api"; import { usePopUp } from "@app/hooks/usePopUp"; import { AddGroupMembersModal } from "../AddGroupMemberModal"; import { GroupMembersTable } from "./GroupMembersTable"; type Props = { groupId: string; groupSlug: string; }; export const GroupMembersSection = ({ groupId, groupSlug }: Props) => { const { popUp, handlePopUpOpen, handlePopUpToggle } = usePopUp([ "addGroupMembers", "removeMemberFromGroup" ] as const); const { currentOrg } = useOrganization(); const { data: isOidcManageGroupMembershipsEnabled = false } = useOidcManageGroupMembershipsEnabled(currentOrg.id); const { mutateAsync: removeUserFromGroupMutateAsync } = useRemoveUserFromGroup(); const handleRemoveUserFromGroup = async (username: string) => { try { await removeUserFromGroupMutateAsync({ groupId, username, slug: groupSlug }); createNotification({ text: `Successfully removed user ${username} from the group`, type: "success" }); handlePopUpToggle("removeMemberFromGroup", false); } catch { createNotification({ text: `Failed to remove user ${username} from the group`, type: "error" }); } }; return (