|
|
@@ -1,6 +1,26 @@
|
|
|
# Uitgaanskrant — takenlijst
|
|
|
|
|
|
-**Deze sessie (2026-08-23, sessie 45, code-only + Bob aanwezig achter
|
|
|
+**Deze sessie (2026-08-24/25, sessie 46, builder via Bob's gedeelde
|
|
|
+Chrome na expliciet akkoord in de chat, Bob gelijktijdig zelf actief op
|
|
|
+P2-7):** P1-7 volledig afgerond — **Restpunt A** (horeca-hartjes op
|
|
|
+`HorecagelegenheidoverzichtKaart` + `HorecagelegenheidCurrent` syncen nu
|
|
|
+ook naar Drupal via het bestaande `favorieten`-endpoint, zelfde patroon
|
|
|
+als het gemeente-hartje) en **Restpunt B** ("Wachtwoord wijzigen"-link
|
|
|
+op de Gebruiker-tab). Nieuw herbruikbaar recept ontdekt en vastgelegd
|
|
|
+in `CLAUDE.md`: een JSON-body-string met 1 ingesloten variabele bouw je
|
|
|
+via een kleine Custom Function (`favorietenBodyNode`), niet via het
|
|
|
+Custom-Action-argumentenpaneel zelf (geen concatenatie-optie op een kaal
|
|
|
+String-argument). Bevestigd via verse export (`flutter analyze`: 0
|
|
|
+errors) + een live `ff-run-fvm.sh`-build/launch op emulator-5554 (geen
|
|
|
+exceptions). Onderweg 2x geblokkeerd op de bekende geneste-Set-Variable-
|
|
|
+freeze, beide keren opgelost met een page-reload zonder dataverlies.
|
|
|
+P1-7 blijft als taak staan (Tab 1's categorie-SQL-patch wacht nog op
|
|
|
+Bob's bevestiging, zie hieronder) maar heeft geen eigen openstaande
|
|
|
+Claude-actie meer.
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+**Vorige sessie (2026-08-23, sessie 45, code-only + Bob aanwezig achter
|
|
|
zijn scherm, geen builder-automation zelf uitgevoerd — Bob pakt de
|
|
|
resterende builder-stappen zelf op in een andere chat):** takenlijst
|
|
|
doorgelopen op zoek naar zelfstandig oppakbaar werk — bleek vrijwel
|
|
|
@@ -1580,55 +1600,36 @@ leek overbodige scope-uitbreiding.)*
|
|
|
dat hier geverifieerd is). Enige resterende twijfel over deze hele
|
|
|
feature — verder geen actie nodig tenzij Bob over ~30 dagen wil
|
|
|
controleren dat de sweep echt draait.
|
|
|
-- **Restpunt A — horeca-hartjes syncen nog niet naar Drupal (2026-08-24,
|
|
|
- Claude, code-only geverifieerd via `grep`).** Het generieke
|
|
|
- `favorieten`-Services-endpoint (flag/unflag, node + taxonomy_term)
|
|
|
- bestaat sinds P1-26 en wordt al gebruikt door het gemeente-hartje op
|
|
|
- `HeaderButtonsComponent` — maar de twee oudere horeca-hartjes
|
|
|
- (`horecagelegenheidoverzicht_kaart_widget.dart:340`,
|
|
|
- `horecagelegenheid_current_widget.dart:370`) doen nog steeds alleen
|
|
|
- een lokale `FFAppState().favorieteHorecaNids`-add/remove, geen
|
|
|
- `drupalRequest`-aanroep — botst met Bob's beslissing 1 hieronder
|
|
|
- ("Drupal-gesynchroniseerd, niet puur lokaal"). **Kant-en-klaar
|
|
|
- builder-recept (kopieer 1-op-1 het al werkende gemeente-hartje-
|
|
|
- patroon), per widget in de If-tak (remove) en Else-tak (add) van de
|
|
|
- bestaande `ConditionalBuilder` een extra actie toevoegen vóór/na de
|
|
|
- bestaande `removeFromFavorieteHorecaNids`/`addToFavorieteHorecaNids`:**
|
|
|
- - Add Action → Custom Action → `drupalRequest`, argumenten:
|
|
|
- `method` = `'POST'`, `url` =
|
|
|
- `'https://uitgaanskrant.com/nl/flutterdrup/favorieten/flag.json'`
|
|
|
- (If-tak/add) of `.../favorieten/unflag.json` (Else-tak/remove),
|
|
|
- `sessionName` = App State `userSessionname`, `sessionId` = App
|
|
|
- State `userSessionid`, `token` = App State `userToken`, `body` =
|
|
|
- letterlijk `{"entity_id": <nid-component-parameter>, "entity_type":
|
|
|
- "node"}` (dubbele quotes escapen als `\"`, zelfde format als
|
|
|
- `header_buttons_component_widget.dart:228`).
|
|
|
- - **Let op:** dit vuurt nu ook voor een uitgelogde gebruiker (lege
|
|
|
- sessie) — `drupalRequest` faalt dan stil (403, teruggegeven als
|
|
|
- `[]`, geen crash) en de lokale toggle blijft gewoon werken, dus
|
|
|
- functioneel geen regressie, maar wel een onnodige netwerkcall.
|
|
|
- Desgewenst wrappen in een Conditional op `userSessionid` "Is Set",
|
|
|
- net als elders in dit bestand — niet strikt noodzakelijk voor
|
|
|
- correctheid.
|
|
|
- - Bouw dit op **beide** widgets (overzicht-kaart én detailpagina) in
|
|
|
- dezelfde sessie — zelfde patroon, twee plekken, past bij de
|
|
|
- "groepeer per paginagebied"-vuistregel.
|
|
|
- - Geen `is_flagged`-sync-on-load nodig (zelfde bewuste keuze als bij
|
|
|
- het gemeente-hartje, zie de P1-26-notitie hierboven) — lokale lijst
|
|
|
- blijft de bron van waarheid bij page-load, dit voegt alleen de
|
|
|
- write-sync toe.
|
|
|
-- **Restpunt B — "Wachtwoord wijzigen" ontbreekt nog op de
|
|
|
- Gebruiker-tab (2026-08-24, Claude, code-only geverifieerd).** Kleiner
|
|
|
- dan gedacht: er bestaat al een volledig werkende
|
|
|
- `lib/wachtwoord_vergeten/`-pagina (roept `RequestNewPasswordCall` aan,
|
|
|
- POST naar `.../user/request_new_password.json`) — nergens in de app
|
|
|
- aan een knop gekoppeld. **Simpelste/snelste route: geen nieuwe flow
|
|
|
- bouwen, gewoon een `ListTile` "Wachtwoord wijzigen" op de
|
|
|
- Gebruiker-tab toevoegen** (dupliceer de bestaande "Uitloggen"/
|
|
|
- "Account verwijderen"-ListTile, zelfde styling, zie het bekende
|
|
|
- Duplicate-recept in `CLAUDE.md`) met On Tap → Navigate To →
|
|
|
- `wachtwoordVergeten`-pagina (geen parameters nodig). Kost een paar
|
|
|
- minuten in de builder, geen Drupal-werk.
|
|
|
+*(Restpunt A — horeca-hartjes Drupal-sync — volledig afgerond
|
|
|
+2026-08-24/25, Claude, builder + verse-export-verificatie + live
|
|
|
+smoke-test op emulator-5554 (build/launch zonder exceptions).** Beide
|
|
|
+widgets (`horecagelegenheidoverzicht_kaart_widget.dart`,
|
|
|
+`horecagelegenheid_current_widget.dart`) roepen nu bij add/remove ook
|
|
|
+`actions.drupalRequest('POST', '.../favorieten/flag.json'` resp.
|
|
|
+`unflag.json', FFAppState().userSessionname, userSessionid, userToken,
|
|
|
+functions.favorietenBodyNode(widget!.nid!)!)` — zelfde patroon als het
|
|
|
+al werkende gemeente-hartje. **Nieuw hulpmiddel:** een letterlijke JSON-
|
|
|
+body met een ingesloten variabele (`{"entity_id": <nid>, "entity_type":
|
|
|
+"node"}`) bleek via de Custom-Action-argumentenpanel niet direct te
|
|
|
+bouwen (geen concatenatie-optie op een kaal String-argument, alleen een
|
|
|
+volledige literal-of-variabele-vervanging) — opgelost met een nieuwe
|
|
|
+kleine **Custom Function** `favorietenBodyNode(String nid) -> String`
|
|
|
+(`lib/flutter_flow/custom_functions.dart`, retourneert de body-string
|
|
|
+via Dart-stringconcatenatie), die vervolgens gewoon als waardebron voor
|
|
|
+het `body`-argument gekozen kan worden (Set Variable-dialoog → Custom
|
|
|
+Functions). Herbruikbaar patroon voor een volgend geval van
|
|
|
+"JSON-body met 1 variabele" — zie ook de bijgewerkte
|
|
|
+"Geneste Set-Variable-dialoog"-notitie hierboven. Onderweg 2x de bekende
|
|
|
+bevroren-geneste-dialoog-freeze geraakt (beide keren opgelost met een
|
|
|
+page-reload, geen dataverlies — de al bevestigde argumenten bleven
|
|
|
+staan). Uit deze lijst verwijderd.)*
|
|
|
+*(Restpunt B — "Wachtwoord wijzigen"-link — volledig afgerond
|
|
|
+2026-08-24/25, Claude, builder + verse-export-verificatie.** Nieuwe
|
|
|
+`ListTile` "Wachtwoord wijzigen" op de Gebruiker-tab (gedupliceerd van
|
|
|
+"Uitloggen"), On Tap → Navigate To → `wachtwoordVergeten`-pagina
|
|
|
+(Allow Back Navigation aan, geen parameters). Gebruikt de al bestaande
|
|
|
+`lib/wachtwoord_vergeten/`-pagina/`RequestNewPasswordCall`, geen nieuw
|
|
|
+Drupal-werk nodig. Uit deze lijst verwijderd.)*
|
|
|
|
|
|
**Bob's beslissingen (2026-08-09, nog steeds leidend):**
|
|
|
1. Favorieten (zowel horeca als gemeenten) worden **Drupal-gesynchroniseerd**,
|