import { getSubscription } from '@/services/user/portal'; import { useQuery } from '@tanstack/react-query'; import { Dialog, DialogContent, DialogTitle, DialogTrigger, } from '@workspace/airo-ui/components/dialog'; import { useRef, useState } from 'react'; import TabContent from '@/components/SubscribePlan/PlanContent/index'; import PlanTabs from '@/components/SubscribePlan/PlanTabs/PlanTabs'; import { Button } from '@workspace/airo-ui/components/button'; import { useTranslations } from 'next-intl'; const OfferDialog = () => { const t = useTranslations('components.offerDialog'); const tHome = useTranslations('components.home'); const [open, setOpen] = useState(false); const [tabValue, setTabValue] = useState<'year' | 'month'>('year'); const dialogRef = useRef(null); // 使用 useQuery 来管理请求 const { data = [], isLoading, error, refetch, } = useQuery({ queryKey: ['subscription'], queryFn: async () => { try { const response = await getSubscription({ skipErrorHandler: true }); // 确保返回有效的数组,避免 undefined const list = response.data?.data?.list || []; return list.filter((v) => v.unit_time === 'Month') as API.Subscribe[]; } catch (err) { // 自定义错误处理 console.error('获取订阅数据失败:', err); // 返回空数组而不是抛出错误,避免 queryFn 返回 undefined return [] as API.Subscribe[]; } }, enabled: true, // 初始不执行,手动控制 retry: 1, // 失败时重试1次 refetchOnWindowFocus: true, }); return (
{t('selectPlan')}
{t('selectYourPlan')}
); }; export default OfferDialog;