Explorar o código

Drawer: 'Mijn Account' toont nu gebruikersnaam + link naar Favorieten bij actieve sessie

drawer_component_widget.dart (gedeeld component, alle pagina's):
'Mijn Account'-knop wrapped in een ConditionalBuilder op
FFAppState().userSessionid.
- Niet ingelogd (Then, ongewijzigd): bestaande knop -> Login.
- Ingelogd (Else, nieuw): knop toont FFAppState().userName, tik
  navigeert naar Favorieten i.p.v. terug naar het login-formulier.

Lost het UX-gat op dat nergens zichtbaar was dát je bent ingelogd
behalve door zelf naar Favorieten-tab 4 te navigeren.

Bevestigd via verse export + flutter analyze (0 nieuwe treffers) en
volledig live getest op emulator-5554 met een nog actieve testsessie
('bobcity') — beide takken (uitgelogd/ingelogd) werken correct.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
bob hai 3 semanas
pai
achega
22c954a79f

+ 26 - 8
TASKS.md

@@ -1162,14 +1162,32 @@ volledig uitgeschreven en scrollen horizontaal i.p.v. af te kappen.
 Bevestigd via verse export + `flutter analyze` (0 nieuwe treffers) én
 live: drawer opent via het hamburger-icoon, geen dubbele knop, alle 4
 tabs met volledig label bereikbaar. Uit deze lijst verwijderd.)*
-- **Nieuw gevonden, UX-gat (2026-08-17 avond): nergens in de app is
-  zichtbaar dát je bent ingelogd**, behalve als je zelf naar
-  Favorieten-tab 4 navigeert. De drawer's "Mijn Account"-item opent
-  altijd het kale login-formulier, ook met een actieve sessie — geen
-  check op `FFAppState().userSessionid`. Sluit aan bij Bob's eigen
-  wens (2026-08-17): gebruikersnaam + uitlog-knop + link naar
-  Favorieten zichtbaar maken zodra ingelogd, bv. in de drawer i.p.v.
-  het statische "Login"/"Mijn Account"-item.
+*(UX-gat grotendeels afgerond 2026-08-19 — Claude, builder
+(`drawerComponent`, gedeeld over alle pagina's): de drawer's "Mijn
+Account"-knop toont nu alleen nog het kale login-formulier als er
+géén actieve sessie is. Fix: `Wrap Widget → ConditionalBuilder` om de
+bestaande `FFButtonWidget`, conditie `FFAppState().userSessionid` "Is
+Not Set or Is Empty" (Then = ongewijzigde originele knop, geen
+regressie voor uitgelogde gebruikers — de meerderheid). Else-tak
+(ingelogd): nieuwe knop met tekst gebonden aan `FFAppState().userName`
+i.p.v. de statische "Mijn Account"-tekst, en `onTap` navigeert naar
+`FavorietenWidget` (i.p.v. terug naar Login) — dat dekt zowel
+"gebruikersnaam zichtbaar" als "link naar Favorieten" uit Bob's
+oorspronkelijke wens. Bevestigd via verse export + `flutter analyze`
+(0 nieuwe treffers); **volledig live geverifieerd op emulator-5554**
+(bleek een nog actieve testsessie "bobcity" op het toestel te staan) —
+zowel de uitgelogde staat (ongewijzigd "Mijn Account"-gedrag) als de
+ingelogde staat (knop toont "bobcity", tik navigeert naar Favorieten)
+werken zoals bedoeld. Bijvangst tijdens dezelfde sessie: Tab 3
+"Favoriete Gelegenheden" toont voor deze testgebruiker nog steeds
+"null" ook nu de sessie wél wordt meegestuurd (zie de eerdere
+sessie-parameter-fix hierboven) — dit is dus geen client-sidebug meer
+maar wijst op een Drupal-datakant-vraag (mogelijk heeft "bobcity"
+gewoon geen favoriete gelegenheden, of de endpoint zelf heeft nog een
+probleem) — niet verder onderzocht, buiten scope van deze taak.
+**Bewust niet meegenomen:** een eigen uitlog-knop in de drawer zelf —
+die bestaat al op Favorieten's "Gebruiker"-tab (P1-7), dubbel opbouwen
+leek overbodige scope-uitbreiding.)*
 - **"Gebruiker"-tab, "Uitloggen"-knop afgerond (2026-08-15, Claude,
   builder, bevestigd via verse export + `flutter analyze`: 0 errors).**
   `favorieten_widget.dart` heeft nu een 4e tab "Gebruiker" (via TabBar's

+ 4 - 4
ios/Runner.xcodeproj/project.pbxproj

@@ -44,8 +44,8 @@
 		97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
 		97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
 		97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
-		6436409E27A31CD700820AF7 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = "<group>"; };
-		6436409027A31CD400820AF7 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		6436409A27A31CD100820AF7 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		6436409227A31CDE00820AF7 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
 		97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
@@ -225,8 +225,8 @@
 		6436409C27A31CD800820AF7 /* InfoPlist.strings */ = {
 			isa = PBXVariantGroup;
 			children = (
-				6436409E27A31CD700820AF7 /* nl */,
-				6436409027A31CD400820AF7 /* en */,
+				6436409A27A31CD100820AF7 /* nl */,
+				6436409227A31CDE00820AF7 /* en */,
 			);
 			name = InfoPlist.strings;
 			sourceTree = "<group>";

+ 82 - 34
lib/shared/drawer_component/drawer_component_widget.dart

@@ -1280,43 +1280,91 @@ class _DrawerComponentWidgetState extends State<DrawerComponentWidget>
                     child: Row(
                       mainAxisSize: MainAxisSize.max,
                       children: [
-                        FFButtonWidget(
-                          onPressed: () async {
-                            context.pushNamed(LoginWidget.routeName);
-                          },
-                          text: FFLocalizations.of(context).getText(
-                            '0xszp35t' /* Mijn Account */,
-                          ),
-                          options: FFButtonOptions(
-                            height: 40.0,
-                            padding: EdgeInsetsDirectional.fromSTEB(
-                                16.0, 0.0, 16.0, 0.0),
-                            iconPadding: EdgeInsetsDirectional.fromSTEB(
-                                0.0, 0.0, 0.0, 0.0),
-                            color: FlutterFlowTheme.of(context).primary,
-                            textStyle: FlutterFlowTheme.of(context)
-                                .titleSmall
-                                .override(
-                                  font: GoogleFonts.interTight(
-                                    fontWeight: FlutterFlowTheme.of(context)
-                                        .titleSmall
-                                        .fontWeight,
-                                    fontStyle: FlutterFlowTheme.of(context)
-                                        .titleSmall
-                                        .fontStyle,
-                                  ),
-                                  color: Colors.white,
-                                  letterSpacing: 0.0,
-                                  fontWeight: FlutterFlowTheme.of(context)
+                        Builder(
+                          builder: (context) {
+                            if (FFAppState().userSessionid == null ||
+                                FFAppState().userSessionid == '') {
+                              return FFButtonWidget(
+                                onPressed: () async {
+                                  context.pushNamed(LoginWidget.routeName);
+                                },
+                                text: FFLocalizations.of(context).getText(
+                                  '0xszp35t' /* Mijn Account */,
+                                ),
+                                options: FFButtonOptions(
+                                  height: 40.0,
+                                  padding: EdgeInsetsDirectional.fromSTEB(
+                                      16.0, 0.0, 16.0, 0.0),
+                                  iconPadding: EdgeInsetsDirectional.fromSTEB(
+                                      0.0, 0.0, 0.0, 0.0),
+                                  color: FlutterFlowTheme.of(context).primary,
+                                  textStyle: FlutterFlowTheme.of(context)
                                       .titleSmall
-                                      .fontWeight,
-                                  fontStyle: FlutterFlowTheme.of(context)
+                                      .override(
+                                        font: GoogleFonts.interTight(
+                                          fontWeight:
+                                              FlutterFlowTheme.of(context)
+                                                  .titleSmall
+                                                  .fontWeight,
+                                          fontStyle:
+                                              FlutterFlowTheme.of(context)
+                                                  .titleSmall
+                                                  .fontStyle,
+                                        ),
+                                        color: Colors.white,
+                                        letterSpacing: 0.0,
+                                        fontWeight: FlutterFlowTheme.of(context)
+                                            .titleSmall
+                                            .fontWeight,
+                                        fontStyle: FlutterFlowTheme.of(context)
+                                            .titleSmall
+                                            .fontStyle,
+                                      ),
+                                  elevation: 0.0,
+                                  borderRadius: BorderRadius.circular(8.0),
+                                ),
+                              );
+                            } else {
+                              return FFButtonWidget(
+                                onPressed: () async {
+                                  context.pushNamed(FavorietenWidget.routeName);
+                                },
+                                text: FFAppState().userName,
+                                options: FFButtonOptions(
+                                  height: 40.0,
+                                  padding: EdgeInsetsDirectional.fromSTEB(
+                                      16.0, 0.0, 16.0, 0.0),
+                                  iconPadding: EdgeInsetsDirectional.fromSTEB(
+                                      0.0, 0.0, 0.0, 0.0),
+                                  color: FlutterFlowTheme.of(context).primary,
+                                  textStyle: FlutterFlowTheme.of(context)
                                       .titleSmall
-                                      .fontStyle,
+                                      .override(
+                                        font: GoogleFonts.interTight(
+                                          fontWeight:
+                                              FlutterFlowTheme.of(context)
+                                                  .titleSmall
+                                                  .fontWeight,
+                                          fontStyle:
+                                              FlutterFlowTheme.of(context)
+                                                  .titleSmall
+                                                  .fontStyle,
+                                        ),
+                                        color: Colors.white,
+                                        letterSpacing: 0.0,
+                                        fontWeight: FlutterFlowTheme.of(context)
+                                            .titleSmall
+                                            .fontWeight,
+                                        fontStyle: FlutterFlowTheme.of(context)
+                                            .titleSmall
+                                            .fontStyle,
+                                      ),
+                                  elevation: 0.0,
+                                  borderRadius: BorderRadius.circular(8.0),
                                 ),
-                            elevation: 0.0,
-                            borderRadius: BorderRadius.circular(8.0),
-                          ),
+                              );
+                            }
+                          },
                         ),
                         AlignedTooltip(
                           content: Padding(