"use client"; import { useQuery } from "@tanstack/react-query"; import { Link } from "@tanstack/react-router"; import { Button } from "@workspace/ui/components/button"; import { HoverCard, HoverCardContent, HoverCardTrigger, } from "@workspace/ui/components/hover-card"; import { getUserDetail, getUserSubscribeById, } from "@workspace/ui/services/admin/user"; import { formatBytes } from "@workspace/ui/utils/formatting"; import { useTranslation } from "react-i18next"; import { Display } from "@/components/display"; import { formatDate } from "@/utils/common"; // import EditUserGroupDialog from "./edit-user-group-dialog"; // import { getUserGroupList } from "@workspace/ui/services/admin/group"; export function UserSubscribeDetail({ id, enabled, hoverCard = false, }: { id: number; enabled: boolean; hoverCard?: boolean; }) { const { t } = useTranslation("user"); const { data } = useQuery({ enabled: id !== 0 && enabled, queryKey: ["getUserSubscribeById", id], queryFn: async () => { const { data } = await getUserSubscribeById({ id }); return data.data; }, }); // Fetch user groups for display // const { data: groupsData } = useQuery({ // enabled: id !== 0 && enabled, // queryKey: ["getUserGroupList"], // queryFn: async () => { // const { data } = await getUserGroupList({ // page: 1, // size: 100, // }); // return data.data?.list || []; // }, // }); if (!id) return "--"; const usedTraffic = data ? data.upload + data.download : 0; const totalTraffic = data?.traffic || 0; const remainingTraffic = totalTraffic > 0 ? totalTraffic - usedTraffic : 0; // Get user group info from data.user // const userGroupId = typeof data?.user?.user_group_id === 'number' ? data?.user?.user_group_id : 0; // const groupLocked = data?.user?.group_locked || false; // const groupIds = userGroupId > 0 ? [userGroupId] : []; // const groupNames = userGroupId > 0 // ? groupsData?.find((g: API.UserGroup) => g.id === userGroupId)?.name || "--" // : "--"; const subscribeContent = (

{t("subscriptionInfo")}

  • {t("subscriptionId")} {data?.id || "--"}
  • {t("subscriptionName")} {data?.subscribe?.name || "--"}
  • {t("token")}
    {data?.token || "--"}
  • {t("trafficUsage")} {data ? totalTraffic === 0 ? `${formatBytes(usedTraffic)} / ${t("unlimited")}` : `${formatBytes(usedTraffic)} / ${formatBytes(totalTraffic)}` : "--"}
  • {t("remainingTraffic")} {data ? totalTraffic === 0 ? t("unlimited") : formatBytes(remainingTraffic) : "--"}
  • {t("startTime")} {data?.start_time ? formatDate(data.start_time) : "--"}
  • {t("expireTime")} {data?.expire_time ? formatDate(data.expire_time) : "--"}
  • {/*
  • {t("userGroup")}
    {groupNames || "--"} {data?.id && ( {t("edit", "Edit")} } onSubmit={async () => { window.location.reload(); return true; }} /> )}
  • {t("groupLocked")} {groupLocked ? t("yes", "Yes") : t("no", "No")}
  • */}
{!hoverCard && (

{t("userInfo")} {/* Removed link to legacy user detail page */}

)}
); if (hoverCard) { return ( {subscribeContent} ); } return subscribeContent; } export function UserDetail({ id }: { id: number }) { const { t } = useTranslation("user"); const { data } = useQuery({ enabled: id !== 0, queryKey: ["getUserDetail", id], queryFn: async () => { const { data } = await getUserDetail({ id }); return data.data; }, }); if (!id) return "--"; const firstMethod = data?.auth_methods[0]; const isDevice = firstMethod?.auth_type === "device"; const deviceNo = (data as any)?.user_devices?.[0]?.device_no; const rawIdentifier = firstMethod?.auth_identifier || ""; const identifier = isDevice ? deviceNo || rawIdentifier : rawIdentifier; return (
  • ID {data?.id}
  • {t("balance", "Balance")}
  • {t("giftAmount", "Gift Amount")}
  • {t("commission", "Commission")}
  • {t("createdAt", "Created At")} {data?.created_at && formatDate(data?.created_at)}
); }