TF-1977 Close email view and scroll to position inbox when clicking on logo
(cherry picked from commit 843c703e80559ab7d6a9fa3a4562ae85c1426a1f)
This commit is contained in:
@@ -19,3 +19,5 @@ class RefreshChangeEmailAction extends EmailUIAction {
|
|||||||
@override
|
@override
|
||||||
List<Object?> get props => [newState];
|
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/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/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/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/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/controller/email_supervisor_controller.dart';
|
||||||
import 'package:tmail_ui_user/features/email/presentation/model/email_loaded.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,
|
mailboxDashBoardController.selectedEmail,
|
||||||
_handleOpenEmailDetailedView
|
_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) {
|
bool isListEmailContainSelectedEmail(PresentationEmail selectedEmail) {
|
||||||
|
|||||||
@@ -276,7 +276,10 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
mailboxDashBoardController.clearMailboxUIAction();
|
mailboxDashBoardController.clearMailboxUIAction();
|
||||||
} else if (action is OpenMailboxAction) {
|
} else if (action is OpenMailboxAction) {
|
||||||
if (currentContext != null) {
|
if (currentContext != null) {
|
||||||
openMailbox(currentContext!, action.presentationMailbox);
|
_handleOpenMailbox(currentContext!, action.presentationMailbox);
|
||||||
|
if (action.presentationMailbox.role == PresentationMailbox.roleInbox) {
|
||||||
|
_autoScrollToTopMailboxList();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
mailboxDashBoardController.clearMailboxUIAction();
|
mailboxDashBoardController.clearMailboxUIAction();
|
||||||
}
|
}
|
||||||
@@ -744,15 +747,7 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
final inboxMailbox = findMailboxNodeByRole(PresentationMailbox.roleInbox);
|
final inboxMailbox = findMailboxNodeByRole(PresentationMailbox.roleInbox);
|
||||||
mailboxDashBoardController.setSelectedMailbox(inboxMailbox?.item);
|
mailboxDashBoardController.setSelectedMailbox(inboxMailbox?.item);
|
||||||
_updateSelectedMailboxRouteOnBrowser();
|
_updateSelectedMailboxRouteOnBrowser();
|
||||||
|
_autoScrollToTopMailboxList();
|
||||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
|
||||||
if(mailboxListScrollController.hasClients){
|
|
||||||
mailboxListScrollController.animateTo(
|
|
||||||
0,
|
|
||||||
duration: const Duration(milliseconds: 500),
|
|
||||||
curve: Curves.fastOutSlowIn);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void _deleteMailboxFailure(DeleteMultipleMailboxFailure failure) {
|
void _deleteMailboxFailure(DeleteMultipleMailboxFailure failure) {
|
||||||
@@ -1209,8 +1204,20 @@ class MailboxController extends BaseMailboxController with MailboxActionHandlerM
|
|||||||
final newMailboxNode = findMailboxNodeById(_newFolderId!);
|
final newMailboxNode = findMailboxNodeById(_newFolderId!);
|
||||||
log('MailboxController::_redirectToNewFolder:newMailboxNode: $newMailboxNode');
|
log('MailboxController::_redirectToNewFolder:newMailboxNode: $newMailboxNode');
|
||||||
if (newMailboxNode != null && currentContext != null) {
|
if (newMailboxNode != null && currentContext != null) {
|
||||||
openMailbox(currentContext!, newMailboxNode.item);
|
_handleOpenMailbox(currentContext!, newMailboxNode.item);
|
||||||
}
|
}
|
||||||
_clearNewFolderId();
|
_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() {
|
void redirectToInboxAction() {
|
||||||
log('MailboxDashBoardController::redirectToInboxAction:');
|
log('MailboxDashBoardController::redirectToInboxAction:');
|
||||||
if (selectedMailbox.value?.role == PresentationMailbox.roleInbox) return;
|
if (dashboardRoute.value == DashboardRoutes.emailDetailed) {
|
||||||
|
dispatchEmailUIAction(CloseEmailDetailedViewAction());
|
||||||
|
}
|
||||||
|
|
||||||
final inboxId = getMailboxIdByRole(PresentationMailbox.roleInbox);
|
final inboxId = getMailboxIdByRole(PresentationMailbox.roleInbox);
|
||||||
if (inboxId == null) return;
|
if (inboxId == null) return;
|
||||||
|
|||||||
Reference in New Issue
Block a user