Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import 'package:buddy_book/presentation/login_screen.dart';
- import 'package:buddy_book/repositories/user_entity.dart';
- import 'package:buddy_book/repositories/user_repository.dart';
- import 'package:firebase_auth/firebase_auth.dart';
- import 'package:flutter/services.dart';
- import 'package:google_sign_in/google_sign_in.dart';
- class FirebaseUserRepository implements UserRepository {
- final FirebaseAuth auth;
- const FirebaseUserRepository(this.auth);
- @override
- Future<UserEntity> login() async {
- final firebaseUser = await auth.currentUser();
- if (firebaseUser == null) return null;
- return UserEntity(
- id: firebaseUser.uid,
- displayName: firebaseUser.displayName,
- photoUrl: firebaseUser.photoUrl,
- email: firebaseUser.email);
- }
- @override
- Future<bool> isConnected() async {
- final isConnected = await auth.currentUser().then((userConnected) {
- return userConnected != null;
- });
- return isConnected;
- }
- @override
- Future<UserEntity> loginEmailPassword(String email, String password) async {
- return await auth
- .signInWithEmailAndPassword(email: email, password: password)
- .then((firebaseUser) {
- return UserEntity(
- id: firebaseUser.uid,
- displayName: firebaseUser.displayName,
- photoUrl: firebaseUser.photoUrl,
- email: firebaseUser.email);
- }).catchError((Object obj, StackTrace stack){
- throw stack;
- });
- }
- @override
- Future<UserEntity> loginWithGoogle() async {
- final GoogleSignIn googleSignIn = new GoogleSignIn();
- googleSignIn.signOut();
- final GoogleSignInAccount googleUser = await googleSignIn.signIn();
- GoogleSignInAuthentication credentials = await googleUser.authentication;
- return await auth
- .signInWithGoogle(
- idToken: credentials.idToken,
- accessToken: credentials.accessToken,
- )
- .then((firebaseUser) {
- return UserEntity(
- id: firebaseUser.uid,
- displayName: firebaseUser.displayName,
- photoUrl: firebaseUser.photoUrl,
- email: firebaseUser.email);
- });
- // return await
- }
- @override
- void sendPasswordLink(String email) {
- auth.sendPasswordResetEmail(email: email);
- }
- @override
- Future<UserEntity> createAccount(String email, String password, String name) {
- return auth
- .createUserWithEmailAndPassword(email: email, password: password)
- .then((firebaseUser) {
- return UserEntity(
- id: firebaseUser.uid,
- displayName: firebaseUser.displayName,
- photoUrl: firebaseUser.photoUrl,
- email: firebaseUser.email,
- );
- });
- }
- }
Add Comment
Please, Sign In to add comment