SPB Git forge

spb/auto-ka

Public
61commits 1branches 0releases
14.4 MBsize
maindefault branch
13 days agolast push
Python 61.6% TypeScript 20.9% CSS 11.4% JavaScript 5.1% HTML 1.1%
1.5 KB · 32 lines typescript
Raw Blame History
1// -----------------------------------------------------------------------------2// Auto-Ka — Agrégateur de voitures usagées à vendre (province de Québec)3// Auteur : Simon-Pierre Boucher — contact@spboucher.ai4// fiche/useFicheData.ts : données annexes de la fiche véhicule — rappels5//   Transports Canada (/api/vehicles/{uid}/recalls), chargés dès que le6//   véhicule est connu. Le reste (marché, KA Score, fiche constructeur,7//   similaires, historique, autres offres) arrive avec /api/vehicles/{uid}.8// -----------------------------------------------------------------------------9import { useEffect, useState } from "react";10import { Recall, Vehicle, fetchVehicleRecalls } from "../api";1112export type Res<T> =13  | { status: "idle" | "loading" }14  | { status: "ok"; data: T }15  | { status: "error"; error: string }16  | { status: "na" };1718export default function useFicheData(v: Vehicle | null) {19  const [recalls, setRecalls] = useState<Res<Recall[]>>({ status: "idle" });20  const [tick, setTick] = useState(0);21  useEffect(() => {22    if (!v) return;23    let alive = true;24    setRecalls({ status: "loading" });25    fetchVehicleRecalls(v.uid)26      .then((r) => { if (alive) setRecalls({ status: "ok", data: r.recalls }); })27      .catch((e) => { if (alive) setRecalls(/API 404/.test(String(e)) ? { status: "na" } : { status: "error", error: String(e) }); });28    return () => { alive = false; };29  }, [v, tick]);30  return { recalls, retry: () => setTick((t) => t + 1) };31}32