ad toogle interested method

This commit is contained in:
2025-08-19 00:11:40 +02:00
parent 7528e55dca
commit 924794e8a0
4 changed files with 50 additions and 12 deletions

View File

@@ -423,7 +423,7 @@ class _MyHomePageState extends State<ListItemMenu> {
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<ListItemMenu> {
}
}
Future<bool> 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<void> fetchPostsByLocation() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
var accessToken = prefs.getString("access_token") ?? "";
@@ -876,15 +900,24 @@ class _MyHomePageState extends State<ListItemMenu> {
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,