Skip to content

Commit

Permalink
feat: integrate side menu screen (#61)
Browse files Browse the repository at this point in the history
- alert error when logout failure
  • Loading branch information
markgravity committed Jun 24, 2021
1 parent 84cb5dc commit 688dabd
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 4 deletions.
3 changes: 2 additions & 1 deletion lib/modules/side_menu/side_menu_interactor.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ part of 'side_menu_module.dart';

abstract class SideMenuInteractorDelegate {
BehaviorSubject<void> get logoutDidSuccess;
BehaviorSubject<Exception> get logoutDidFail;
}

abstract class SideMenuInteractor
Expand All @@ -22,6 +23,6 @@ class SideMenuInteractorImpl extends SideMenuInteractor {
.logout()
.then((value) => delegate?.logoutDidSuccess.add(null))
.onError<Exception>(
(error, stackTrace) => delegate?.logoutDidSuccess.add(null));
(error, stackTrace) => delegate?.logoutDidFail.add(error));
}
}
1 change: 1 addition & 0 deletions lib/modules/side_menu/side_menu_module.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import 'package:flutter/material.dart' hide Router;
import 'package:flutter/widgets.dart' hide Router;
import 'package:flutter_platform_widgets/flutter_platform_widgets.dart';
import 'package:streams_provider/streams_provider.dart';
import 'package:survey/components/alert/alert.dart';
import 'package:survey/core/viper/module.dart';
import 'package:survey/models/user_info.dart';
import 'package:survey/modules/login/login_module.dart';
Expand Down
11 changes: 11 additions & 0 deletions lib/modules/side_menu/side_menu_presenter.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ class SideMenuPresenterImpl extends SideMenuPresenter
SideMenuPresenterImpl() {
logoutButtonDidTap.voidListen(_logoutButtonDidTap).addTo(disposeBag);
logoutDidSuccess.voidListen(_logoutDidSuccess).addTo(disposeBag);
logoutDidFail.listen(_logoutDidFail).addTo(disposeBag);
stateDidInit.voidListen(_stateDidInit).addTo(disposeBag);
}

Expand All @@ -20,6 +21,12 @@ class SideMenuPresenterImpl extends SideMenuPresenter
@override
final logoutDidSuccess = BehaviorSubject<void>();

@override
final logoutDidFail = BehaviorSubject<Exception>();

@override
final alertDialogDidClose = BehaviorSubject<void>();

void _logoutButtonDidTap() {
interactor.logout();
}
Expand All @@ -31,4 +38,8 @@ class SideMenuPresenterImpl extends SideMenuPresenter
void _stateDidInit() {
view.setUser(interactor.authenticatedUser);
}

void _logoutDidFail(Exception exception) {
view.alert(exception);
}
}
6 changes: 4 additions & 2 deletions lib/modules/side_menu/side_menu_view.dart
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
part of 'side_menu_module.dart';

abstract class SideMenuViewDelegate {
abstract class SideMenuViewDelegate with AlertViewMixinDelegate {
BehaviorSubject<void> get stateDidInit;

BehaviorSubject<void> get logoutButtonDidTap;
}

abstract class SideMenuView extends View<SideMenuViewDelegate> {
abstract class SideMenuView extends View<SideMenuViewDelegate>
with AlertViewMixin {
void setUser(UserInfo user);
}

Expand All @@ -19,6 +20,7 @@ class SideMenuViewImpl extends StatefulWidget {

class _SideMenuViewImplState
extends ViewState<SideMenuViewImpl, SideMenuModule, SideMenuViewDelegate>
with AlertViewMixin
implements SideMenuView {
final _user = BehaviorSubject<UserInfo>();

Expand Down
6 changes: 5 additions & 1 deletion test/modules/home/home_view_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import 'package:flutter_test/flutter_test.dart';
import 'package:mockito/annotations.dart';
import 'package:quick_test/quick_widget_test.dart';
import 'package:skeletor/skeletor.dart';
import 'package:streams_provider/streams_provider.dart';
import 'package:survey/models/survey_info.dart';
import 'package:survey/models/user_info.dart';
import 'package:survey/modules/home/home_module.dart';
Expand All @@ -22,7 +23,10 @@ class MockSideMenuPresenter extends Mock
implements
SideMenuPresenter,
SideMenuViewDelegate,
SideMenuInteractorDelegate {}
SideMenuInteractorDelegate {
@override
final stateDidInit = BehaviorSubject<void>();
}

@GenerateMocks([HomeViewDelegate, SideMenuInteractor, SideMenuRouter])
void main() {
Expand Down

0 comments on commit 688dabd

Please sign in to comment.