"use client" import { useState, useEffect } from "react" import { Button } from "@/components/ui/button" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { Coins, Trophy, HelpCircle } from "lucide-react" import { getCheckinStatus, performCheckin, CheckinData } from "@/api/checkin" export default function CheckinPage() { const [checkinData, setCheckinData] = useState({ hasCheckedInToday: false, points: 0, lastCheckinDate: null, pointsHistory: [], }) const [isLoading, setIsLoading] = useState(false) const [showTip, setShowTip] = useState(false) const [isInitialLoading, setIsInitialLoading] = useState(true) /** * Fetch checkin status */ const fetchCheckinStatus = async () => { try { setIsInitialLoading(true) const data = await getCheckinStatus() setCheckinData(data) } catch (error) { console.error('Failed to fetch checkin status:', error) // Keep default state } finally { setIsInitialLoading(false) } } useEffect(() => { fetchCheckinStatus() }, []) /** * Perform checkin operation */ const handleCheckin = async () => { if (checkinData.hasCheckedInToday) return try { setIsLoading(true) const response = await performCheckin() if (response.success) { // Refresh status after successful checkin await fetchCheckinStatus() } } catch (error) { console.error('Checkin failed:', error) } finally { setIsLoading(false) } } if (isInitialLoading) { return (
Loading...
) } return (
{/* Checkin status card */}

Daily Check-in

Check in to earn credits, credits valid for 7 days

{showTip && (

Check-in Rules

• Daily check-in earns 100 credits

• Credits are valid for 7 days

• Expired credits will be automatically cleared

)}
Current Credits
{checkinData.points}
{/* Check-in button */}
) }