From 1fe178c662036f953f0cf1c3a75386a2cef9e6b0 Mon Sep 17 00:00:00 2001 From: Emre Date: Tue, 1 Aug 2023 16:46:35 +0200 Subject: [PATCH] add function AddOrDeleteFriend --- .../components/profile_list_component.dart | 2 ++ .../lib/model/mapper/PostMapper.dart | 1 - .../justMUSIC/lib/services/UserService.dart | 19 ++++++++++++++++++- .../lib/view_model/UserViewModel.dart | 9 +++++++++ 4 files changed, 29 insertions(+), 2 deletions(-) diff --git a/Sources/justMUSIC/lib/components/profile_list_component.dart b/Sources/justMUSIC/lib/components/profile_list_component.dart index 78bbf48..8b77a1c 100644 --- a/Sources/justMUSIC/lib/components/profile_list_component.dart +++ b/Sources/justMUSIC/lib/components/profile_list_component.dart @@ -74,6 +74,7 @@ class _ProfileListComponentState extends State { child: InkWell( splashColor: Colors.white.withOpacity(0.3), onTap: () { + MyApp.userViewModel.addOrDeleteFriend(widget.user.id); setState(() { clicked = !clicked; }); @@ -93,6 +94,7 @@ class _ProfileListComponentState extends State { child: InkWell( splashColor: Colors.white.withOpacity(0.3), onTap: () { + MyApp.userViewModel.addOrDeleteFriend(widget.user.id); setState(() { clicked = !clicked; }); diff --git a/Sources/justMUSIC/lib/model/mapper/PostMapper.dart b/Sources/justMUSIC/lib/model/mapper/PostMapper.dart index 2d9b6e4..61ed7c4 100644 --- a/Sources/justMUSIC/lib/model/mapper/PostMapper.dart +++ b/Sources/justMUSIC/lib/model/mapper/PostMapper.dart @@ -2,7 +2,6 @@ import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:tuple/tuple.dart'; import '../../main.dart'; -import '../Music.dart'; import '../Post.dart'; import '../User.dart'; diff --git a/Sources/justMUSIC/lib/services/UserService.dart b/Sources/justMUSIC/lib/services/UserService.dart index 35de6eb..2e3c3e0 100644 --- a/Sources/justMUSIC/lib/services/UserService.dart +++ b/Sources/justMUSIC/lib/services/UserService.dart @@ -14,8 +14,25 @@ class UserService { String id = doc["unique_id"]; return id != MyApp.userViewModel.userCurrent.uniquePseudo; }).toList(); - print("cc34" + users.toString()); return users; } + + addOrDeleteFriend(String id) async { + + var userRef = MyApp.db.collection("users").doc(MyApp.userViewModel.userCurrent.id); + + if (MyApp.userViewModel.isFriend(id)) { + await MyApp.db.runTransaction((transaction) async { + transaction.update(userRef, {'followed': FieldValue.arrayRemove([id])}); + }); + MyApp.userViewModel.userCurrent.followed.remove(id); + } else { + await MyApp.db.runTransaction((transaction) async { + transaction.update(userRef, {'followed': FieldValue.arrayUnion([id])}); + }); + MyApp.userViewModel.userCurrent.followed.add(id); + } + } + } diff --git a/Sources/justMUSIC/lib/view_model/UserViewModel.dart b/Sources/justMUSIC/lib/view_model/UserViewModel.dart index 5af8a14..f2a5344 100644 --- a/Sources/justMUSIC/lib/view_model/UserViewModel.dart +++ b/Sources/justMUSIC/lib/view_model/UserViewModel.dart @@ -78,6 +78,15 @@ class UserViewModel { } } + AddOrDeleteFriend(String id) async { + try { + await _userService.addOrDeleteFriend(id); + } catch(e) { + print(e); + rethrow; + } + } + logout() { _authService.signOut(); }