Skip to content

Commit

Permalink
TF-1977 Close email view and scroll to position inbox when clicking o…
Browse files Browse the repository at this point in the history
…n logo
  • Loading branch information
dab246 committed Aug 29, 2023
1 parent 41c854c commit 843c703
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 13 deletions.
4 changes: 3 additions & 1 deletion lib/features/email/presentation/action/email_ui_action.dart
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,6 @@ class RefreshChangeEmailAction extends EmailUIAction {

@override
List<Object?> get props => [newState];
}
}

class CloseEmailDetailedViewAction extends EmailUIAction {}
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ import 'package:tmail_ui_user/features/email/domain/model/mark_read_action.dart'
import 'package:tmail_ui_user/features/email/domain/state/parse_calendar_event_state.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/parse_calendar_event_interactor.dart';
import 'package:tmail_ui_user/features/email/domain/usecases/store_opened_email_interactor.dart';
import 'package:tmail_ui_user/features/email/presentation/action/email_ui_action.dart';
import 'package:tmail_ui_user/features/email/presentation/bindings/calendar_event_interactor_bindings.dart';
import 'package:tmail_ui_user/features/email/presentation/controller/email_supervisor_controller.dart';
import 'package:tmail_ui_user/features/email/presentation/model/email_loaded.dart';
Expand Down Expand Up @@ -213,6 +214,21 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
mailboxDashBoardController.selectedEmail,
_handleOpenEmailDetailedView
);

ever(mailboxDashBoardController.emailUIAction, (action) {
if (action is CloseEmailDetailedViewAction) {
if (emailSupervisorController.supportedPageView.isTrue) {
emailSupervisorController.popEmailQueue(_currentEmailId);
emailSupervisorController.setCurrentEmailIndex(-1);
emailSupervisorController.disposePageViewController();
}
_updateCurrentEmailId(null);
_resetToOriginalValue();
mailboxDashBoardController.clearSelectedEmail();
mailboxDashBoardController.dispatchRoute(DashboardRoutes.thread);
mailboxDashBoardController.clearEmailUIAction();
}
});
}

bool isListEmailContainSelectedEmail(PresentationEmail selectedEmail) {
Expand Down
29 changes: 18 additions & 11 deletions lib/features/mailbox/presentation/mailbox_controller.dart
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,10 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
mailboxDashBoardController.clearMailboxUIAction();
} else if (action is OpenMailboxAction) {
if (currentContext != null) {
openMailbox(currentContext!, action.presentationMailbox);
_handleOpenMailbox(currentContext!, action.presentationMailbox);
if (action.presentationMailbox.role == PresentationMailbox.roleInbox) {
_autoScrollToTopMailboxList();
}
}
mailboxDashBoardController.clearMailboxUIAction();
}
Expand Down Expand Up @@ -744,15 +747,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
final inboxMailbox = findMailboxNodeByRole(PresentationMailbox.roleInbox);
mailboxDashBoardController.setSelectedMailbox(inboxMailbox?.item);
_updateSelectedMailboxRouteOnBrowser();

WidgetsBinding.instance.addPostFrameCallback((_) {
if(mailboxListScrollController.hasClients){
mailboxListScrollController.animateTo(
0,
duration: const Duration(milliseconds: 500),
curve: Curves.fastOutSlowIn);
}
});
_autoScrollToTopMailboxList();
}

void _deleteMailboxFailure(DeleteMultipleMailboxFailure failure) {
Expand Down Expand Up @@ -1209,8 +1204,20 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
final newMailboxNode = findMailboxNodeById(_newFolderId!);
log('MailboxController::_redirectToNewFolder:newMailboxNode: $newMailboxNode');
if (newMailboxNode != null && currentContext != null) {
openMailbox(currentContext!, newMailboxNode.item);
_handleOpenMailbox(currentContext!, newMailboxNode.item);
}
_clearNewFolderId();
}

void _autoScrollToTopMailboxList() {
WidgetsBinding.instance.addPostFrameCallback((_) {
if (mailboxListScrollController.hasClients){
mailboxListScrollController.animateTo(
0,
duration: const Duration(milliseconds: 500),
curve: Curves.fastOutSlowIn
);
}
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2087,7 +2087,9 @@ class MailboxDashBoardController extends ReloadableController {

void redirectToInboxAction() {
log('MailboxDashBoardController::redirectToInboxAction:');
if (selectedMailbox.value?.role == PresentationMailbox.roleInbox) return;
if (dashboardRoute.value == DashboardRoutes.emailDetailed) {
dispatchEmailUIAction(CloseEmailDetailedViewAction());
}

final inboxId = getMailboxIdByRole(PresentationMailbox.roleInbox);
if (inboxId == null) return;
Expand Down

0 comments on commit 843c703

Please sign in to comment.