Skip to content

Commit 041922e

Browse files
committed
feat: integrate side menu screen (#61)
1 parent 2ef5522 commit 041922e

File tree

5 files changed

+52
-5
lines changed

5 files changed

+52
-5
lines changed

lib/modules/home/home_presenter.dart

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ class HomePresenterImpl extends HomePresenter
1010
showDetailButtonDidTap.listen(_showDetailButtonDidTap).addTo(disposeBag);
1111
didSwipeDown.voidListen(_didSwipeDown).addTo(disposeBag);
1212
userAvatarDidTap.voidListen(_userAvatarDidTap).addTo(disposeBag);
13+
sideMenuDidShow.voidListen(_sideMenuDidShow).addTo(disposeBag);
14+
sideMenuDidDismiss.voidListen(_sideMenuDidDismiss).addTo(disposeBag);
1315

1416
surveysDidFetch.listen(_surveysDidFetch).addTo(disposeBag);
1517
surveysDidFailToFetch.listen(_surveysDidFailToFetch).addTo(disposeBag);
@@ -91,4 +93,12 @@ class HomePresenterImpl extends HomePresenter
9193
void _userAvatarDidTap() {
9294
view.showSideMenu();
9395
}
96+
97+
void _sideMenuDidShow() {
98+
view.setUserInteractionEnable(isEnabled: false);
99+
}
100+
101+
void _sideMenuDidDismiss() {
102+
view.setUserInteractionEnable(isEnabled: true);
103+
}
94104
}
Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,23 @@
11
part of 'side_menu_module.dart';
22

3-
abstract class SideMenuInteractorDelegate {}
3+
abstract class SideMenuInteractorDelegate {
4+
BehaviorSubject<void> get logoutDidSuccess;
5+
}
46

57
abstract class SideMenuInteractor
6-
extends Interactor<SideMenuInteractorDelegate> {}
8+
extends Interactor<SideMenuInteractorDelegate> {
9+
void logout();
10+
}
711

812
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+
}
1023
}

lib/modules/side_menu/side_menu_module.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,11 @@ import 'package:flutter_platform_widgets/flutter_platform_widgets.dart';
44
import 'package:streams_provider/streams_provider.dart';
55
import 'package:survey/core/viper/module.dart';
66
import 'package:survey/models/user_info.dart';
7+
import 'package:survey/modules/login/login_module.dart';
78
import 'package:survey/modules/screen.dart';
89
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';
912
part 'side_menu_interactor.dart';
1013

1114
part 'side_menu_router.dart';

lib/modules/side_menu/side_menu_presenter.dart

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,22 @@ abstract class SideMenuPresenter
55

66
class SideMenuPresenterImpl extends SideMenuPresenter
77
implements SideMenuViewDelegate, SideMenuInteractorDelegate {
8+
SideMenuPresenterImpl() {
9+
logoutButtonDidTap.voidListen(_logoutButtonDidTap);
10+
logoutDidSuccess.voidListen(_logoutDidSuccess);
11+
}
12+
813
@override
914
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+
}
1026
}
Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
part of 'side_menu_module.dart';
22

3-
abstract class SideMenuRouter extends Router {}
3+
abstract class SideMenuRouter extends Router {
4+
void replaceToLoginScreen(BuildContext context);
5+
}
46

57
class SideMenuRouterImpl extends SideMenuRouter {
6-
//
8+
@override
9+
void replaceToLoginScreen(BuildContext context) {
10+
context.navigator.pushReplacementNamed(LoginModule.routePath);
11+
}
712
}

0 commit comments

Comments
 (0)