import { useQuery } from "@tanstack/react-query";
import {
Avatar,
AvatarFallback,
AvatarImage,
} from "@workspace/ui/components/avatar";
import { Badge } from "@workspace/ui/components/badge";
import {
Sheet,
SheetContent,
SheetHeader,
SheetTitle,
} from "@workspace/ui/components/sheet";
import { Skeleton } from "@workspace/ui/components/skeleton";
import {
Table,
TableBody,
TableCell,
TableHead,
TableHeader,
TableRow,
} from "@workspace/ui/components/table";
import {
getAdminUserInviteList,
getAdminUserInviteStats,
} from "@workspace/ui/services/admin/user";
import { useState } from "react";
import { useTranslation } from "react-i18next";
import { Display } from "@/components/display";
import { formatDate } from "@/utils/common";
interface UserInviteStatsSheetProps {
userId: number;
open: boolean;
onOpenChange: (open: boolean) => void;
}
export function UserInviteStatsSheet({
userId,
open,
onOpenChange,
}: UserInviteStatsSheetProps) {
const { t } = useTranslation("user");
const [page, setPage] = useState(1);
const pageSize = 200;
const { data: stats, isLoading: statsLoading } = useQuery({
queryKey: ["adminUserInviteStats", userId],
queryFn: async () => {
const { data } = await getAdminUserInviteStats({ user_id: userId });
return data.data;
},
enabled: open && !!userId,
});
const { data: listResult, isLoading: listLoading } = useQuery({
queryKey: ["adminUserInviteList", userId, page],
queryFn: async () => {
const { data } = await getAdminUserInviteList({
user_id: userId,
page,
size: pageSize,
});
return data.data;
},
enabled: open && !!userId,
});
const inviteList = listResult?.list ?? [];
const total = listResult?.total ?? 0;
const totalPages = Math.ceil(total / pageSize);
return (
{t("noInvitedUsers", "No invited users yet")}
{t("invitedUsers", "Invited Users")} ({total})
{listLoading ? (
{/* 分页 */}
{totalPages > 1 && (
{label}
{loading ? (