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