File tree 6 files changed +67
-11
lines changed
6 files changed +67
-11
lines changed Original file line number Diff line number Diff line change @@ -11,6 +11,8 @@ class HomePresenterImpl extends HomePresenter
11
11
didSwipeDown.voidListen (_didSwipeDown).addTo (disposeBag);
12
12
userAvatarDidTap.voidListen (_userAvatarDidTap).addTo (disposeBag);
13
13
currentPageDidChange.listen (_currentPageDidChange).addTo (disposeBag);
14
+ sideMenuDidShow.voidListen (_sideMenuDidShow).addTo (disposeBag);
15
+ sideMenuDidDismiss.voidListen (_sideMenuDidDismiss).addTo (disposeBag);
14
16
15
17
surveysDidFetchFromCached
16
18
.listen (_surveysDidFetchFromCached)
@@ -128,4 +130,12 @@ class HomePresenterImpl extends HomePresenter
128
130
void _currentPageDidChange (int page) {
129
131
view.setCurrentPage (page);
130
132
}
133
+
134
+ void _sideMenuDidShow () {
135
+ view.setUserInteractionEnable (isEnabled: false );
136
+ }
137
+
138
+ void _sideMenuDidDismiss () {
139
+ view.setUserInteractionEnable (isEnabled: true );
140
+ }
131
141
}
Original file line number Diff line number Diff line change 1
1
part of 'side_menu_module.dart' ;
2
2
3
- abstract class SideMenuInteractorDelegate {}
3
+ abstract class SideMenuInteractorDelegate {
4
+ BehaviorSubject <void > get logoutDidSuccess;
5
+ }
4
6
5
7
abstract class SideMenuInteractor
6
- extends Interactor <SideMenuInteractorDelegate > {}
8
+ extends Interactor <SideMenuInteractorDelegate > {
9
+ UserInfo get authenticatedUser;
10
+ void logout ();
11
+ }
7
12
8
13
class SideMenuInteractorImpl extends SideMenuInteractor {
9
- //
14
+ final AuthRepository _authRepository = locator.get ();
15
+
16
+ @override
17
+ UserInfo get authenticatedUser => _authRepository.user! ;
18
+
19
+ @override
20
+ void logout () {
21
+ _authRepository
22
+ .logout ()
23
+ .then ((value) => delegate? .logoutDidSuccess.add (null ))
24
+ .onError <Exception >(
25
+ (error, stackTrace) => delegate? .logoutDidSuccess.add (null ));
26
+ }
10
27
}
Original file line number Diff line number Diff line change @@ -4,8 +4,11 @@ import 'package:flutter_platform_widgets/flutter_platform_widgets.dart';
4
4
import 'package:streams_provider/streams_provider.dart' ;
5
5
import 'package:survey/core/viper/module.dart' ;
6
6
import 'package:survey/models/user_info.dart' ;
7
+ import 'package:survey/modules/login/login_module.dart' ;
7
8
import 'package:survey/modules/screen.dart' ;
8
9
import 'package:flutter_gen/gen_l10n/app_localizations.dart' ;
10
+ import 'package:survey/repositories/auth_repository.dart' ;
11
+ import 'package:survey/services/locator/locator_service.dart' ;
9
12
part 'side_menu_interactor.dart' ;
10
13
11
14
part 'side_menu_router.dart' ;
Original file line number Diff line number Diff line change @@ -5,6 +5,30 @@ abstract class SideMenuPresenter
5
5
6
6
class SideMenuPresenterImpl extends SideMenuPresenter
7
7
implements SideMenuViewDelegate , SideMenuInteractorDelegate {
8
+ SideMenuPresenterImpl () {
9
+ logoutButtonDidTap.voidListen (_logoutButtonDidTap).addTo (disposeBag);
10
+ logoutDidSuccess.voidListen (_logoutDidSuccess).addTo (disposeBag);
11
+ stateDidInit.voidListen (_stateDidInit).addTo (disposeBag);
12
+ }
13
+
14
+ @override
15
+ final stateDidInit = BehaviorSubject <void >();
16
+
8
17
@override
9
18
final logoutButtonDidTap = BehaviorSubject <void >();
19
+
20
+ @override
21
+ final logoutDidSuccess = BehaviorSubject <void >();
22
+
23
+ void _logoutButtonDidTap () {
24
+ interactor.logout ();
25
+ }
26
+
27
+ void _logoutDidSuccess () {
28
+ router.replaceToLoginScreen (view.context);
29
+ }
30
+
31
+ void _stateDidInit () {
32
+ view.setUser (interactor.authenticatedUser);
33
+ }
10
34
}
Original file line number Diff line number Diff line change 1
1
part of 'side_menu_module.dart' ;
2
2
3
- abstract class SideMenuRouter extends Router {}
3
+ abstract class SideMenuRouter extends Router {
4
+ void replaceToLoginScreen (BuildContext context);
5
+ }
4
6
5
7
class SideMenuRouterImpl extends SideMenuRouter {
6
- //
8
+ @override
9
+ void replaceToLoginScreen (BuildContext context) {
10
+ context.navigator.pushReplacementNamed (LoginModule .routePath);
11
+ }
7
12
}
Original file line number Diff line number Diff line change 1
1
part of 'side_menu_module.dart' ;
2
2
3
3
abstract class SideMenuViewDelegate {
4
+ BehaviorSubject <void > get stateDidInit;
5
+
4
6
BehaviorSubject <void > get logoutButtonDidTap;
5
7
}
6
8
@@ -23,12 +25,7 @@ class _SideMenuViewImplState
23
25
@override
24
26
void initState () {
25
27
super .initState ();
26
-
27
- final user = UserInfo ();
28
- user.email = "mark@nimblehq.co" ;
29
- user.avatarUrl =
30
- "https://en.gravatar.com/userimage/137591909/6a42a5a20cd79d50edb957644bc41b0c.png" ;
31
- setUser (user);
28
+ delegate? .stateDidInit.add (null );
32
29
}
33
30
34
31
@override
You can’t perform that action at this time.
0 commit comments