feat(authentication)!: add repo in callback usecases (close #55) #61

Merged
malo merged 1 commits from authentication/feature/repo_in_callbacks into master 2022-12-03 23:55:49 +00:00
2 changed files with 16 additions and 4 deletions
Showing only changes of commit ca70f2eb1d - Show all commits

View File

@ -23,6 +23,7 @@ import 'package:wyatt_type_utils/wyatt_type_utils.dart';
import 'package:wyatt_architecture/wyatt_architecture.dart'; import 'package:wyatt_architecture/wyatt_architecture.dart';
FutureOrResult<int?> onSignUpSuccess( FutureOrResult<int?> onSignUpSuccess(
AuthenticationRepository<int> repo,
Account? account, Account? account,
WyattForm form, WyattForm form,
) async { ) async {
@ -35,9 +36,15 @@ FutureOrResult<int?> onSignUpSuccess(
return const Ok<int, AppException>(id); return const Ok<int, AppException>(id);
} }
FutureOrResult<int?> onAccountChanges(Account? account) async { FutureOrResult<int?> onAccountChanges(
AuthenticationRepository<int> repo,
Account? account,
) async {
final id = Random().nextInt(1000); final id = Random().nextInt(1000);
debugPrint('onAccountChanges: $account, generatedId: $id'); final token =
await repo.getIdentityToken().fold((value) => value, (error) => 'null');
debugPrint('onAccountChanges: $account, token: $token, generatedId: $id');
return Ok<int, AppException>(id); return Ok<int, AppException>(id);
} }

View File

@ -30,11 +30,15 @@ import 'package:wyatt_form_bloc/wyatt_form_bloc.dart';
import 'package:wyatt_type_utils/wyatt_type_utils.dart'; import 'package:wyatt_type_utils/wyatt_type_utils.dart';
typedef OnSignUpSuccess<T> = FutureOrResult<T?> Function( typedef OnSignUpSuccess<T> = FutureOrResult<T?> Function(
AuthenticationRepository<T> repo,
Account? account, Account? account,
WyattForm form, WyattForm form,
); );
typedef OnAuthChange<T> = FutureOrResult<T?> Function(Account? account); typedef OnAuthChange<T> = FutureOrResult<T?> Function(
AuthenticationRepository<T> repo,
Account? account,
);
class AuthenticationRepositoryImpl<T extends Object> class AuthenticationRepositoryImpl<T extends Object>
extends AuthenticationRepository<T> { extends AuthenticationRepository<T> {
@ -149,6 +153,7 @@ class AuthenticationRepositoryImpl<T extends Object>
await _authenticationLocalDataSource.storeAccount(account); await _authenticationLocalDataSource.storeAccount(account);
if (_onSignUpSuccess.isNotNull) { if (_onSignUpSuccess.isNotNull) {
final dataResult = await _onSignUpSuccess!.call( final dataResult = await _onSignUpSuccess!.call(
this,
account, account,
_formRepository.accessForm(AuthFormName.signUpForm).clone(), _formRepository.accessForm(AuthFormName.signUpForm).clone(),
); );
@ -232,7 +237,7 @@ class AuthenticationRepositoryImpl<T extends Object>
_signUpStream.stream.asBroadcastStream(), _signUpStream.stream.asBroadcastStream(),
_authenticationRemoteDataSource.streamAccount().map((account) async { _authenticationRemoteDataSource.streamAccount().map((account) async {
if (_onAccountChanges.isNotNull && !_pause) { if (_onAccountChanges.isNotNull && !_pause) {
final dataResult = await _onAccountChanges!.call(account); final dataResult = await _onAccountChanges!.call(this, account);
return dataResult.map((data) { return dataResult.map((data) {
_authenticationLocalDataSource.storeData(data); _authenticationLocalDataSource.storeData(data);
return AccountWrapperModel(account, data); return AccountWrapperModel(account, data);