'use client'; import { Display } from '@/components/display'; import { queryApplicationConfig } from '@/services/user/subscribe'; import { queryUserSubscribe } from '@/services/user/user'; import { Icon } from '@iconify/react'; import { useQuery } from '@tanstack/react-query'; import { Accordion, AccordionContent, AccordionItem, AccordionTrigger, } from '@workspace/ui/components/accordion'; import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, } from '@workspace/ui/components/alert-dialog'; import { Button } from '@workspace/ui/components/button'; import { Card, CardContent, CardHeader, CardTitle } from '@workspace/ui/components/card'; import { Separator } from '@workspace/ui/components/separator'; import { Tabs, TabsList, TabsTrigger } from '@workspace/ui/components/tabs'; import { getNextResetDate, isBrowser } from '@workspace/ui/utils'; import { differenceInDays } from 'date-fns'; import { useTranslations } from 'next-intl'; import Image from 'next/image'; import Link from 'next/link'; import { QRCodeCanvas } from 'qrcode.react'; import { useState } from 'react'; import { toast } from 'sonner'; import useGlobalStore from '@/config/use-global'; import { getStat } from '@/services/common/common'; import { getPlatform } from '@/utils/common'; import CopyToClipboard from 'react-copy-to-clipboard'; import Renewal from '../order/renewal'; import ResetTraffic from '../order/reset-traffic'; import Subscribe from '../subscribe/page'; export default function Content() { const t = useTranslations('dashboard'); const { getUserSubscribe, getAppSubLink } = useGlobalStore(); const [protocol, setProtocol] = useState(''); const { data: userSubscribe = [] } = useQuery({ queryKey: ['queryUserSubscribe'], queryFn: async () => { const { data } = await queryUserSubscribe(); return data.data?.list || []; }, }); const { data: application } = useQuery({ queryKey: ['queryApplicationConfig'], queryFn: async () => { const { data } = await queryApplicationConfig(); return data.data as API.ApplicationResponse; }, }); const [platform, setPlatform] = useState(getPlatform()); const { data } = useQuery({ queryKey: ['getStat'], queryFn: async () => { const { data } = await getStat({ skipErrorHandler: true, }); return data.data; }, refetchOnWindowFocus: false, }); return ( <> {userSubscribe.length ? ( <>

{t('mySubscriptions')}

setPlatform(value as keyof API.ApplicationResponse)} className='w-full max-w-full md:w-auto' > {application && Object.keys(application)?.map((item) => ( {item} ))} {data?.protocol && data?.protocol.length > 1 && ( {['all', ...(data?.protocol || [])].map((item) => ( {item} ))} )}
{userSubscribe.map((item) => ( {item.subscribe.name}
{t('prompt')} {t('confirmResetSubscription')} {t('cancel')} toast.success(t('resetSuccess'))}> {t('confirm')}
  • {t('used')}
  • {t('totalTraffic')}
  • {t('nextResetDays')} {differenceInDays(getNextResetDate(item.start_time), new Date()) || t('unknown')}
  • {t('expirationDays')} {differenceInDays(new Date(item.expire_time), new Date()) || t('unknown')}
{getUserSubscribe(item.token, protocol)?.map((url, index) => (
{t('subscriptionUrl')} {index + 1} { if (result) { toast.success(t('copySuccess')); } }} > { e.stopPropagation(); }} > {t('copy')}
{application && application[platform]?.map((app) => (
{app.name} {app.icon && ( {app.name} )}
{ const href = getAppSubLink(app.subscribe_type, url); if (isBrowser() && href) { window.location.href = href; } else if (result) { toast.success( <>

{t('copySuccess')}

{t('manualImportMessage')}

, ); } }} >
))}
{t('qrCode')} {t('scanToSubscribe')}
))}
))} ) : ( <>

{t('purchaseSubscription')}

)} ); }