File tree 5 files changed +52
-5
lines changed
5 files changed +52
-5
lines changed Original file line number Diff line number Diff line change @@ -10,6 +10,8 @@ class HomePresenterImpl extends HomePresenter
10
10
showDetailButtonDidTap.listen (_showDetailButtonDidTap).addTo (disposeBag);
11
11
didSwipeDown.voidListen (_didSwipeDown).addTo (disposeBag);
12
12
userAvatarDidTap.voidListen (_userAvatarDidTap).addTo (disposeBag);
13
+ sideMenuDidShow.voidListen (_sideMenuDidShow).addTo (disposeBag);
14
+ sideMenuDidDismiss.voidListen (_sideMenuDidDismiss).addTo (disposeBag);
13
15
14
16
surveysDidFetch.listen (_surveysDidFetch).addTo (disposeBag);
15
17
surveysDidFailToFetch.listen (_surveysDidFailToFetch).addTo (disposeBag);
@@ -91,4 +93,12 @@ class HomePresenterImpl extends HomePresenter
91
93
void _userAvatarDidTap () {
92
94
view.showSideMenu ();
93
95
}
96
+
97
+ void _sideMenuDidShow () {
98
+ view.setUserInteractionEnable (isEnabled: false );
99
+ }
100
+
101
+ void _sideMenuDidDismiss () {
102
+ view.setUserInteractionEnable (isEnabled: true );
103
+ }
94
104
}
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
+ void logout ();
10
+ }
7
11
8
12
class SideMenuInteractorImpl extends SideMenuInteractor {
9
- //
13
+ final AuthRepository _authRepository = locator.get ();
14
+
15
+ @override
16
+ void logout () {
17
+ _authRepository
18
+ .logout ()
19
+ .then ((value) => delegate? .logoutDidSuccess.add (null ))
20
+ .onError <Exception >(
21
+ (error, stackTrace) => delegate? .logoutDidSuccess.add (null ));
22
+ }
10
23
}
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,22 @@ abstract class SideMenuPresenter
5
5
6
6
class SideMenuPresenterImpl extends SideMenuPresenter
7
7
implements SideMenuViewDelegate , SideMenuInteractorDelegate {
8
+ SideMenuPresenterImpl () {
9
+ logoutButtonDidTap.voidListen (_logoutButtonDidTap);
10
+ logoutDidSuccess.voidListen (_logoutDidSuccess);
11
+ }
12
+
8
13
@override
9
14
final logoutButtonDidTap = BehaviorSubject <void >();
15
+
16
+ @override
17
+ final logoutDidSuccess = BehaviorSubject <void >();
18
+
19
+ void _logoutButtonDidTap () {
20
+ interactor.logout ();
21
+ }
22
+
23
+ void _logoutDidSuccess () {
24
+ router.replaceToLoginScreen (view.context);
25
+ }
10
26
}
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
}
You can’t perform that action at this time.
0 commit comments