Parcourir la source

TASKS: prio 2 en 3 uitgeschreven + correctie (gemeenteSelectId-default leegmaken is onveilig)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
bob il y a 5 heures
Parent
commit
230fa4875e
1 fichiers modifiés avec 103 ajouts et 48 suppressions
  1. 103 48
      TASKS.md

+ 103 - 48
TASKS.md

@@ -69,54 +69,109 @@ hoe belangrijk het voor de app is.*
    *Zodra 1 en 2 er staan is de app-kant van allebei klein werk: één
    query-variabele per filter op de API Call + de UI eromheen.*
 
-**🟠 PRIO 2 — kleine beslissingen, elk een minuut, daarna kan Claude door**
-
-3. **Toont de header "Kies je gemeente" of "Amsterdam" na *Toepassen*?**
-   Nu blijft het de uitnodiging, ook nadat je een gemeente hebt toegepast.
-   Oorzaak: de fallback in `SelectStateDropDownComponent` die
-   `gemeenteSelectNaam` vult zit achter `if (gemeenteSelectId is leeg)`, en
-   `app_state.dart` geeft dat veld al default `'28694'` — die tak vuurt dus
-   nooit. **Fix = de default van `gemeenteSelectId` leegmaken** (dan vult de
-   bestaande code bij de eerste start id én naam). Of laten zoals het is.
-4. **De favoriete-gemeente-chips onderaan `Selectprovinciegemeente`** springen
-   nog naar Home (`pushNamed`), terwijl *Toepassen* sinds P2-28 terug gaat
-   (`safePop`). Ook omzetten, of bewust zo laten?
-5. **P1-50 · AdMob**: banner weghalen of de consentflow aanzetten. Zolang dit
-   openstaat draait er een advertentie zonder UMP-consent op `pUitgaanPage`.
-
-**🟡 PRIO 3 — geen blokkade, mag wachten tot het uitkomt**
-
-6. **Claude's eigen rommel terugdraaien (excuses).** Bij het committen van
-   P2-28 heeft een `git add lib/` vijf mappen meegenomen die daarvóór bewust
-   untracked waren — ~8.000 regels dode code die nu wél in de repo staan.
-   Niet schadelijk (`dart analyze` geeft 0 errors), maar het hoort er niet.
-   Niet-destructief terug te draaien (laat alle bestanden op schijf staan):
-   ```
-   git rm -r --cached lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht_copy3 \
-     lib/kanweg/horecagelegenheden_overzicht_copy \
-     lib/kanweg/horecagelegenheden_overzicht_copy2 \
-     lib/kanweg/horecagelegenheden_overzicht_copy2_copy \
-     lib/kanweg/kanweg_header_buttons_component_copy
-   ```
-   *Claude doet dit niet zelf — staande regel, ook bij eigen fouten.*
-7. **Elf stale mappen in `lib/`** die een verse export niet meer genereert
-   (restanten van hernoemde pagina's). Gemeten 2026-09-15 tegen een verse
-   export; `dart analyze` geeft 0 errors, dus ze breken niets:
-   `horecagelegenhedenoverzicht/horecagelegenheden_overzicht`,
-   `horecagelegenhedenoverzicht/horecagelegenheden_overzicht_copy3`, en in
-   `kanweg/`: `header_buttons_component_copy`,
-   `horecagelegenheden_overzicht_copy`, `horecagelegenheden_overzicht_copy2`,
-   `horecagelegenheden_overzicht_copy2_copy`,
-   `kanwaeg_select_state_drop_down_component_copy`, `kanweg`,
-   `kanweg_home_uitgaantabel_kaart_component_copy`,
-   `kanweg_horecagelegenheden_overzicht_copy3_copy`,
-   `kanweg_horecagelegenheden_overzicht_sort_page`. Hoort bij P2-7.
-8. **P2-27b** · `_custom_clean_html`: een spatie invoegen vóór het strippen van
-   blok-tags (`</p>`, `<br>`), anders plakken alinea's aan elkaar
-   ("Onderdeel vanIndie").
-9. **P1-17** · de twee nieuwe teksten van P2-28 ("Kies je gemeente" en de
-   uitleg eronder) hebben nog geen Engelse vertaling — meenemen in de ronde
-   die je toch in één keer wilde doen.
+**🟠 PRIO 2 — beslissingen die ik niet voor je kan nemen**
+
+**3 · De header blijft "Kies je gemeente" zeggen, ook nadat je *Toepassen* hebt
+gebruikt.**
+*Wat je ziet:* verse installatie → header zegt "Kies je gemeente". Je tikt erop,
+komt op de kiespagina, daar staat Amsterdam al voorgeselecteerd, je tikt
+*Toepassen* → de header zegt nog steeds "Kies je gemeente". Pas als je de
+dropdown écht op een andere gemeente zet, verschijnt de naam.
+*Waarom:* de naam wordt alleen gezet in de `onChanged` van de gemeente-dropdown.
+Er is een fallback in `SelectStateDropDownComponent` die 'm óók zou zetten, maar
+die zit achter `if (gemeenteSelectId is leeg)` en dat is nooit waar —
+`app_state.dart` geeft dat veld default `'28694'`.
+
+⚠️ **Correctie op mijn advies van eerder vandaag: de default van
+`gemeenteSelectId` leegmaken is NIET veilig.** Ik had dat als fix voorgesteld;
+bij het narekenen blijkt het hamburgermenu `gemeenteSelectId` als
+`plaats`-parameter mee te geven aan `PUitgaanPage` (6 menu-items). Leeg = lege
+lijsten, en de enige twee plekken die het veld dan alsnog vullen zijn de
+kiespagina zelf en de loginpagina. Wie de app opent en meteen via het menu
+"Gemeente → Uitgaan" gaat, ziet dan niets. Niet doen dus.
+
+*Twee opties die wél veilig zijn — jouw keuze:*
+- **(A) één veld invullen.** App State → `gemeenteSelectNaam` → *Initial Field
+  Value* = `Amsterdam (gemeente)`. Klaar. Nadeel: de uitnodiging "Kies je
+  gemeente" is dan weg bij de eerste start — precies de keuze die je bij P2-19
+  bewust maakte.
+- **(B) de Toepassen-knop de naam laten zetten** (±10 klikken, jij wel, ik
+  niet — de Set-Variable-dialoog in de Action Flow Editor valt bij mij dicht
+  zodra ik typ). De uitnodiging blijft dan staan tot iemand daadwerkelijk
+  *Toepassen* gebruikt, en daarna klopt de header. Stappen:
+  1. component `SelectStateDropDownComponent` → tree → de `Button` (Toepassen)
+  2. Actions-tab → *Action Flow Editor* → **Edit**
+  3. de **"+" bóven** het blok `Navigate Back` → *Add Action*
+  4. zoek **Update App State** → *Add Field* → `gemeenteSelectNaam`
+  5. *Select Update Type* → **Set Value**
+  6. klik het `Unset`-veld → bron **Custom Functions** → **`gemeenteNaamById`**
+  7. argument `lijst` = App State `gemeentelijst`, argument `id` = App State
+     `gemeenteSelectId` → Confirm → Close
+  *Mijn advies: (B), want die houdt jouw P2-19-keuze intact.*
+
+**4 · De favoriete-gemeente-chips springen naar Home, *Toepassen* gaat terug.**
+Onderaan de kiespagina staan je favoriete gemeenten als aantikbare namen. Tik je
+er een aan, dan wordt de gemeente gezet en spring je naar **Home**
+(`pushNamed`). *Toepassen* gaat sinds P2-28 juist **terug** naar de pagina waar
+je vandaan kwam (`safePop`). Twee verschillende uitkomsten voor wat voelt als
+dezelfde handeling. Wil je ze gelijktrekken (chip = ook terug), of vind je "naar
+Home" hier juist logisch omdat je van gemeente wisselt? **Zeg het en ik zet het
+om — 5 minuten werk.**
+
+**5 · P1-50 · AdMob-banner zonder toestemmingsvraag.**
+Op `pUitgaanPage` staat één advertentiebanner. FlutterFlow genereert de
+GDPR/UMP-toestemmingsflow in `lib/flutter_flow/admob_util.dart`, maar dat
+bestand wordt **nergens** geïmporteerd en `MobileAds.initialize()` wordt niet
+aangeroepen. Voor EU-gebruikers is dat tegen Google's beleid zodra de app mét
+advertenties in de store staat. Twee kanten op:
+(a) **banner weghalen** tot je advertenties echt wilt (P2-5 is toch heropend);
+(b) **consentflow aanzetten** (App Settings → AdMob → *Show consent form* +
+initialisatie in `main.dart`). **Zeg welke en ik voer 'm uit.**
+
+**🟡 PRIO 3 — opruimen, geen blokkade, mag wachten**
+
+**6 · Twaalf dode mappen in `lib/` opruimen (één commando).**
+Dit zijn restanten van pagina's/componenten die je in de builder hebt hernoemd
+of naar `kanweg` verplaatst. FlutterFlow genereert ze niet meer — ze staan
+alleen nog lokaal en in de repo. Gemeten 2026-09-15 tegen een verse export;
+`dart analyze` geeft 0 errors met én zonder, dus er hangt niets aan. **Vijf van
+de twaalf staan in git door een fout van mij** (een `git add lib/` bij de
+P2-28-commit trok ze mee; excuses), de andere zeven stonden er al langer.
+Eén ronde ruimt alles op:
+```
+cd /home/bob/Projects/ff-app/uitgaanskrant-1qhvtd
+git rm -r --quiet lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht \
+  lib/horecagelegenhedenoverzicht/horecagelegenheden_overzicht_copy3 \
+  lib/kanweg/header_buttons_component_copy \
+  lib/kanweg/horecagelegenheden_overzicht_copy \
+  lib/kanweg/horecagelegenheden_overzicht_copy2 \
+  lib/kanweg/horecagelegenheden_overzicht_copy2_copy \
+  lib/kanweg/kanwaeg_select_state_drop_down_component_copy \
+  lib/kanweg/kanweg \
+  lib/kanweg/kanweg_home_uitgaantabel_kaart_component_copy \
+  lib/kanweg/kanweg_horecagelegenheden_overzicht_copy3_copy \
+  lib/kanweg/kanweg_horecagelegenheden_overzicht_sort_page \
+  lib/kanweg/kanweg_header_buttons_component_copy
+fvm dart analyze lib/ 2>&1 | grep -c "error -"   # hoort 0 te zijn
+git commit -m "P2-7: dode mappen uit lib/ verwijderd (niet meer in de export)"
+git push
+```
+*Ik doe dit niet zelf — staande regel dat ik niets weggooi, ook geen eigen
+fouten.* Komen ze ooit terug in een export, dan bestaan de pagina's nog in
+FlutterFlow en moeten ze dáár weg (dat is de rest van P2-7).
+
+**7 · P2-27b · woorden plakken aan elkaar in de omschrijving.**
+In de app staat bijvoorbeeld "Onderdeel vanIndie" — twee woorden zonder spatie.
+Dat komt uit `_custom_clean_html` in `custom.module`: die haalt HTML-tags weg
+zonder er iets voor in de plaats te zetten, dus `<p>Onderdeel van</p><p>Indie…`
+wordt `Onderdeel vanIndie…`. Fix aan jouw kant: vervang blok-tags (`</p>`,
+`<br>`, `</div>`, `</li>`) door een **spatie** vóór het strippen, en haal daarna
+dubbele spaties weg. Raakt alle drie de views tegelijk.
+
+**8 · P1-17 · twee nieuwe teksten zonder Engelse vertaling.**
+Van P2-28: **"Kies je gemeente"** en **"Je ziet dan het uitgaansnieuws van die
+gemeente in het menu."** Meenemen in de vertaalronde die je toch in één keer
+wilde doen — geen losse actie nodig.
 
 ### 🚀 Wat de app een succes maakt — Bob's akkoord 2026-09-14 ("voeg toe en ga aan de gang")