import { Table, Group, Text, Anchor, VisuallyHidden } from "@mantine/core"; import { useGetGroupsQuery } from "@/features/group/queries/group-query"; import { Link } from "react-router-dom"; import { IconGroupCircle } from "@/components/icons/icon-people-circle.tsx"; import { useTranslation } from "react-i18next"; import { formatMemberCount } from "@/lib"; import { IGroup } from "@/features/group/types/group.types.ts"; import Paginate from "@/components/common/paginate.tsx"; import { queryClient } from "@/main.tsx"; import { getGroupMembers } from "@/features/group/services/group-service.ts"; import { AutoTooltipText } from "@/components/ui/auto-tooltip-text.tsx"; import { SearchInput } from "@/components/common/search-input.tsx"; import NoTableResults from "@/components/common/no-table-results.tsx"; import { usePaginateAndSearch } from "@/hooks/use-paginate-and-search.tsx"; import rowClasses from "@/components/ui/clickable-table-row.module.css"; import GroupActionMenu from "@/features/group/components/group-action-menu.tsx"; export default function GroupList() { const { t } = useTranslation(); const { search, cursor, goNext, goPrev, handleSearch } = usePaginateAndSearch(); const { data, isLoading } = useGetGroupsQuery({ cursor, query: search }); const prefetchGroupMembers = (groupId: string) => { queryClient.prefetchQuery({ queryKey: ["groupMembers", groupId, {}], queryFn: () => getGroupMembers(groupId, {}), }); }; return ( <> {t("Group")} {t("Members")} {t("Actions")} {data?.items.length > 0 ? ( data?.items.map((group: IGroup, index: number) => ( prefetchGroupMembers(group.id)}>
{group.name} {group.description}
{formatMemberCount(group.memberCount, t)}
)) ) : ( )}
{data?.items.length > 0 && ( goNext(data?.meta?.nextCursor)} onPrev={goPrev} /> )} ); }