Quellcode durchsuchen

P1-26: gemeente-hartje op HeaderButtonsComponent + P0-9 Drupal-view-fix (concurrent)

P1-26 (Claude, builder): favoriet-toggle voor gemeenten toegevoegd op
HeaderButtonsComponent, naast de gemeente-/provincienaam. Zelfde
ConditionalBuilder-patroon als de bestaande horeca-hartjes:
- If (favorieteGemeenteIds.contains(gemeenteSelectId)): gevuld hartje,
  drupalRequest POST naar favorieten/unflag.json, daarna
  removeFromFavorieteGemeenteIds.
- Else: leeg hartje, drupalRequest POST naar favorieten/flag.json,
  daarna addToFavorieteGemeenteIds.
Beide met JSON-body '{"entity_id": <gemeenteSelectId>, "entity_type":
"taxonomy_term"}', sessie-auth via userSessionname/userSessionid/
userToken. Bevestigd via verse export + live app-launch (geen nieuwe
crashes/errors t.o.v. de bekende P1-24-issue).

Concurrent meegekomen in dezelfde export (andere sessie, waarschijnlijk
Bob): P0-9 opgelost (HomeUitgaantabelKaartComponent's kapotte
displayid 'display_3' → bestaande 'services_3', bevestigd via curl) +
maxLines/overflow-ellipsis-fixes op Home's eventkaartjes.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
bob vor 3 Wochen
Ursprung
Commit
d8bbba40e8

+ 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>"; };
-		6436409627A31CD100820AF7 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = "<group>"; };
-		6436409D27A31CDD00820AF7 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		6436409127A31CDA00820AF7 /* nl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = nl; path = nl.lproj/InfoPlist.strings; sourceTree = "<group>"; };
+		6436409A27A31CD400820AF7 /* 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 = (
-				6436409627A31CD100820AF7 /* nl */,
-				6436409D27A31CDD00820AF7 /* en */,
+				6436409127A31CDA00820AF7 /* nl */,
+				6436409A27A31CD400820AF7 /* en */,
 			);
 			name = InfoPlist.strings;
 			sourceTree = "<group>";

+ 1 - 0
lib/components/header_buttons_component_model.dart

@@ -3,6 +3,7 @@ import '/flutter_flow/flutter_flow_theme.dart';
 import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
 import 'dart:ui';
+import '/custom_code/actions/index.dart' as actions;
 import 'header_buttons_component_widget.dart' show HeaderButtonsComponentWidget;
 import 'package:aligned_tooltip/aligned_tooltip.dart';
 import 'package:flutter/material.dart';

+ 57 - 0
lib/components/header_buttons_component_widget.dart

@@ -3,6 +3,7 @@ import '/flutter_flow/flutter_flow_theme.dart';
 import '/flutter_flow/flutter_flow_util.dart';
 import '/flutter_flow/flutter_flow_widgets.dart';
 import 'dart:ui';
+import '/custom_code/actions/index.dart' as actions;
 import 'package:aligned_tooltip/aligned_tooltip.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_spinkit/flutter_spinkit.dart';
@@ -223,6 +224,62 @@ class _HeaderButtonsComponentWidgetState
                   ),
             ),
           ),
+          Builder(
+            builder: (context) {
+              if (FFAppState()
+                      .favorieteGemeenteIds
+                      .contains(FFAppState().gemeenteSelectId) ==
+                  true) {
+                return FlutterFlowIconButton(
+                  borderRadius: 8.0,
+                  buttonSize: 40.0,
+                  fillColor: Color(0x004B39EF),
+                  icon: Icon(
+                    Icons.favorite,
+                    color: Colors.white,
+                    size: 24.0,
+                  ),
+                  onPressed: () async {
+                    await actions.drupalRequest(
+                      'POST',
+                      'https://uitgaanskrant.com/nl/flutterdrup/favorieten/unflag.json',
+                      FFAppState().userSessionname,
+                      FFAppState().userSessionid,
+                      FFAppState().userToken,
+                      '{\"entity_id\": ${FFAppState().gemeenteSelectId}, \"entity_type\": \"taxonomy_term\"}',
+                    );
+                    FFAppState().removeFromFavorieteGemeenteIds(
+                        FFAppState().gemeenteSelectId);
+                    safeSetState(() {});
+                  },
+                );
+              } else {
+                return FlutterFlowIconButton(
+                  borderRadius: 8.0,
+                  buttonSize: 40.0,
+                  fillColor: Color(0x004B39EF),
+                  icon: Icon(
+                    Icons.favorite_border,
+                    color: Colors.white,
+                    size: 24.0,
+                  ),
+                  onPressed: () async {
+                    await actions.drupalRequest(
+                      'POST',
+                      'https://uitgaanskrant.com/nl/flutterdrup/favorieten/flag.json',
+                      FFAppState().userSessionname,
+                      FFAppState().userSessionid,
+                      FFAppState().userToken,
+                      '{\"entity_id\": ${FFAppState().gemeenteSelectId}, \"entity_type\": \"taxonomy_term\"}',
+                    );
+                    FFAppState().addToFavorieteGemeenteIds(
+                        FFAppState().gemeenteSelectId);
+                    safeSetState(() {});
+                  },
+                );
+              }
+            },
+          ),
         ],
       ),
     );

+ 1 - 1
lib/uitgaanspaginas/home/home_widget.dart

@@ -309,7 +309,7 @@ class _HomeWidgetState extends State<HomeWidget>
                                       rootModel: _model.rootModel,
                                       child:
                                           HomeUitgaantabelKaartComponentWidget(
-                                        displayid: 'display_3',
+                                        displayid: 'services_3',
                                       ),
                                     );
                                   }),

+ 7 - 0
lib/uitgaanspaginas/home_uitgaantabel_kaart_component/home_uitgaantabel_kaart_component_widget.dart

@@ -370,6 +370,7 @@ class _HomeUitgaantabelKaartComponentWidgetState
                                             evenementenItem,
                                             r'''$.titel''',
                                           ).toString(),
+                                          maxLines: 1,
                                           style: FlutterFlowTheme.of(context)
                                               .bodyLarge
                                               .override(
@@ -426,6 +427,7 @@ class _HomeUitgaantabelKaartComponentWidgetState
                                                 evenementenItem,
                                                 r'''$.horecagelegenheid''',
                                               ).toString(),
+                                              maxLines: 1,
                                               style:
                                                   FlutterFlowTheme.of(context)
                                                       .bodySmall
@@ -454,6 +456,7 @@ class _HomeUitgaantabelKaartComponentWidgetState
                                                                 .bodySmall
                                                                 .fontStyle,
                                                       ),
+                                              overflow: TextOverflow.ellipsis,
                                             ),
                                           ),
                                         ],
@@ -479,6 +482,7 @@ class _HomeUitgaantabelKaartComponentWidgetState
                                                 evenementenItem,
                                                 r'''$.adres''',
                                               ).toString(),
+                                              maxLines: 1,
                                               style:
                                                   FlutterFlowTheme.of(context)
                                                       .bodySmall
@@ -507,6 +511,7 @@ class _HomeUitgaantabelKaartComponentWidgetState
                                                                 .bodySmall
                                                                 .fontStyle,
                                                       ),
+                                              overflow: TextOverflow.ellipsis,
                                             ),
                                           ),
                                           Text(
@@ -597,6 +602,7 @@ class _HomeUitgaantabelKaartComponentWidgetState
                                                 evenementenItem,
                                                 r'''$.datum''',
                                               ).toString(),
+                                              maxLines: 1,
                                               style:
                                                   FlutterFlowTheme.of(context)
                                                       .bodySmall
@@ -625,6 +631,7 @@ class _HomeUitgaantabelKaartComponentWidgetState
                                                                 .bodySmall
                                                                 .fontStyle,
                                                       ),
+                                              overflow: TextOverflow.ellipsis,
                                             ),
                                           ),
                                         ],