import { Group, Table, Text, Badge, Menu, ActionIcon } from "@mantine/core"; import { useGroupMembersQuery, useRemoveGroupMemberMutation, } from "@/features/group/queries/group-query"; import { useParams } from "react-router-dom"; import React from "react"; import { IconDots } from "@tabler/icons-react"; import { modals } from "@mantine/modals"; import { CustomAvatar } from "@/components/ui/custom-avatar.tsx"; import useUserRole from "@/hooks/use-user-role.tsx"; import { useTranslation } from "react-i18next"; export default function GroupMembersList() { const { t } = useTranslation("group"); const { groupId } = useParams(); const { data, isLoading } = useGroupMembersQuery(groupId); const removeGroupMember = useRemoveGroupMemberMutation(); const { isAdmin } = useUserRole(); const onRemove = async (userId: string) => { const memberToRemove = { groupId: groupId, userId: userId, }; await removeGroupMember.mutateAsync(memberToRemove); }; const openRemoveModal = (userId: string) => modals.openConfirmModal({ title: t("Remove group member"), children: ( {t( "Are you sure you want to remove this user from the group? The user will lose access to resources this group has access to.", )} ), centered: true, labels: { confirm: t("Delete"), cancel: t("Cancel") }, confirmProps: { color: "red" }, onConfirm: () => onRemove(userId), }); return ( <> {data && ( {t("User")} {t("Status")} {data?.items.map((user, index) => (
{user.name} {user.email}
{t("Active")} {isAdmin && ( openRemoveModal(user.id)}> {t("Remove group member")} )}
))}
)} ); }