import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:firebase_auth/firebase_auth.dart'; import 'package:le_kiosque_by_gcs/model/user.dart'; import 'package:le_kiosque_by_gcs/services/firestore/user_service.dart'; class FirebaseUserService implements UserService { FirebaseFirestore _firestore = FirebaseFirestore.instance; @override Stream getCurrentUser(String uid) { final snapshots = _firestore.collection("users").doc(uid).snapshots(); return snapshots.map( (event) { final data = event.data(); return KiosqueUser( uid: data["uid"], displayName: data['displayName'], emailAddress: data['emailAddress'], city: data['city'], country: data['country'], gender: data['gender'], profileUrl: data['profileUrl'], phoneNumber: data['phoneNumber'], createdAt: (data['createdAt'] as Timestamp).toDate(), updatedAt : (data['updatedAt'] as Timestamp)?.toDate(), birthDay : (data['birthDay'] as Timestamp)?.toDate(), ); }, ); } @override Future save(KiosqueUser kiosqueUser) async { final user = { 'uid': kiosqueUser.uid, 'displayName': kiosqueUser.displayName, 'emailAddress': kiosqueUser.emailAddress, 'profileUrl': kiosqueUser.profileUrl, 'phoneNumber': kiosqueUser.phoneNumber, 'city': kiosqueUser.city, 'country': kiosqueUser.country, 'gender': kiosqueUser.gender, 'createdAt': kiosqueUser.createdAt, 'updatedAt': kiosqueUser.updatedAt, 'birthDay': kiosqueUser.birthDay, }; return await _firestore.collection("users").doc(user['uid']).set(user); } @override Future updateCurrentUser(data) async { final userId = FirebaseAuth.instance.currentUser.uid; return await _firestore.collection("users").doc(userId).set(data); } }