"use client"; import { useState } from "react"; import { useRouter } from "next/navigation"; import { api } from "@/lib/api/client"; import { GlassCard } from "@/components/ui/glass-card"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; export function MatchActions({ matchId, homeTeamId, awayTeamId, userTeamId, status, resultStatus, isLeagueManager, proposedAt, }: { matchId: string; homeTeamId: string; awayTeamId: string; userTeamId: string | null; status: string; resultStatus: string | null; isLeagueManager: boolean; proposedAt: string | null; }) { const router = useRouter(); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); async function run(fn: () => Promise) { setLoading(true); setError(null); try { await fn(); router.refresh(); } catch (e) { setError(e instanceof Error ? e.message : "Error"); } finally { setLoading(false); } } return (
{error &&

{error}

} {userTeamId && status !== "completed" && ( {proposedAt && (

Proposed: {new Date(proposedAt).toLocaleString()}

)}
{ e.preventDefault(); const fd = new FormData(e.currentTarget); run(async () => { const raw = fd.get("scheduled_at") as string; await api.matches.proposeSchedule( matchId, new Date(raw).toISOString() ); }); }} >
)} {userTeamId && status !== "completed" && (
{ e.preventDefault(); const fd = new FormData(e.currentTarget); run(() => api.matches.submitResult(matchId, { teamId: userTeamId!, homeScore: Number(fd.get("home_score")), awayScore: Number(fd.get("away_score")), }) ); }} >
)} {isLeagueManager && resultStatus === "pending_approval" && ( )} {isLeagueManager && (
{ e.preventDefault(); const fd = new FormData(e.currentTarget); run(() => api.matches.setResult(matchId, { homeScore: Number(fd.get("home_score")), awayScore: Number(fd.get("away_score")), note: (fd.get("note") as string) || undefined, }) ); }} >
)}
); }