'use client'; import { useEffect, useState } from 'react'; import api from '@/lib/api'; import { LoadingSpinner } from '@/components/LoadingSpinner'; import STRINGS from '@/constants/strings'; import { formatDateTime } from '@/lib/format'; interface PastWin { cycle_id: string; cycle_type: string; scheduled_at: string; pot_total_sats: number; pot_after_fee_sats: number | null; winner_name: string; winner_address: string | null; winning_ticket_serial: number | null; } export default function PastWinsPage() { const [wins, setWins] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { const loadWins = async () => { try { const response = await api.getPastWins(); setWins(response.data?.wins || []); } catch (err: any) { setError(err.message || 'Failed to load past wins'); } finally { setLoading(false); } }; loadWins(); }, []); if (loading) { return ; } if (error) { return (
⚠️ {error}

Please try again in a moment.

); } return (

{STRINGS.pastWins.title}

{STRINGS.pastWins.description}

{wins.length === 0 ? (
{STRINGS.pastWins.noWins}
) : (
{wins.map((win) => (
{win.cycle_type} • {formatDateTime(win.scheduled_at)}
{win.cycle_id.substring(0, 16)}...
{STRINGS.pastWins.pot}
{win.pot_total_sats.toLocaleString()} sats
{STRINGS.pastWins.winner}
{win.winner_name || 'Anon'}
{STRINGS.pastWins.address}
{win.winner_address || 'N/A'}
{STRINGS.pastWins.ticket}
{win.winning_ticket_serial !== null ? `#${win.winning_ticket_serial}` : 'N/A'}
{STRINGS.pastWins.drawTime}
{formatDateTime(win.scheduled_at)}
))}
)}
); }