import { useState, useEffect, useCallback } from 'react'; import { getCalcuttaCompetition } from '@bettoredge/api'; import type { CalcuttaCompetitionProps, CalcuttaRoundProps, CalcuttaAuctionItemProps, CalcuttaParticipantProps, CalcuttaPayoutRuleProps, CalcuttaItemResultProps, CalcuttaBidProps, CalcuttaEscrowProps, } from '@bettoredge/types'; export interface CalcuttaCompetitionState { loading: boolean; competition?: CalcuttaCompetitionProps; rounds: CalcuttaRoundProps[]; items: CalcuttaAuctionItemProps[]; participants: CalcuttaParticipantProps[]; payout_rules: CalcuttaPayoutRuleProps[]; item_results: CalcuttaItemResultProps[]; my_bids: CalcuttaBidProps[]; my_escrow?: CalcuttaEscrowProps; } export const useCalcuttaCompetition = (calcutta_competition_id?: string) => { const [state, setState] = useState({ loading: false, rounds: [], items: [], participants: [], payout_rules: [], item_results: [], my_bids: [], }); const fetchCompetition = useCallback(async () => { if (!calcutta_competition_id) return; setState(prev => ({ ...prev, loading: true })); try { const resp = await getCalcuttaCompetition(calcutta_competition_id); setState({ loading: false, competition: resp.competition, rounds: resp.rounds, items: resp.items, participants: resp.participants, payout_rules: resp.payout_rules, item_results: resp.item_results, my_bids: resp.my_bids, my_escrow: resp.my_escrow, }); } catch { setState(prev => ({ ...prev, loading: false })); } }, [calcutta_competition_id]); useEffect(() => { fetchCompetition(); }, [fetchCompetition]); return { ...state, refresh: fetchCompetition }; };