"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 { getSigninStatus, performSignin, SigninData } from "@/api/signin" export default function SigninPage() { const [signinData, setSigninData] = useState({ has_signin: false, credits: 0 }) const [isLoading, setIsLoading] = useState(false) const [showTip, setShowTip] = useState(false) const [isInitialLoading, setIsInitialLoading] = useState(true) /** * Fetch signin status */ const fetchSigninStatus = async () => { try { setIsInitialLoading(true) const data = await getSigninStatus() setSigninData(data.data as SigninData) } catch (error) { console.error('Failed to fetch signin status:', error) // Keep default state } finally { setIsInitialLoading(false) } } useEffect(() => { fetchSigninStatus() }, []) /** * Perform signin operation */ const handleSignin = async () => { if (signinData.has_signin) return try { setIsLoading(true) const response = await performSignin() if (response.successful) { // Refresh status after successful signin await fetchSigninStatus() } } catch (error) { console.error('Signin failed:', error) } finally { setIsLoading(false) } } if (isInitialLoading) { return (
Loading...
) } return (
{/* Signin status card */}

Daily Sign-in

Sign in to earn credits. Credits are valid for 7 days

{showTip && (

Sign-in Rules

• Daily sign-in earns 100 credits

• Credits are valid for 7 days

• Expired credits will be automatically cleared

)}
Current Credits
{signinData.credits || 0}
{/* Sign-in button */}
) }