TF-1977 Close email view and scroll to position inbox when clicking on logo
(cherry picked from commit 843c703e80559ab7d6a9fa3a4562ae85c1426a1f)
This commit is contained in:
@@ -18,4 +18,6 @@ class RefreshChangeEmailAction extends EmailUIAction {
|
||||
|
||||
@override
|
||||
List<Object?> get props => [newState];
|
||||
}
|
||||
}
|
||||
|
||||
class CloseEmailDetailedViewAction extends EmailUIAction {}
|
||||
@@ -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';
|
||||
@@ -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) {
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
@@ -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) {
|
||||
@@ -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
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
+3
-1
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user