Files
le-kiosque-flutter/lib/services/firestore/firebase_user_service.dart
T
2021-03-31 22:10:42 +02:00

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);
}
}