'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 (