From 924794e8a013d9a95a97aec58fce4b04ac02782e Mon Sep 17 00:00:00 2001 From: Valentin CZERYBA Date: Tue, 19 Aug 2025 00:11:40 +0200 Subject: [PATCH] ad toogle interested method --- covas_mobile/lib/l10n/app_de.arb | 4 +- covas_mobile/lib/l10n/app_en.arb | 4 +- covas_mobile/lib/l10n/app_fr.arb | 7 ++-- covas_mobile/lib/pages/ListItemMenu.dart | 47 ++++++++++++++++++++---- 4 files changed, 50 insertions(+), 12 deletions(-) diff --git a/covas_mobile/lib/l10n/app_de.arb b/covas_mobile/lib/l10n/app_de.arb index 09ea84b..5a08de1 100644 --- a/covas_mobile/lib/l10n/app_de.arb +++ b/covas_mobile/lib/l10n/app_de.arb @@ -136,6 +136,8 @@ "link": "Link", "edit_link": "Linkereignis bearbeiten", "ticket": "Abendkarte", -"edit_ticket": "Ticketlink bearbeiten" +"edit_ticket": "Ticketlink bearbeiten", +"toogle_interest": "Fehler beim Umschalten des Interesses", +"error_update": "Fehler beim Update" } diff --git a/covas_mobile/lib/l10n/app_en.arb b/covas_mobile/lib/l10n/app_en.arb index c90bd42..de034b1 100644 --- a/covas_mobile/lib/l10n/app_en.arb +++ b/covas_mobile/lib/l10n/app_en.arb @@ -138,5 +138,7 @@ "link": "Link", "edit_link": "Edit link name", "ticket": "Ticket", -"edit_ticket": "Edit ticket link" +"edit_ticket": "Edit ticket link", +"toogle_interest": "Error toggle interest", +"error_update": "Fehler beim Update" } \ No newline at end of file diff --git a/covas_mobile/lib/l10n/app_fr.arb b/covas_mobile/lib/l10n/app_fr.arb index bd8cce8..1555228 100644 --- a/covas_mobile/lib/l10n/app_fr.arb +++ b/covas_mobile/lib/l10n/app_fr.arb @@ -137,7 +137,8 @@ "item_ticket": "Billet : ", "link": "Lien", "edit_link": "Editer le lien", -"ticket": "Ticket", -"edit_ticket": "Edit ticket link" - +"ticket": "Billet", +"edit_ticket": "Editer le lien du billet", +"toogle_interest": "Erreur de bouton de changement", +"error_update": "Erreur lors de la mise à jour" } \ No newline at end of file diff --git a/covas_mobile/lib/pages/ListItemMenu.dart b/covas_mobile/lib/pages/ListItemMenu.dart index bb70a58..f64b747 100644 --- a/covas_mobile/lib/pages/ListItemMenu.dart +++ b/covas_mobile/lib/pages/ListItemMenu.dart @@ -423,7 +423,7 @@ class _MyHomePageState extends State { var url = await getUrlForEvents(); final response = await http.get(url, headers: { "Content-Type": "application/json", - HttpHeaders.cookieHeader: "acce0ss_token=$accessToken" + HttpHeaders.cookieHeader: "access_token=$accessToken" }); if (response.statusCode == 200) { @@ -469,6 +469,30 @@ class _MyHomePageState extends State { } } + Future toogleInterested(String eventId) async { + SharedPreferences prefs = await SharedPreferences.getInstance(); + var accessToken = prefs.getString("access_token") ?? ""; + final url = Uri.parse("${globals.api}/events/${eventId}/interest"); + if (accessToken.isNotEmpty) { + final response = await http.post( + url, + headers: { + "Content-Type": "application/json", + HttpHeaders.cookieHeader: "access_token=$accessToken" + }, + ); + + if (response.statusCode != 200) { + throw (AppLocalizations.of(context)?.toogle_interest ?? + "Error toogle interest: ${response.statusCode}"); + } + + Events? event = json.decode(response.body); + return event?.interested ?? false; + } + return false; + } + Future fetchPostsByLocation() async { SharedPreferences prefs = await SharedPreferences.getInstance(); var accessToken = prefs.getString("access_token") ?? ""; @@ -876,15 +900,24 @@ class _MyHomePageState extends State { subtitle: Text('${post.place!}\n${dateLongue}'), trailing: IconButton( onPressed: () async { - setState(() { - bool checkInterested = post?.interested ?? false; - post?.interested = !checkInterested; - }); + try { + final result = await toogleInterested(post.id!); + setState(() { + post.interested = result; + }); + } catch (e) { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text( + AppLocalizations.of(context)?.error_update ?? + "Error when updating")), + ); + } }, icon: Icon( - post?.interested ?? false ? Icons.star : Icons.star_border, + post.interested ?? false ? Icons.star : Icons.star_border, color: - post?.interested ?? false ? Colors.blue : Colors.grey)), + post.interested ?? false ? Colors.blue : Colors.grey)), onTap: () { Navigator.push( context,