export type RawSeasonParticipant = { personId: number; name: string; birthDate?: string; imageUrl?: string | null; partner?: { personId: number; name: string; birthDate?: string; imageUrl?: string | null; }; }; export type RawSeason = { seasonId: number; seasonNumber: number; startDate?: string; endDate?: string | null; seasonParticipants: RawSeasonParticipant[]; show?: number; moderators?: unknown[]; }; export type SeasonParticipant = { id: number; name: string; birthYear?: number; imageUri: string; }; export type Season = { id: number; showId: number; seasonNumber: number; startDate?: string; endDate?: string | null; participants: SeasonParticipant[]; }; const SEASON_BASE_URL = "https://fltr-app.de/api/shows"; export async function getSeason( showId: number, seasonNumber: number ): Promise { const url = `${SEASON_BASE_URL}/${showId}/seasons/${seasonNumber}`; try { const apiKey = process.env.EXPO_PUBLIC_API_KEY; console.log("[getSeason] Fetch:", url); const res = await fetch(url, { headers: { Accept: "application/json", "Content-Type": "application/json", "X-API-Key": apiKey ?? "", }, }); console.log("[getSeason] Status:", res.status); if (res.status === 404) return null; if (!res.ok) throw new Error("Season fetch failed " + res.status); const raw: RawSeason = await res.json(); const participants: SeasonParticipant[] = Array.isArray( raw.seasonParticipants ) ? raw.seasonParticipants.map((p) => ({ id: p.personId, name: p.name, birthYear: p.birthDate ? Number(p.birthDate.slice(0, 4)) : undefined, imageUri: p.imageUrl ?? `https://i.pravatar.cc/300?img=${Math.floor(Math.random() * 70) + 1}`, })) : []; return { id: raw.seasonId, showId, seasonNumber: raw.seasonNumber, startDate: raw.startDate, endDate: raw.endDate, participants, }; } catch (e) { console.error("getSeason error:", e); throw e; } }