master #81

Closed
malo wants to merge 322 commits from master into feat/bloc_layout/new-package
3 changed files with 26 additions and 34 deletions
Showing only changes of commit eb4ae834c1 - Show all commits

View File

@ -27,7 +27,7 @@ class ExampleSignInCubit extends SignInCubit<int> {
@override @override
FutureOrResult<int?> onSignInWithEmailAndPassword( FutureOrResult<int?> onSignInWithEmailAndPassword(
Result<Account, AppException> result, WyattForm form) { Result<Account, AppException> result, WyattForm form) {
print('onSignInWithEmailAndPassword'); print('onSignInWithEmailAndPassword: ${result.ok?.accessToken}');
return const Ok(1); return const Ok(1);
} }

View File

@ -72,11 +72,15 @@ class AuthenticationFirebaseDataSourceImpl<Data>
return; return;
} }
Account _addToStream( Future<Account> _addToCredentialStream(
UserCredential userCredential, UserCredential userCredential,
AuthenticationChangeEvent Function(Account account) eventBuilder, ) async {
) { final currentUser = _firebaseAuth.currentUser;
final account = AccountModel.fromFirebaseUserCredential(userCredential); final jwt = await currentUser?.getIdToken(true);
final account = AccountModel.fromFirebaseUserCredential(
userCredential,
accessToken: jwt,
);
_latestCredentials.add(userCredential); _latestCredentials.add(userCredential);
@ -114,12 +118,7 @@ class AuthenticationFirebaseDataSourceImpl<Data>
password: password, password: password,
); );
return _addToStream( return _addToCredentialStream(userCredential);
userCredential,
(account) => SignedUpEvent(
account: account,
),
);
} on FirebaseAuthException catch (e) { } on FirebaseAuthException catch (e) {
throw SignUpWithEmailAndPasswordFailureFirebase.fromCode(e.code); throw SignUpWithEmailAndPasswordFailureFirebase.fromCode(e.code);
} catch (_) { } catch (_) {
@ -139,12 +138,7 @@ class AuthenticationFirebaseDataSourceImpl<Data>
password: password, password: password,
); );
return _addToStream( return _addToCredentialStream(userCredential);
userCredential,
(account) => SignedInEvent(
account: account,
),
);
} on FirebaseAuthException catch (e) { } on FirebaseAuthException catch (e) {
throw SignInWithEmailAndPasswordFailureFirebase.fromCode(e.code); throw SignInWithEmailAndPasswordFailureFirebase.fromCode(e.code);
} catch (_) { } catch (_) {
@ -158,12 +152,7 @@ class AuthenticationFirebaseDataSourceImpl<Data>
try { try {
final userCredential = await _firebaseAuth.signInAnonymously(); final userCredential = await _firebaseAuth.signInAnonymously();
return _addToStream( return _addToCredentialStream(userCredential);
userCredential,
(account) => SignedInEvent(
account: account,
),
);
} on FirebaseAuthException catch (e) { } on FirebaseAuthException catch (e) {
throw SignInAnonymouslyFailureFirebase.fromCode(e.code); throw SignInAnonymouslyFailureFirebase.fromCode(e.code);
} catch (_) { } catch (_) {
@ -191,12 +180,7 @@ class AuthenticationFirebaseDataSourceImpl<Data>
final userCredential = final userCredential =
await _firebaseAuth.signInWithCredential(credential); await _firebaseAuth.signInWithCredential(credential);
return _addToStream( return _addToCredentialStream(userCredential);
userCredential,
(account) => SignedInEvent(
account: account,
),
);
} on FirebaseAuthException catch (e) { } on FirebaseAuthException catch (e) {
throw SignInWithGoogleFailureFirebase.fromCode(e.code); throw SignInWithGoogleFailureFirebase.fromCode(e.code);
} catch (_) { } catch (_) {
@ -248,7 +232,11 @@ class AuthenticationFirebaseDataSourceImpl<Data>
throw Exception(); // Get caught just after. 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; return account;
} on FirebaseAuthException catch (e) { } on FirebaseAuthException catch (e) {

View File

@ -21,8 +21,9 @@ import 'package:wyatt_authentication_bloc/src/domain/entities/account.dart';
/// Account Model to parse Firebase User data /// Account Model to parse Firebase User data
class AccountModel extends Account { class AccountModel extends Account {
factory AccountModel.fromFirebaseUserCredential( factory AccountModel.fromFirebaseUserCredential(
UserCredential? userCredential, UserCredential? userCredential, {
) { required String? accessToken,
}) {
final user = userCredential?.user; final user = userCredential?.user;
if (user != null) { if (user != null) {
final providerId = final providerId =
@ -39,14 +40,17 @@ class AccountModel extends Account {
email: user.email, email: user.email,
phoneNumber: user.phoneNumber, phoneNumber: user.phoneNumber,
photoURL: user.photoURL, photoURL: user.photoURL,
accessToken: userCredential?.credential?.accessToken, accessToken: accessToken,
); );
} else { } else {
throw ModelParsingFailureFirebase('null-user', 'User cannot be null'); 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) { if (user != null) {
final providerId = final providerId =
(user.providerData.isEmpty) ? '' : user.providerData.first.providerId; (user.providerData.isEmpty) ? '' : user.providerData.first.providerId;