11import 'dart:async' ;
22
33import 'package:disposebag/disposebag.dart' ;
4+ import 'package:distinct_value_connectable_stream/distinct_value_connectable_stream.dart' ;
45import 'package:flutter_bloc_pattern/flutter_bloc_pattern.dart' ;
5- import 'package:meta/meta.dart' ;
66import 'package:node_auth/domain/usecases/change_password_use_case.dart' ;
77import 'package:node_auth/pages/home/change_password/change_password.dart' ;
88import 'package:node_auth/utils/result.dart' ;
@@ -25,9 +25,9 @@ class ChangePasswordBloc extends DisposeCallbackBaseBloc {
2525 final Function1 <String , void > newPasswordChanged;
2626
2727 /// Output stream
28- final Stream <ChangePasswordState > changePasswordState$;
29- final Stream <String > passwordError$;
30- final Stream <String > newPasswordError$;
28+ final DistinctValueStream <ChangePasswordState > changePasswordState$;
29+ final Stream <String ? > passwordError$;
30+ final Stream <String ? > newPasswordError$;
3131
3232 ChangePasswordBloc ._({
3333 required this .changePassword,
@@ -40,8 +40,6 @@ class ChangePasswordBloc extends DisposeCallbackBaseBloc {
4040 }) : super (dispose);
4141
4242 factory ChangePasswordBloc (final ChangePasswordUseCase changePassword) {
43- assert (ChangePasswordUseCase != null );
44-
4543 /// Controllers
4644 final passwordS = PublishSubject <String >();
4745 final newPasswordS = PublishSubject <String >();
@@ -71,7 +69,7 @@ class ChangePasswordBloc extends DisposeCallbackBaseBloc {
7169 .where ((isValid) => isValid)
7270 .withLatestFrom (both$, (_, Tuple2 <String , String > both) => both)
7371 .exhaustMap ((both) => _performChangePassword (changePassword, both))
74- .share ( );
72+ .publishValueDistinct ( ChangePasswordState ((b) => b..isLoading = false ) );
7573
7674 final passwordError$ = both$
7775 .map ((tuple) {
@@ -134,22 +132,19 @@ class ChangePasswordBloc extends DisposeCallbackBaseBloc {
134132 ) {
135133 print ('[DEBUG] change password both=$both ' );
136134
137- ChangePasswordState resultToState (result) {
135+ ChangePasswordState resultToState (Result < void > result) {
138136 print ('[DEBUG] change password result=$result ' );
139137
140- if ( result is Success ) {
141- return ChangePasswordState ((b) => b
138+ return result. fold (
139+ (value) => ChangePasswordState ((b) => b
142140 ..isLoading = false
143141 ..error = null
144- ..message = 'Change password successfully!' );
145- }
146- if (result is Failure ) {
147- return ChangePasswordState ((b) => b
142+ ..message = 'Change password successfully!' ),
143+ (error, message) => ChangePasswordState ((b) => b
148144 ..isLoading = false
149- ..error = result.error
150- ..message = 'Error when change password: ${result .message }' );
151- }
152- return null ;
145+ ..error = error
146+ ..message = 'Error when change password: ${message }' ),
147+ );
153148 }
154149
155150 return changePassword (password: both.item1, newPassword: both.item2)
0 commit comments