import { useQuery } from "@tanstack/react-query"; import { HardDrive } from "lucide-react"; import { formatBytes } from "@/lib/image-utils"; import { getAccountFileStorageUsage } from "@/services/api/resources"; export const assetStorageUsageQueryKey = ["account-file-storage-usage"] as const; export function AssetStorageUsage() { const query = useQuery({ queryKey: assetStorageUsageQueryKey, queryFn: getAccountFileStorageUsage, refetchOnMount: "always", }); const usage = query.data; const percent = usage?.totalBytes ? Math.min(100, (usage.usedBytes / usage.totalBytes) * 100) : 0; const percentLabel = usage?.usedBytes && percent < 0.1 ? "<0.1%" : `${Math.round(percent * 10) / 10}%`; const full = Boolean(usage && usage.usedBytes >= usage.totalBytes); return (
账号容量 {usage ? ( <> {storageBytes(usage.usedBytes)} / {storageBytes(usage.totalBytes)} {percentLabel} ) : query.isError ? ( 容量统计暂时不可用。 ) : ( 正在统计已用容量… )}
); } function storageBytes(value: number) { return formatBytes(value) || "0 B"; }