fix(auth): fix stream account, now including correctly extra data
This commit is contained in:
parent
279d451cd8
commit
390fb81b1e
@ -14,6 +14,9 @@
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:rxdart/rxdart.dart';
|
||||
import 'package:wyatt_architecture/wyatt_architecture.dart';
|
||||
import 'package:wyatt_authentication_bloc/src/core/constants/form_field.dart';
|
||||
import 'package:wyatt_authentication_bloc/src/core/constants/form_name.dart';
|
||||
@ -43,6 +46,8 @@ class AuthenticationRepositoryImpl<T extends Object>
|
||||
final OnSignUpSuccess<T>? _onSignUpSuccess;
|
||||
|
||||
final OnAuthChange<T>? _onAccountChanges;
|
||||
final StreamController<FutureResult<AccountWrapper<T>>> _signUpStream =
|
||||
StreamController();
|
||||
|
||||
bool _pause = false; // Semaphore
|
||||
|
||||
@ -134,7 +139,11 @@ class AuthenticationRepositoryImpl<T extends Object>
|
||||
_formRepository.accessForm(AuthFormName.signUpForm).clone(),
|
||||
);
|
||||
await dataResult.foldAsync(
|
||||
_authenticationLocalDataSource.storeData,
|
||||
(data) async {
|
||||
await _authenticationLocalDataSource.storeData(data);
|
||||
_signUpStream
|
||||
.add(Future.value(Ok(AccountWrapperModel(account, data))));
|
||||
},
|
||||
(error) async => error,
|
||||
);
|
||||
}
|
||||
@ -205,16 +214,21 @@ class AuthenticationRepositoryImpl<T extends Object>
|
||||
);
|
||||
|
||||
@override
|
||||
Stream<FutureResult<AccountWrapper<T>>> streamAccount() =>
|
||||
_authenticationRemoteDataSource.streamAccount().map((account) async {
|
||||
if (_onAccountChanges.isNotNull && !_pause) {
|
||||
final dataResult = await _onAccountChanges!.call(account);
|
||||
return dataResult.map((data) => AccountWrapperModel(account, data));
|
||||
}
|
||||
return Ok<AccountWrapperModel<T>, AppException>(
|
||||
AccountWrapperModel<T>(account, null),
|
||||
);
|
||||
});
|
||||
Stream<FutureResult<AccountWrapper<T>>> streamAccount() => MergeStream([
|
||||
_signUpStream.stream.asBroadcastStream(),
|
||||
_authenticationRemoteDataSource.streamAccount().map((account) async {
|
||||
if (_onAccountChanges.isNotNull && !_pause) {
|
||||
final dataResult = await _onAccountChanges!.call(account);
|
||||
return dataResult.map((data) {
|
||||
_authenticationLocalDataSource.storeData(data);
|
||||
return AccountWrapperModel(account, data);
|
||||
});
|
||||
}
|
||||
return Ok<AccountWrapperModel<T>, AppException>(
|
||||
AccountWrapperModel<T>(account, null),
|
||||
);
|
||||
})
|
||||
]);
|
||||
|
||||
@override
|
||||
FutureResult<void> confirmPasswordReset({
|
||||
|
@ -21,6 +21,7 @@ dependencies:
|
||||
flutter_facebook_auth: ^4.3.0
|
||||
sign_in_with_apple: ^3.3.0
|
||||
twitter_login: ^4.2.3
|
||||
rxdart: ^0.27.7
|
||||
|
||||
wyatt_form_bloc:
|
||||
hosted: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/
|
||||
|
Loading…
x
Reference in New Issue
Block a user