'use client'; import { useGetSevenDaysSignList, useSignIn } from '@/hooks/useHome'; import { SignInListOutput } from '@/services/home/types'; import { useQueryClient } from '@tanstack/react-query'; import { homeKeys } from '@/lib/query-keys'; import { CheckInCard } from './CheckInCard'; import { useEffect, useRef } from 'react'; import { toast } from 'sonner'; export function CheckInGrid() { const queryClient = useQueryClient(); const { data: signListData, isLoading } = useGetSevenDaysSignList(); const signInMutation = useSignIn(); const hasSignRef = useRef(false); useEffect(() => { const initializeCheckIn = async () => { if (hasSignRef.current) return; hasSignRef.current = true; try { // 先进行签到 const resp = await signInMutation.mutateAsync(); if (resp) { toast.success('Check-in Successful!'); } // 签到成功后再获取列表数据 await queryClient.invalidateQueries({ queryKey: homeKeys.getSevenDaysSignList(), }); await queryClient.invalidateQueries({ queryKey: ['wallet'], }); } catch (error) { console.error('初始化签到失败:', error); // 即使签到失败,也要获取列表数据显示界面 queryClient.invalidateQueries({ queryKey: homeKeys.getSevenDaysSignList(), }); queryClient.invalidateQueries({ queryKey: ['wallet'], }); } }; if (signListData) { initializeCheckIn(); } }, [signListData]); if (isLoading) { return (