TF-1831 Handle system back button in search email
Signed-off-by: dab246 <tdvu@linagora.com> Signed-off-by: dab246 <tdvu@linagora.com> (cherry picked from commit f4ffd113f192415c8613bf12fe40db1af902edaf)
This commit is contained in:
@@ -1,13 +1,15 @@
|
||||
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
|
||||
import 'package:model/email/email_action_type.dart';
|
||||
import 'package:model/email/presentation_email.dart';
|
||||
import 'package:model/mailbox/presentation_mailbox.dart';
|
||||
import 'package:tmail_ui_user/features/base/action/ui_action.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_receive_time_type.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/quick_search_filter.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/model/filter_message_option.dart';
|
||||
import 'package:tmail_ui_user/main/routes/navigation_router.dart';
|
||||
import 'package:tmail_ui_user/features/thread/domain/model/search_query.dart';
|
||||
|
||||
class DashBoardAction extends UIAction {
|
||||
static final idle = DashBoardAction();
|
||||
@@ -81,24 +83,51 @@ class ClearSearchEmailAction extends DashBoardAction {}
|
||||
|
||||
class ClearAllFieldOfAdvancedSearchAction extends DashBoardAction {}
|
||||
|
||||
class SelectEmailByIdAction extends DashBoardAction {
|
||||
class OpenEmailInsideMailboxFromLocationBar extends DashBoardAction {
|
||||
|
||||
final NavigationRouter navigationRouter;
|
||||
final EmailId emailId;
|
||||
final PresentationMailbox presentationMailbox;
|
||||
|
||||
SelectEmailByIdAction(this.navigationRouter);
|
||||
OpenEmailInsideMailboxFromLocationBar(this.emailId, this.presentationMailbox);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [navigationRouter];
|
||||
List<Object?> get props => [emailId, presentationMailbox];
|
||||
}
|
||||
|
||||
class SearchEmailByQueryAction extends DashBoardAction {
|
||||
class OpenEmailWithoutMailboxFromLocationBar extends DashBoardAction {
|
||||
|
||||
final NavigationRouter navigationRouter;
|
||||
final EmailId emailId;
|
||||
|
||||
SearchEmailByQueryAction(this.navigationRouter);
|
||||
OpenEmailWithoutMailboxFromLocationBar(this.emailId);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [navigationRouter];
|
||||
List<Object?> get props => [emailId];
|
||||
}
|
||||
|
||||
class OpenEmailSearchedFromLocationBar extends DashBoardAction {
|
||||
|
||||
final EmailId emailId;
|
||||
final SearchQuery? searchQuery;
|
||||
|
||||
OpenEmailSearchedFromLocationBar(
|
||||
this.emailId,
|
||||
{
|
||||
this.searchQuery,
|
||||
}
|
||||
);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [emailId, searchQuery];
|
||||
}
|
||||
|
||||
class SearchEmailFromLocationBar extends DashBoardAction {
|
||||
|
||||
final SearchQuery searchQuery;
|
||||
|
||||
SearchEmailFromLocationBar(this.searchQuery);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [searchQuery];
|
||||
}
|
||||
|
||||
class SelectDateRangeToAdvancedSearch extends DashBoardAction {
|
||||
|
||||
+10
-6
@@ -140,7 +140,6 @@ import 'package:tmail_ui_user/main/exceptions/remote_exception.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
import 'package:tmail_ui_user/main/routes/app_routes.dart';
|
||||
import 'package:tmail_ui_user/main/routes/dialog_router.dart';
|
||||
import 'package:tmail_ui_user/main/routes/navigation_router.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_utils.dart';
|
||||
import 'package:tmail_ui_user/main/utils/email_receive_manager.dart';
|
||||
@@ -217,7 +216,6 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
final listResultSearch = RxList<PresentationEmail>();
|
||||
PresentationMailbox? outboxMailbox;
|
||||
ComposerArguments? composerArguments;
|
||||
NavigationRouter? navigationRouter;
|
||||
|
||||
late StreamSubscription _emailAddressStreamSubscription;
|
||||
late StreamSubscription _emailContentStreamSubscription;
|
||||
@@ -585,9 +583,9 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
setSelectedEmail(presentationEmail);
|
||||
dispatchRoute(DashboardRoutes.emailDetailed);
|
||||
if (PlatformInfo.isWeb && presentationEmail.routeWeb != null) {
|
||||
RouteUtils.updateRouteOnBrowser(
|
||||
'Email-${presentationEmail.id?.id.value ?? ''}',
|
||||
presentationEmail.routeWeb!
|
||||
RouteUtils.replaceBrowserHistory(
|
||||
title: 'Email-${presentationEmail.id?.id.value ?? ''}',
|
||||
url: presentationEmail.routeWeb!
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -2233,12 +2231,18 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
dispatchEmailUIAction(CloseEmailDetailedViewAction());
|
||||
return true;
|
||||
case DashboardRoutes.thread:
|
||||
if (PlatformInfo.isMobile) {
|
||||
return false;
|
||||
}
|
||||
if (searchController.isSearchEmailRunning) {
|
||||
dispatchMailboxUIAction(SelectMailboxDefaultAction());
|
||||
dispatchMailboxUIAction(SystemBackToInboxAction());
|
||||
} else {
|
||||
pushAndPopAll(AppRoutes.home);
|
||||
}
|
||||
return true;
|
||||
case DashboardRoutes.searchEmail:
|
||||
dispatchAction(CloseSearchEmailViewAction());
|
||||
return true;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user