diff --git a/Sources/justMUSIC/lib/components/profile_list_component.dart b/Sources/justMUSIC/lib/components/profile_list_component.dart index 981dd9b..78bbf48 100644 --- a/Sources/justMUSIC/lib/components/profile_list_component.dart +++ b/Sources/justMUSIC/lib/components/profile_list_component.dart @@ -1,5 +1,6 @@ import 'package:flutter/Material.dart'; import 'package:google_fonts/google_fonts.dart'; +import '../main.dart'; import '../model/User.dart'; import '../values/constants.dart'; @@ -12,7 +13,17 @@ class ProfileListComponent extends StatefulWidget { } class _ProfileListComponentState extends State { - bool clicked = false; + late bool clicked; + + @override + void initState() { + if (MyApp.userViewModel.isFriend(widget.user.id)) { + clicked = true; + } else { + clicked = false; + } + super.initState(); + } @override Widget build(BuildContext context) { diff --git a/Sources/justMUSIC/lib/screens/add_friend_screen.dart b/Sources/justMUSIC/lib/screens/add_friend_screen.dart index 124f1fd..2ac9e3f 100644 --- a/Sources/justMUSIC/lib/screens/add_friend_screen.dart +++ b/Sources/justMUSIC/lib/screens/add_friend_screen.dart @@ -4,6 +4,7 @@ import 'package:google_fonts/google_fonts.dart'; import 'package:justmusic/values/constants.dart'; import '../components/profile_list_component.dart'; +import '../main.dart'; import '../model/User.dart'; class AddFriendScreen extends StatefulWidget { @@ -17,116 +18,14 @@ class _AddFriendScreenState extends State { final ScrollController _scrollController = ScrollController(); final TextEditingController _textEditingController = TextEditingController(); - List fakeList = [ - User( - "&", - "_pseudo", - "_pseudo", - "_mail", - "https://firebasestorage.googleapis.com/v0/b/justmusic-435d5.appspot.com/o/RUiGpZ8AzCQPqiVJKwuQeIqiC4B2UYSIpWSnX4gJhZJzaN4q.jpg?alt=media&token=39baf86a-4d19-4534-b777-1a4feca67359", - [], - 12, - []), - User( - "&", - "_pseudo", - "_pseudo", - "_mail", - "https://firebasestorage.googleapis.com/v0/b/justmusic-435d5.appspot.com/o/RUiGpZ8AzCQPqiVJKwuQeIqiC4B2bafPGRGLh2La72LkmQst.jpg?alt=media&token=ac1916f0-e08d-43bd-977a-2c2d94182609", - [], - 12, - []), - User( - "&", - "_pseudo", - "_pseudo", - "_mail", - "https://firebasestorage.googleapis.com/v0/b/justmusic-435d5.appspot.com/o/RUiGpZ8AzCQPqiVJKwuQeIqiC4B2bafPGRGLh2La72LkmQst.jpg?alt=media&token=ac1916f0-e08d-43bd-977a-2c2d94182609", - [], - 12, - []), - User( - "&", - "_pseudo", - "_pseudo", - "_mail", - "https://firebasestorage.googleapis.com/v0/b/justmusic-435d5.appspot.com/o/RUiGpZ8AzCQPqiVJKwuQeIqiC4B2bafPGRGLh2La72LkmQst.jpg?alt=media&token=ac1916f0-e08d-43bd-977a-2c2d94182609", - [], - 12, - []), - User( - "&", - "_pseudo", - "_pseudo", - "_mail", - "https://firebasestorage.googleapis.com/v0/b/justmusic-435d5.appspot.com/o/RUiGpZ8AzCQPqiVJKwuQeIqiC4B2bafPGRGLh2La72LkmQst.jpg?alt=media&token=ac1916f0-e08d-43bd-977a-2c2d94182609", - [], - 12, - []), - User( - "&", - "_pseudo", - "_pseudo", - "_mail", - "https://firebasestorage.googleapis.com/v0/b/justmusic-435d5.appspot.com/o/RUiGpZ8AzCQPqiVJKwuQeIqiC4B2bafPGRGLh2La72LkmQst.jpg?alt=media&token=ac1916f0-e08d-43bd-977a-2c2d94182609", - [], - 12, - []), - User( - "&", - "_pseudo", - "_pseudo", - "_mail", - "https://firebasestorage.googleapis.com/v0/b/justmusic-435d5.appspot.com/o/RUiGpZ8AzCQPqiVJKwuQeIqiC4B2bafPGRGLh2La72LkmQst.jpg?alt=media&token=ac1916f0-e08d-43bd-977a-2c2d94182609", - [], - 12, - []), - User( - "&", - "_pseudo", - "_pseudo", - "_mail", - "https://firebasestorage.googleapis.com/v0/b/justmusic-435d5.appspot.com/o/RUiGpZ8AzCQPqiVJKwuQeIqiC4B2bafPGRGLh2La72LkmQst.jpg?alt=media&token=ac1916f0-e08d-43bd-977a-2c2d94182609", - [], - 12, - []), - User( - "&", - "_pseudo", - "_pseudo", - "_mail", - "https://firebasestorage.googleapis.com/v0/b/justmusic-435d5.appspot.com/o/RUiGpZ8AzCQPqiVJKwuQeIqiC4B2bafPGRGLh2La72LkmQst.jpg?alt=media&token=ac1916f0-e08d-43bd-977a-2c2d94182609", - [], - 12, - []), - User( - "&", - "_pseudo", - "_pseudo", - "_mail", - "https://firebasestorage.googleapis.com/v0/b/justmusic-435d5.appspot.com/o/RUiGpZ8AzCQPqiVJKwuQeIqiC4B2bafPGRGLh2La72LkmQst.jpg?alt=media&token=ac1916f0-e08d-43bd-977a-2c2d94182609", - [], - 12, - []), - User( - "&", - "_pseudo", - "_pseudo", - "_mail", - "https://firebasestorage.googleapis.com/v0/b/justmusic-435d5.appspot.com/o/RUiGpZ8AzCQPqiVJKwuQeIqiC4B2bafPGRGLh2La72LkmQst.jpg?alt=media&token=ac1916f0-e08d-43bd-977a-2c2d94182609", - [], - 12, - []), - User( - "&", - "_pseudo", - "_pseudo", - "_mail", - "https://firebasestorage.googleapis.com/v0/b/justmusic-435d5.appspot.com/o/RUiGpZ8AzCQPqiVJKwuQeIqiC4B2bafPGRGLh2La72LkmQst.jpg?alt=media&token=ac1916f0-e08d-43bd-977a-2c2d94182609", - [], - 12, - []), - ]; + List _listUsers = []; + + Future updateList(String value) async { + var newlistUsers = await MyApp.userViewModel.getUsersByUniqueId(value); + setState(() { + _listUsers = newlistUsers; + }); + } Future resetFullScreen() async { await SystemChannels.platform.invokeMethod( @@ -150,10 +49,8 @@ class _AddFriendScreenState extends State { Align( child: Text( "Ajouter des amis", - style: GoogleFonts.plusJakartaSans( - color: Colors.white, - fontSize: 14, - fontWeight: FontWeight.bold), + style: + GoogleFonts.plusJakartaSans(color: Colors.white, fontSize: 14, fontWeight: FontWeight.bold), ), ), GestureDetector( @@ -169,8 +66,7 @@ class _AddFriendScreenState extends State { height: 30, width: 30, child: const Image( - image: - AssetImage("assets/images/return_icon.png"), + image: AssetImage("assets/images/return_icon.png"), height: 8, ), ))), @@ -184,8 +80,7 @@ class _AddFriendScreenState extends State { child: Column( children: [ Padding( - padding: const EdgeInsets.only( - bottom: 20, left: 20, right: 20, top: 20), + padding: const EdgeInsets.only(bottom: 20, left: 20, right: 20, top: 20), child: SizedBox( height: 40, child: TextField( @@ -194,8 +89,8 @@ class _AddFriendScreenState extends State { keyboardAppearance: Brightness.dark, onEditingComplete: resetFullScreen, onSubmitted: (value) async { - if (_textEditingController.text.isEmpty) { - print("search"); + if (_textEditingController.text.isNotEmpty) { + updateList(value); } }, cursorColor: Colors.white, @@ -208,40 +103,31 @@ class _AddFriendScreenState extends State { ), focusedBorder: const OutlineInputBorder( borderSide: BorderSide(width: 1, color: grayColor), - borderRadius: - BorderRadius.all(Radius.circular(10))), - contentPadding: const EdgeInsets.only( - top: 0, - bottom: 0, - left: defaultPadding, - right: defaultPadding), + borderRadius: BorderRadius.all(Radius.circular(10))), + contentPadding: + const EdgeInsets.only(top: 0, bottom: 0, left: defaultPadding, right: defaultPadding), fillColor: searchBarColor, filled: true, focusColor: grayText, enabledBorder: const OutlineInputBorder( borderSide: BorderSide(width: 1, color: grayColor), - borderRadius: - BorderRadius.all(Radius.circular(10))), + borderRadius: BorderRadius.all(Radius.circular(10))), hintText: 'Chercher un ami', - hintStyle: - GoogleFonts.plusJakartaSans(color: grayHint)), + hintStyle: GoogleFonts.plusJakartaSans(color: grayHint)), ), ), ), Flexible( child: ScrollConfiguration( - behavior: - const ScrollBehavior().copyWith(scrollbars: true), + behavior: const ScrollBehavior().copyWith(scrollbars: true), child: ListView.builder( - physics: const BouncingScrollPhysics( - decelerationRate: ScrollDecelerationRate.fast), - itemCount: fakeList.length, + physics: const BouncingScrollPhysics(decelerationRate: ScrollDecelerationRate.fast), + itemCount: _listUsers.length, itemBuilder: (BuildContext context, int index) { return InkWell( child: Padding( - padding: EdgeInsets.fromLTRB(20, 0, 20, 20), - child: ProfileListComponent( - user: fakeList[index])), + padding: const EdgeInsets.fromLTRB(20, 0, 20, 20), + child: ProfileListComponent(user: _listUsers[index])), ); }, ))) diff --git a/Sources/justMUSIC/lib/services/UserService.dart b/Sources/justMUSIC/lib/services/UserService.dart index 8cfb929..35de6eb 100644 --- a/Sources/justMUSIC/lib/services/UserService.dart +++ b/Sources/justMUSIC/lib/services/UserService.dart @@ -3,18 +3,18 @@ import 'package:cloud_firestore/cloud_firestore.dart'; import '../main.dart'; class UserService { - Future>>> getUsersByIdUnique( - String uniqueId) async { - QuerySnapshot> response = await FirebaseFirestore - .instance + Future>>> getUsersByIdUnique(String uniqueId) async { + QuerySnapshot> response = await FirebaseFirestore.instance .collection("users") - .where("unique_id", arrayContains: uniqueId) + .where("unique_id", isGreaterThanOrEqualTo: uniqueId) + .where("unique_id", isLessThanOrEqualTo: uniqueId + "zzzzzzzzzzzzzzzzzzzzzzzzzzzz") + .limit(20) .get(); - var users = response.docs.where((doc) { - String id = doc["id"]; - return id != MyApp.userViewModel.userCurrent.id; + String id = doc["unique_id"]; + return id != MyApp.userViewModel.userCurrent.uniquePseudo; }).toList(); + print("cc34" + users.toString()); return users; } diff --git a/Sources/justMUSIC/lib/view_model/UserViewModel.dart b/Sources/justMUSIC/lib/view_model/UserViewModel.dart index e01def1..5af8a14 100644 --- a/Sources/justMUSIC/lib/view_model/UserViewModel.dart +++ b/Sources/justMUSIC/lib/view_model/UserViewModel.dart @@ -28,10 +28,7 @@ class UserViewModel { login(String pseudo, String password) async { try { await _authService.login(pseudo, password); - final user = await MyApp.db - .collection("users") - .doc(firebase_auth.FirebaseAuth.instance.currentUser?.uid) - .get(); + final user = await MyApp.db.collection("users").doc(firebase_auth.FirebaseAuth.instance.currentUser?.uid).get(); User data = UserMapper.toModel(user); _userCurrent = data; } catch (e) { @@ -46,10 +43,7 @@ class UserViewModel { updateUserCurrent() async { try { - final user = await MyApp.db - .collection("users") - .doc(firebase_auth.FirebaseAuth.instance.currentUser?.uid) - .get(); + final user = await MyApp.db.collection("users").doc(firebase_auth.FirebaseAuth.instance.currentUser?.uid).get(); User data = UserMapper.toModel(user); _userCurrent = data; } catch (e) { @@ -64,10 +58,7 @@ class UserViewModel { try { await _authService.register(pseudo.toLowerCase(), email, password); - final user = await MyApp.db - .collection("users") - .doc(firebase_auth.FirebaseAuth.instance.currentUser?.uid) - .get(); + final user = await MyApp.db.collection("users").doc(firebase_auth.FirebaseAuth.instance.currentUser?.uid).get(); User data = UserMapper.toModel(user); _userCurrent = data; } catch (e) { @@ -82,8 +73,7 @@ class UserViewModel { return UserMapper.toModel(value); }).toList(); return users; - } catch(e) { - print(e); + } catch (e) { return []; } } @@ -91,4 +81,10 @@ class UserViewModel { logout() { _authService.signOut(); } + + bool isFriend(String id) { + return _userCurrent.followed.contains(id); + } + + void addOrDeleteFriend(String id) {} }