// ----------------------------------------------------------------------------- // Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec) // Auteur : Simon-Pierre Boucher — contact@spboucher.ai // fiche/useFicheData.ts : données annexes de la fiche véhicule — rappels // Transports Canada (/api/vehicles/{uid}/recalls), chargés dès que le // véhicule est connu. Le reste (marché, KA Score, fiche constructeur, // similaires, historique, autres offres) arrive avec /api/vehicles/{uid}. // ----------------------------------------------------------------------------- import { useEffect, useState } from "react"; import { Recall, Vehicle, fetchVehicleRecalls } from "../api"; export type Res = | { status: "idle" | "loading" } | { status: "ok"; data: T } | { status: "error"; error: string } | { status: "na" }; export default function useFicheData(v: Vehicle | null) { const [recalls, setRecalls] = useState>({ status: "idle" }); const [tick, setTick] = useState(0); useEffect(() => { if (!v) return; let alive = true; setRecalls({ status: "loading" }); fetchVehicleRecalls(v.uid) .then((r) => { if (alive) setRecalls({ status: "ok", data: r.recalls }); }) .catch((e) => { if (alive) setRecalls(/API 404/.test(String(e)) ? { status: "na" } : { status: "error", error: String(e) }); }); return () => { alive = false; }; }, [v, tick]); return { recalls, retry: () => setTick((t) => t + 1) }; }