import { Modal, ModalContent, ModalHeader, ModalBody, Button, useDisclosure, Spinner, Table, TableBody, TableCell, TableColumn, TableHeader, TableRow, Chip, } from '@nextui-org/react'; import { QRCodeSVG } from 'qrcode.react'; import { toast } from 'sonner'; import { PlusIcon } from '@web/components/PlusIcon'; import dayjs from 'dayjs'; import { StatusDropdown } from '@web/components/StatusDropdown'; import { trpc } from '@web/utils/trpc'; import { statusMap } from '@web/constants'; const AccountPage = () => { const { isOpen, onOpen, onClose, onOpenChange } = useDisclosure(); const { refetch, data, isFetching } = trpc.account.list.useQuery({}); const { mutateAsync: updateAccount } = trpc.account.edit.useMutation({}); const { mutateAsync: deleteAccount } = trpc.account.delete.useMutation({}); const { mutateAsync: addAccount } = trpc.account.add.useMutation({}); const { mutateAsync, data: loginData } = trpc.platform.createLoginUrl.useMutation(); trpc.platform.getLoginResult.useQuery( { id: loginData?.uuid ?? '', }, { refetchInterval: (data) => { if (data?.message === 'waiting') { return 2000; } return false; }, refetchIntervalInBackground: true, enabled: !!loginData?.uuid, async onSuccess(data) { if (data.message === 'success') { const name = data.username!; if (data.vid && data.token) { await addAccount({ id: `${data.vid}`, name, token: data.token }); onClose(); toast.success('添加成功', { description: `用户名:${name}(${data.vid})`, }); refetch(); } } }, }, ); return (