Procházet zdrojové kódy

Close out P0-2 (Bob fixed in builder), correct hasError doc, prep P1-1

- TASKS.md: remove P0-2 (foutafhandeling HorecagelegenhedenOverzicht,
  Bob shipped a standaardplaatje-on-empty/error fix directly in the
  builder). Unblock P1-1 (rollout to other pages) and point it at the
  new reference pattern, with a note to verify exact builder steps
  before copying.
- CLAUDE.md: correct the stale "no hasError handling anywhere" claim
  — ApiCallResponse already catches network errors (statusCode -1,
  never throws), the real bug was a synchronous crash on
  getJsonField(null, ...).toList(). Document Bob's fix and flag that
  the Carousel "Empty List Widget" pattern doesn't automatically
  cover this null-jsonBody case.
bob před 1 měsícem
rodič
revize
8322340a1e
2 změnil soubory, kde provedl 27 přidání a 25 odebrání
  1. 17 7
      CLAUDE.md
  2. 10 18
      TASKS.md

+ 17 - 7
CLAUDE.md

@@ -258,13 +258,23 @@ letterlijke `[varname]`-tekst meegestuurd i.p.v. de testwaarde.
   dode code, niet meenemen in opschoonacties.
 - Favorieten/login zijn P0. Backend-endpoint bestaat al; Drupal 7
   views die de respons voeden hebben soms nog aanpassing nodig.
-- **Geen enkele "hasError"/netwerkfout-afhandeling bevestigd aanwezig**
-  in de app (gecheckt 2026-08-04, hele `lib/` doorzocht) — elke
-  FutureBuilder die alleen op `!snapshot.hasData` checkt, blijft bij
-  een mislukte call voor altijd op de laadspinner hangen. Ga er dus
-  niet van uit dat er ergens al een werkend voorbeeldpatroon staat om
-  te kopiëren — dit moet nog van de grond af ontworpen worden (zie
-  P0-taak in `TASKS.md`).
+- **Fout-/leeg-afhandeling bij API-calls: het "geen enkele
+  FutureBuilder checkt op meer dan `!snapshot.hasData`"-beeld klopte
+  niet helemaal (gecorrigeerd 2026-08-04).** `ApiCallResponse` vangt
+  netwerkfouten zelf op (`api_manager.dart`, `catch (e) => ApiCallResponse(null, {}, -1, ...)`)
+  — de Future voltooit dus altijd, geen oneindige spinner. Het
+  eigenlijke risico was een **synchrone crash**: bij `jsonBody: null`
+  gooit `getJsonField(null, ...).toList()` een `NoSuchMethodError`
+  vóórdat de lijst-widget ooit gebouwd wordt. Bob heeft hiervoor op
+  `HorecagelegenhedenOverzicht` een werkend patroon gebouwd
+  (2026-08-04, rechtstreeks in de builder): bij lege/mislukte data
+  toont elke tab nu een standaardplaatje i.p.v. te crashen. **Exacte
+  builder-stappen (welke widget/property) nog niet gedocumenteerd** —
+  bij het uitrollen naar andere pagina's (zie `TASKS.md` P1-1) eerst
+  navragen/naspeuren i.p.v. blind het Carousel-"Empty List
+  Widget"-patroon hierboven te kopiëren, want dat lost alleen
+  `itemCount: 0` op, niet per se de `null`-jsonBody-crash die hier de
+  kern van het probleem was.
 
 ## Samenwerken met Bob
 

+ 10 - 18
TASKS.md

@@ -61,19 +61,6 @@ is de klik niet aangekomen (zelfde rechterpaneel-clipping-risico als
 waarom Claude 'm niet zelf kon doen, zie `CLAUDE.md`). **Bob: kun je
 nogmaals checken of de checkbox echt aanstaat?**
 
-**P0-2 · Eigenaar: andere Claude-sessie — bezig.** Foutafhandeling
-ontbreekt op HorecagelegenhedenOverzicht. **Niet oppakken vanuit deze
-sessie of een nieuwe sessie zonder eerst bij Bob te checken of de
-andere sessie nog bezig is.** Bevinding van die sessie (accurater dan
-eerdere aanname hier): het is geen "spinner blijft draaien"-bug maar
-een **crash** — bij een mislukte API-call (`statusCode: -1, jsonBody:
-null`) doet de code `getJsonField(null, '$').toList()` →
-crash, op 6 identieke plekken in
-`lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht/horecagelegenheden_overzicht_widget.dart`
-(regels 327/511/695/879/1063/1247, telkens direct na de
-`!snapshot.hasData`-check). Bob's antwoord blijft gelden: gewoon
-skippen zodra er iets misgaat, geen melding/retry-knop nodig.
-
 **P0-3 · Eigenaar: Bob — geblokkeerd op designvraag.** Hartje-icoon op
 gemeente. Bob koos: heart ergens anders dan de gemeente-dropdown zelf
 (die blijft ongewijzigd). **2026-08-04, Bob's antwoord:** hartje naast
@@ -113,11 +100,16 @@ voor browse-endpoints. Drupal-niveau, geen Claude-taak.
 
 ## P1 — snel na livegang
 
-**P1-1 · Eigenaar: Claude, ná P0-2.** Loading/foutafhandeling-patroon
-uitrollen naar overige lijst-/detailpagina's. Zodra het patroon uit
-P0-2 (Horeca-overzicht) staat, hetzelfde toepassen op Event,
-HorecagelegenheidCurrent, sliders — nu nergens een echte foutstatus,
-alleen "geen data nog".
+**P1-1 · Eigenaar: Claude.** Loading/foutafhandeling-patroon uitrollen
+naar overige lijst-/detailpagina's. Referentiepatroon staat inmiddels
+op `HorecagelegenhedenOverzicht` (Bob, 2026-08-04, in de builder: bij
+lege/mislukte data toont elke tab nu een standaardplaatje i.p.v. te
+crashen of te blijven laden — zie `CLAUDE.md`
+Domein/architectuurcontext). **Exacte builder-stappen nog niet
+gedocumenteerd** — check bij oppakken eerst met een verse export welke
+widget/property Bob gebruikt heeft (vermoedelijk iets als "Empty List
+Widget" op de MasonryGridView, analoog aan de Carousel-fix), en pas
+daarna hetzelfde toe op Event, HorecagelegenheidCurrent, sliders.
 
 **P1-2 · Eigenaar: Claude.** Overflow op Home-pagina. Live
 gereproduceerd tijdens testen (2026-08-03): `RenderFlex overflowed by