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: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<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
Widget build(BuildContext context) {

@ -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<AddFriendScreen> {
final ScrollController _scrollController = ScrollController();
final TextEditingController _textEditingController = TextEditingController();
List<User> 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<User> _listUsers = [];
Future<void> updateList(String value) async {
var newlistUsers = await MyApp.userViewModel.getUsersByUniqueId(value);
setState(() {
_listUsers = newlistUsers;
});
}
Future<void> resetFullScreen() async {
await SystemChannels.platform.invokeMethod<void>(
@ -150,10 +49,8 @@ class _AddFriendScreenState extends State<AddFriendScreen> {
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<AddFriendScreen> {
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<AddFriendScreen> {
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<AddFriendScreen> {
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<AddFriendScreen> {
),
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])),
);
},
)))

@ -3,18 +3,18 @@ import 'package:cloud_firestore/cloud_firestore.dart';
import '../main.dart';
class UserService {
Future<List<QueryDocumentSnapshot<Map<String, dynamic>>>> getUsersByIdUnique(
String uniqueId) async {
QuerySnapshot<Map<String, dynamic>> response = await FirebaseFirestore
.instance
Future<List<QueryDocumentSnapshot<Map<String, dynamic>>>> getUsersByIdUnique(String uniqueId) async {
QuerySnapshot<Map<String, dynamic>> 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;
}

@ -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) {}
}

Loading…
Cancel
Save