"use client" // Frittstående rundeføring (ADR-033) -- runder eid direkte av en BRUKER // (app_user), ikke en organisasjon. Presentasjon fra V0, datalag skrevet om // fra mock til ekte fetch mot /rounds (samme mønster som resten av appen). import { useEffect, useState } from "react" import { useRouter } from "next/navigation" import Link from "next/link" import { Loader2, Plus, ClipboardList } from "lucide-react" import { Button } from "@/components/ui/button" import { Wordmark } from "@/components/wordmark" import { RoundCard, type Round } from "@/components/round-card" import { ArrowLeft } from "lucide-react" type ApiRoundParticipant = { id: string is_owner: boolean guest_name: string | null counts_for_handicap: boolean score_differential: number | null } type ApiRound = { id: string course_name_snapshot: string tee_name_snapshot: string played_at: string holes_planned: number completed_at: string | null participants: ApiRoundParticipant[] owner_holes_played: number owner_total_score: number | null owner_score_to_par: number | null } function toRound(r: ApiRound): Round { const owner = r.participants.find((p) => p.is_owner) const differential = owner?.counts_for_handicap ? owner.score_differential : null return { id: r.id, courseName: r.course_name_snapshot, status: r.completed_at ? "completed" : "active", teeName: r.tee_name_snapshot, holes: r.holes_planned === 9 ? 9 : 18, date: r.played_at, playerCount: r.participants.length, holesPlayed: r.owner_holes_played, totalScore: r.owner_total_score ?? undefined, toPar: r.owner_score_to_par ?? undefined, differential, } } export function OwnRounds() { const router = useRouter() const [rounds, setRounds] = useState(null) const [error, setError] = useState(null) useEffect(() => { let cancelled = false async function load() { try { const res = await fetch("/rounds", { credentials: "include" }) if (res.status === 401) { router.replace("/") return } if (!res.ok) throw new Error(`rounds: ${res.status}`) const data: ApiRound[] = await res.json() if (!cancelled) setRounds(data.map(toRound)) } catch { if (!cancelled) setError("Klarte ikke å hente rundene dine. Prøv igjen om litt.") } } void load() return () => { cancelled = true } }, [router]) return (

Egne runder

Frittstående golfrunder du har registrert selv, uavhengig av turnering og klubb.

{error && (

{error}

)}
{rounds === null ? ( ) : rounds.length === 0 ? ( ) : (
    {rounds.map((round) => (
  • ))}
)}
) } function LoadingState() { return (
) } function EmptyState() { return (

Ingen runder ennå

Her dukker rundene dine opp etter hvert som du registrerer dem. Trykk på{" "} «Ny runde» øverst for å komme i gang.

) }