milestone/stable-1-reconcile-auth-3 #176
@ -27,7 +27,7 @@ class ExampleSignInCubit extends SignInCubit<int> {
 | 
			
		||||
  @override
 | 
			
		||||
  FutureOrResult<int?> onSignInWithEmailAndPassword(
 | 
			
		||||
      Result<Account, AppException> result, WyattForm form) {
 | 
			
		||||
    print('onSignInWithEmailAndPassword');
 | 
			
		||||
    print('onSignInWithEmailAndPassword: ${result.ok?.accessToken}');
 | 
			
		||||
 | 
			
		||||
    return const Ok(1);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@ -72,11 +72,15 @@ class AuthenticationFirebaseDataSourceImpl<Data>
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  Account _addToStream(
 | 
			
		||||
  Future<Account> _addToCredentialStream(
 | 
			
		||||
    UserCredential userCredential,
 | 
			
		||||
    AuthenticationChangeEvent Function(Account account) eventBuilder,
 | 
			
		||||
  ) {
 | 
			
		||||
    final account = AccountModel.fromFirebaseUserCredential(userCredential);
 | 
			
		||||
  ) async {
 | 
			
		||||
    final currentUser = _firebaseAuth.currentUser;
 | 
			
		||||
    final jwt = await currentUser?.getIdToken(true);
 | 
			
		||||
    final account = AccountModel.fromFirebaseUserCredential(
 | 
			
		||||
      userCredential,
 | 
			
		||||
      accessToken: jwt,
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    _latestCredentials.add(userCredential);
 | 
			
		||||
 | 
			
		||||
@ -114,12 +118,7 @@ class AuthenticationFirebaseDataSourceImpl<Data>
 | 
			
		||||
        password: password,
 | 
			
		||||
      );
 | 
			
		||||
 | 
			
		||||
      return _addToStream(
 | 
			
		||||
        userCredential,
 | 
			
		||||
        (account) => SignedUpEvent(
 | 
			
		||||
          account: account,
 | 
			
		||||
        ),
 | 
			
		||||
      );
 | 
			
		||||
      return _addToCredentialStream(userCredential);
 | 
			
		||||
    } on FirebaseAuthException catch (e) {
 | 
			
		||||
      throw SignUpWithEmailAndPasswordFailureFirebase.fromCode(e.code);
 | 
			
		||||
    } catch (_) {
 | 
			
		||||
@ -139,12 +138,7 @@ class AuthenticationFirebaseDataSourceImpl<Data>
 | 
			
		||||
        password: password,
 | 
			
		||||
      );
 | 
			
		||||
 | 
			
		||||
      return _addToStream(
 | 
			
		||||
        userCredential,
 | 
			
		||||
        (account) => SignedInEvent(
 | 
			
		||||
          account: account,
 | 
			
		||||
        ),
 | 
			
		||||
      );
 | 
			
		||||
      return _addToCredentialStream(userCredential);
 | 
			
		||||
    } on FirebaseAuthException catch (e) {
 | 
			
		||||
      throw SignInWithEmailAndPasswordFailureFirebase.fromCode(e.code);
 | 
			
		||||
    } catch (_) {
 | 
			
		||||
@ -158,12 +152,7 @@ class AuthenticationFirebaseDataSourceImpl<Data>
 | 
			
		||||
    try {
 | 
			
		||||
      final userCredential = await _firebaseAuth.signInAnonymously();
 | 
			
		||||
 | 
			
		||||
      return _addToStream(
 | 
			
		||||
        userCredential,
 | 
			
		||||
        (account) => SignedInEvent(
 | 
			
		||||
          account: account,
 | 
			
		||||
        ),
 | 
			
		||||
      );
 | 
			
		||||
      return _addToCredentialStream(userCredential);
 | 
			
		||||
    } on FirebaseAuthException catch (e) {
 | 
			
		||||
      throw SignInAnonymouslyFailureFirebase.fromCode(e.code);
 | 
			
		||||
    } catch (_) {
 | 
			
		||||
@ -191,12 +180,7 @@ class AuthenticationFirebaseDataSourceImpl<Data>
 | 
			
		||||
      final userCredential =
 | 
			
		||||
          await _firebaseAuth.signInWithCredential(credential);
 | 
			
		||||
 | 
			
		||||
      return _addToStream(
 | 
			
		||||
        userCredential,
 | 
			
		||||
        (account) => SignedInEvent(
 | 
			
		||||
          account: account,
 | 
			
		||||
        ),
 | 
			
		||||
      );
 | 
			
		||||
      return _addToCredentialStream(userCredential);
 | 
			
		||||
    } on FirebaseAuthException catch (e) {
 | 
			
		||||
      throw SignInWithGoogleFailureFirebase.fromCode(e.code);
 | 
			
		||||
    } catch (_) {
 | 
			
		||||
@ -248,7 +232,11 @@ class AuthenticationFirebaseDataSourceImpl<Data>
 | 
			
		||||
        throw Exception(); // Get caught just after.
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      final account = AccountModel.fromFirebaseUser(_firebaseAuth.currentUser);
 | 
			
		||||
      final jwt = await _firebaseAuth.currentUser?.getIdToken(true);
 | 
			
		||||
      final account = AccountModel.fromFirebaseUser(
 | 
			
		||||
        _firebaseAuth.currentUser,
 | 
			
		||||
        accessToken: jwt,
 | 
			
		||||
      );
 | 
			
		||||
 | 
			
		||||
      return account;
 | 
			
		||||
    } on FirebaseAuthException catch (e) {
 | 
			
		||||
 | 
			
		||||
@ -21,8 +21,9 @@ import 'package:wyatt_authentication_bloc/src/domain/entities/account.dart';
 | 
			
		||||
/// Account Model to parse Firebase User data
 | 
			
		||||
class AccountModel extends Account {
 | 
			
		||||
  factory AccountModel.fromFirebaseUserCredential(
 | 
			
		||||
    UserCredential? userCredential,
 | 
			
		||||
  ) {
 | 
			
		||||
    UserCredential? userCredential, {
 | 
			
		||||
    required String? accessToken,
 | 
			
		||||
  }) {
 | 
			
		||||
    final user = userCredential?.user;
 | 
			
		||||
    if (user != null) {
 | 
			
		||||
      final providerId =
 | 
			
		||||
@ -39,14 +40,17 @@ class AccountModel extends Account {
 | 
			
		||||
        email: user.email,
 | 
			
		||||
        phoneNumber: user.phoneNumber,
 | 
			
		||||
        photoURL: user.photoURL,
 | 
			
		||||
        accessToken: userCredential?.credential?.accessToken,
 | 
			
		||||
        accessToken: accessToken,
 | 
			
		||||
      );
 | 
			
		||||
    } else {
 | 
			
		||||
      throw ModelParsingFailureFirebase('null-user', 'User cannot be null');
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  factory AccountModel.fromFirebaseUser(User? user, {String? accessToken}) {
 | 
			
		||||
  factory AccountModel.fromFirebaseUser(
 | 
			
		||||
    User? user, {
 | 
			
		||||
    required String? accessToken,
 | 
			
		||||
  }) {
 | 
			
		||||
    if (user != null) {
 | 
			
		||||
      final providerId =
 | 
			
		||||
          (user.providerData.isEmpty) ? '' : user.providerData.first.providerId;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user