export type PersonHistorySeasonRaw = { seasonId: number; show: number; seasonNumber: number; startDate?: string; endDate?: string | null; seasonParticipants: any[]; }; export type PersonHistoryEntry = { showId: number; seasonId: number; seasonNumber: number; partner?: { id: number; name: string; birthDate?: string; imageUri: string | null; } | null; }; const PERSON_API_BASE = "http://45.157.177.99:8080/persons"; export async function getPersonHistory( personId: number ): Promise { const url = `${PERSON_API_BASE}/${personId}/history`; try { console.log("[getPersonHistory] Fetch:", url); const res = await fetch(url); if (!res.ok) throw new Error("History fetch failed " + res.status); const data: unknown = await res.json(); if (!Array.isArray(data)) { console.warn("History expected array, got:", data); return []; } return (data as PersonHistorySeasonRaw[]).map((season) => { const me = season.seasonParticipants.find( (p) => p.person.personId === personId ); let partner: PersonHistoryEntry["partner"] = null; if (me?.partner?.person) { partner = { id: me.partner.person.personId, name: me.partner.person.name, imageUri: me.partner.person.imageUrl ?? null, }; } return { showId: season.show, seasonId: season.seasonId, seasonNumber: season.seasonNumber, partner, }; }); } catch (e) { console.error("getPersonHistory error:", e); return []; } }