@@ -13,6 +13,8 @@ import 'package:node_auth/domain/models/user_and_token.dart';
1313import 'package:node_auth/domain/repositories/user_repository.dart' ;
1414import 'package:node_auth/utils/result.dart' ;
1515import 'package:rxdart/rxdart.dart' ;
16+ import 'package:rxdart_ext/rxdart_ext.dart' ;
17+ import 'package:tuple/tuple.dart' ;
1618
1719part 'mappers.dart' ;
1820
@@ -42,34 +44,28 @@ class UserRepositoryImpl implements UserRepository {
4244 }
4345
4446 @override
45- Stream < Result < void >> login ({
47+ Single_Result_Unit login ({
4648 required String email,
4749 required String password,
4850 }) {
49- return _execute (
50- () => _remoteDataSource.loginUser (
51- email,
52- password,
53- ),
54- ).flatMapResult ((result) {
51+ return _execute (() => _remoteDataSource.loginUser (email, password))
52+ .flatMapResult ((result) {
5553 final token = result! .token! ;
56-
57- return _execute (
58- () => _remoteDataSource.getUserProfile (
59- email,
60- token,
61- ),
62- ).flatMapResult (
63- (user) => _execute (
64- () => _localDataSource.saveUserAndToken (
65- _Mappers .userResponseToUserAndTokenEntity (
66- user! ,
67- token,
68- ),
69- ),
70- ),
71- );
72- });
54+ return _execute (() => _remoteDataSource
55+ .getUserProfile (email, token)
56+ .then ((user) => Tuple2 (user, token)));
57+ }).flatMapResult (
58+ (tuple) => _execute (
59+ () => _localDataSource
60+ .saveUserAndToken (
61+ _Mappers .userResponseToUserAndTokenEntity (
62+ tuple! .item1,
63+ tuple.item2,
64+ ),
65+ )
66+ .then ((value) => unit),
67+ ),
68+ );
7369 }
7470
7571 @override
@@ -173,9 +169,11 @@ class UserRepositoryImpl implements UserRepository {
173169 /// if future is successful, emit [Success]
174170 /// if future complete with error, emit [Failure]
175171 ///
176- Stream <Result <T >> _execute <T >(Future <T > Function () factory ) =>
177- Rx .fromCallable (factory )
178- .doOnError (_handleUnauthenticatedError)
172+ Single <Result <T >> _execute <T >(Future <T > Function () factory ) =>
173+ Single .fromCallable (factory )
174+ .doOnError (
175+ _handleUnauthenticatedError) // TODO(single): remove singleOrError
176+ .singleOrError ()
179177 .map <Result <T >>((value) => Success <T >.of (value: value))
180178 .onErrorReturnWith (_errorToResult);
181179
0 commit comments