"use client"; import { useState, useEffect } from "react"; interface DailyCheckinButtonProps { initialStreak?: number; hasCheckedInToday?: boolean; onCheckin: () => Promise<{ success: boolean; points: number; streak: number }>; } export default function DailyCheckinButton({ initialStreak = 0, hasCheckedInToday = false, onCheckin }: DailyCheckinButtonProps) { const [streak, setStreak] = useState(initialStreak); const [checkedIn, setCheckedIn] = useState(hasCheckedInToday); const [loading, setLoading] = useState(false); const [showSuccess, setShowSuccess] = useState(false); const [earnedPoints, setEarnedPoints] = useState(0); const handleCheckin = async () => { if (checkedIn || loading) return; setLoading(true); try { const result = await onCheckin(); if (result.success) { setCheckedIn(true); setStreak(result.streak); setEarnedPoints(result.points); setShowSuccess(true); setTimeout(() => setShowSuccess(false), 3000); } } catch (error) { console.error("Check-in failed:", error); } finally { setLoading(false); } }; return (
{streak} Day Streak

Daily Check-in

Come back every day to build your streak!

{checkedIn ? "Come back tomorrow to continue your streak!" : "Earn points and extend your streak"}

{showSuccess && (
+{earnedPoints} Points!
)}
); }