manage search friend

pull/32/head
Lucas Delanier 2 years ago
parent 8e5e386d79
commit 00219afacb

@ -1,5 +1,6 @@
import 'package:flutter/Material.dart'; import 'package:flutter/Material.dart';
import 'package:google_fonts/google_fonts.dart'; import 'package:google_fonts/google_fonts.dart';
import '../main.dart';
import '../model/User.dart'; import '../model/User.dart';
import '../values/constants.dart'; import '../values/constants.dart';
@ -12,7 +13,17 @@ class ProfileListComponent extends StatefulWidget {
} }
class _ProfileListComponentState extends State<ProfileListComponent> { class _ProfileListComponentState extends State<ProfileListComponent> {
bool clicked = false; late bool clicked;
@override
void initState() {
if (MyApp.userViewModel.isFriend(widget.user.id)) {
clicked = true;
} else {
clicked = false;
}
super.initState();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {

@ -4,6 +4,7 @@ import 'package:google_fonts/google_fonts.dart';
import 'package:justmusic/values/constants.dart'; import 'package:justmusic/values/constants.dart';
import '../components/profile_list_component.dart'; import '../components/profile_list_component.dart';
import '../main.dart';
import '../model/User.dart'; import '../model/User.dart';
class AddFriendScreen extends StatefulWidget { class AddFriendScreen extends StatefulWidget {
@ -17,116 +18,14 @@ class _AddFriendScreenState extends State<AddFriendScreen> {
final ScrollController _scrollController = ScrollController(); final ScrollController _scrollController = ScrollController();
final TextEditingController _textEditingController = TextEditingController(); final TextEditingController _textEditingController = TextEditingController();
List<User> fakeList = [ List<User> _listUsers = [];
User(
"&", Future<void> updateList(String value) async {
"_pseudo", var newlistUsers = await MyApp.userViewModel.getUsersByUniqueId(value);
"_pseudo", setState(() {
"_mail", _listUsers = newlistUsers;
"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,
[]),
];
Future<void> resetFullScreen() async { Future<void> resetFullScreen() async {
await SystemChannels.platform.invokeMethod<void>( await SystemChannels.platform.invokeMethod<void>(
@ -150,10 +49,8 @@ class _AddFriendScreenState extends State<AddFriendScreen> {
Align( Align(
child: Text( child: Text(
"Ajouter des amis", "Ajouter des amis",
style: GoogleFonts.plusJakartaSans( style:
color: Colors.white, GoogleFonts.plusJakartaSans(color: Colors.white, fontSize: 14, fontWeight: FontWeight.bold),
fontSize: 14,
fontWeight: FontWeight.bold),
), ),
), ),
GestureDetector( GestureDetector(
@ -169,8 +66,7 @@ class _AddFriendScreenState extends State<AddFriendScreen> {
height: 30, height: 30,
width: 30, width: 30,
child: const Image( child: const Image(
image: image: AssetImage("assets/images/return_icon.png"),
AssetImage("assets/images/return_icon.png"),
height: 8, height: 8,
), ),
))), ))),
@ -184,8 +80,7 @@ class _AddFriendScreenState extends State<AddFriendScreen> {
child: Column( child: Column(
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.only( padding: const EdgeInsets.only(bottom: 20, left: 20, right: 20, top: 20),
bottom: 20, left: 20, right: 20, top: 20),
child: SizedBox( child: SizedBox(
height: 40, height: 40,
child: TextField( child: TextField(
@ -194,8 +89,8 @@ class _AddFriendScreenState extends State<AddFriendScreen> {
keyboardAppearance: Brightness.dark, keyboardAppearance: Brightness.dark,
onEditingComplete: resetFullScreen, onEditingComplete: resetFullScreen,
onSubmitted: (value) async { onSubmitted: (value) async {
if (_textEditingController.text.isEmpty) { if (_textEditingController.text.isNotEmpty) {
print("search"); updateList(value);
} }
}, },
cursorColor: Colors.white, cursorColor: Colors.white,
@ -208,40 +103,31 @@ class _AddFriendScreenState extends State<AddFriendScreen> {
), ),
focusedBorder: const OutlineInputBorder( focusedBorder: const OutlineInputBorder(
borderSide: BorderSide(width: 1, color: grayColor), borderSide: BorderSide(width: 1, color: grayColor),
borderRadius: borderRadius: BorderRadius.all(Radius.circular(10))),
BorderRadius.all(Radius.circular(10))), contentPadding:
contentPadding: const EdgeInsets.only( const EdgeInsets.only(top: 0, bottom: 0, left: defaultPadding, right: defaultPadding),
top: 0,
bottom: 0,
left: defaultPadding,
right: defaultPadding),
fillColor: searchBarColor, fillColor: searchBarColor,
filled: true, filled: true,
focusColor: grayText, focusColor: grayText,
enabledBorder: const OutlineInputBorder( enabledBorder: const OutlineInputBorder(
borderSide: BorderSide(width: 1, color: grayColor), borderSide: BorderSide(width: 1, color: grayColor),
borderRadius: borderRadius: BorderRadius.all(Radius.circular(10))),
BorderRadius.all(Radius.circular(10))),
hintText: 'Chercher un ami', hintText: 'Chercher un ami',
hintStyle: hintStyle: GoogleFonts.plusJakartaSans(color: grayHint)),
GoogleFonts.plusJakartaSans(color: grayHint)),
), ),
), ),
), ),
Flexible( Flexible(
child: ScrollConfiguration( child: ScrollConfiguration(
behavior: behavior: const ScrollBehavior().copyWith(scrollbars: true),
const ScrollBehavior().copyWith(scrollbars: true),
child: ListView.builder( child: ListView.builder(
physics: const BouncingScrollPhysics( physics: const BouncingScrollPhysics(decelerationRate: ScrollDecelerationRate.fast),
decelerationRate: ScrollDecelerationRate.fast), itemCount: _listUsers.length,
itemCount: fakeList.length,
itemBuilder: (BuildContext context, int index) { itemBuilder: (BuildContext context, int index) {
return InkWell( return InkWell(
child: Padding( child: Padding(
padding: EdgeInsets.fromLTRB(20, 0, 20, 20), padding: const EdgeInsets.fromLTRB(20, 0, 20, 20),
child: ProfileListComponent( child: ProfileListComponent(user: _listUsers[index])),
user: fakeList[index])),
); );
}, },
))) )))

@ -3,18 +3,18 @@ import 'package:cloud_firestore/cloud_firestore.dart';
import '../main.dart'; import '../main.dart';
class UserService { class UserService {
Future<List<QueryDocumentSnapshot<Map<String, dynamic>>>> getUsersByIdUnique( Future<List<QueryDocumentSnapshot<Map<String, dynamic>>>> getUsersByIdUnique(String uniqueId) async {
String uniqueId) async { QuerySnapshot<Map<String, dynamic>> response = await FirebaseFirestore.instance
QuerySnapshot<Map<String, dynamic>> response = await FirebaseFirestore
.instance
.collection("users") .collection("users")
.where("unique_id", arrayContains: uniqueId) .where("unique_id", isGreaterThanOrEqualTo: uniqueId)
.where("unique_id", isLessThanOrEqualTo: uniqueId + "zzzzzzzzzzzzzzzzzzzzzzzzzzzz")
.limit(20)
.get(); .get();
var users = response.docs.where((doc) { var users = response.docs.where((doc) {
String id = doc["id"]; String id = doc["unique_id"];
return id != MyApp.userViewModel.userCurrent.id; return id != MyApp.userViewModel.userCurrent.uniquePseudo;
}).toList(); }).toList();
print("cc34" + users.toString());
return users; return users;
} }

@ -28,10 +28,7 @@ class UserViewModel {
login(String pseudo, String password) async { login(String pseudo, String password) async {
try { try {
await _authService.login(pseudo, password); await _authService.login(pseudo, password);
final user = await MyApp.db final user = await MyApp.db.collection("users").doc(firebase_auth.FirebaseAuth.instance.currentUser?.uid).get();
.collection("users")
.doc(firebase_auth.FirebaseAuth.instance.currentUser?.uid)
.get();
User data = UserMapper.toModel(user); User data = UserMapper.toModel(user);
_userCurrent = data; _userCurrent = data;
} catch (e) { } catch (e) {
@ -46,10 +43,7 @@ class UserViewModel {
updateUserCurrent() async { updateUserCurrent() async {
try { try {
final user = await MyApp.db final user = await MyApp.db.collection("users").doc(firebase_auth.FirebaseAuth.instance.currentUser?.uid).get();
.collection("users")
.doc(firebase_auth.FirebaseAuth.instance.currentUser?.uid)
.get();
User data = UserMapper.toModel(user); User data = UserMapper.toModel(user);
_userCurrent = data; _userCurrent = data;
} catch (e) { } catch (e) {
@ -64,10 +58,7 @@ class UserViewModel {
try { try {
await _authService.register(pseudo.toLowerCase(), email, password); await _authService.register(pseudo.toLowerCase(), email, password);
final user = await MyApp.db final user = await MyApp.db.collection("users").doc(firebase_auth.FirebaseAuth.instance.currentUser?.uid).get();
.collection("users")
.doc(firebase_auth.FirebaseAuth.instance.currentUser?.uid)
.get();
User data = UserMapper.toModel(user); User data = UserMapper.toModel(user);
_userCurrent = data; _userCurrent = data;
} catch (e) { } catch (e) {
@ -82,8 +73,7 @@ class UserViewModel {
return UserMapper.toModel(value); return UserMapper.toModel(value);
}).toList(); }).toList();
return users; return users;
} catch(e) { } catch (e) {
print(e);
return []; return [];
} }
} }
@ -91,4 +81,10 @@ class UserViewModel {
logout() { logout() {
_authService.signOut(); _authService.signOut();
} }
bool isFriend(String id) {
return _userCurrent.followed.contains(id);
}
void addOrDeleteFriend(String id) {}
} }

Loading…
Cancel
Save