56 lines
1.9 KiB
Dart
56 lines
1.9 KiB
Dart
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<KiosqueUser> 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<void> 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<void> updateCurrentUser(data) async {
|
|
final userId = FirebaseAuth.instance.currentUser.uid;
|
|
return await _firestore.collection("users").doc(userId).set(data);
|
|
}
|
|
}
|