From 19fd4e625d2965dec947669d2b61fedca6a40cf6 Mon Sep 17 00:00:00 2001 From: dab246 Date: Mon, 18 Dec 2023 11:41:30 +0700 Subject: [PATCH] TF-2323 Fix auto refresh emails list when click quick search filter Signed-off-by: dab246 (cherry picked from commit 929d89db7bf626889a4a1307da186769c1da0b49) --- .../mailbox_dashboard_controller.dart | 11 ++- .../mailbox_dashboard_view_web.dart | 96 ++++++++++--------- .../model/search/quick_search_filter.dart | 2 + 3 files changed, 60 insertions(+), 49 deletions(-) diff --git a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart index 14776bba9..0b2d09dcf 100644 --- a/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart +++ b/lib/features/mailbox_dashboard/presentation/controller/mailbox_dashboard_controller.dart @@ -1530,10 +1530,10 @@ class MailboxDashBoardController extends ReloadableController { void selectQuickSearchFilterAction(QuickSearchFilter filter) async { log('MailboxDashBoardController::selectQuickSearchFilterAction(): filter: $filter'); - if (filter == QuickSearchFilter.fromMe && - accountId.value != null && - sessionCurrent != null - ) { + if (filter == QuickSearchFilter.fromMe) { + if (accountId.value == null || sessionCurrent == null) { + logError('MailboxDashBoardController::selectQuickSearchFilterAction(): accountId or sessionCurrent is null'); + } final listContactSelected = searchController.searchEmailFilter.value.from; final arguments = ContactArguments(accountId.value!, sessionCurrent!, listContactSelected); @@ -1541,11 +1541,12 @@ class MailboxDashBoardController extends ReloadableController { if (newContact is EmailAddress) { selectQuickSearchFilterFrom(newContact); + dispatchAction(StartSearchEmailAction(filter: filter)); } } else { selectQuickSearchFilter(filter); + dispatchAction(StartSearchEmailAction(filter: filter)); } - dispatchAction(StartSearchEmailAction(filter: filter)); } void selectReceiveTimeQuickSearchFilter(BuildContext context, EmailReceiveTimeType receiveTime) { diff --git a/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart b/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart index 774553b7d..dba45d73c 100644 --- a/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart +++ b/lib/features/mailbox_dashboard/presentation/mailbox_dashboard_view_web.dart @@ -18,12 +18,6 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/sear import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/quick_search_filter.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/download/download_task_item_widget.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/search_input_form_widget.dart'; -import 'package:tmail_ui_user/features/thread/domain/state/get_all_email_state.dart'; -import 'package:tmail_ui_user/features/thread/presentation/styles/banner_delete_all_spam_emails_styles.dart'; -import 'package:tmail_ui_user/features/thread/presentation/styles/banner_empty_trash_styles.dart'; -import 'package:tmail_ui_user/features/thread/presentation/widgets/banner_delete_all_spam_emails_widget.dart'; -import 'package:tmail_ui_user/features/thread/presentation/widgets/banner_empty_trash_widget.dart'; -import 'package:tmail_ui_user/features/thread/presentation/widgets/spam_banner/spam_report_banner_web_widget.dart'; import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/widgets/top_bar_thread_selection.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/extensions/vacation_response_extension.dart'; import 'package:tmail_ui_user/features/manage_account/presentation/vacation/widgets/vacation_notification_message_widget.dart'; @@ -31,7 +25,13 @@ import 'package:tmail_ui_user/features/quotas/presentation/widget/quotas_banner_ import 'package:tmail_ui_user/features/search/email/presentation/search_email_view.dart'; import 'package:tmail_ui_user/features/search/mailbox/presentation/search_mailbox_view.dart'; import 'package:tmail_ui_user/features/thread/domain/model/filter_message_option.dart'; +import 'package:tmail_ui_user/features/thread/domain/state/get_all_email_state.dart'; +import 'package:tmail_ui_user/features/thread/presentation/styles/banner_delete_all_spam_emails_styles.dart'; +import 'package:tmail_ui_user/features/thread/presentation/styles/banner_empty_trash_styles.dart'; import 'package:tmail_ui_user/features/thread/presentation/thread_view.dart'; +import 'package:tmail_ui_user/features/thread/presentation/widgets/banner_delete_all_spam_emails_widget.dart'; +import 'package:tmail_ui_user/features/thread/presentation/widgets/banner_empty_trash_widget.dart'; +import 'package:tmail_ui_user/features/thread/presentation/widgets/spam_banner/spam_report_banner_web_widget.dart'; import 'package:tmail_ui_user/main/localizations/app_localizations.dart'; import 'package:tmail_ui_user/main/routes/route_navigation.dart'; import 'package:tmail_ui_user/main/utils/app_config.dart'; @@ -570,48 +570,29 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { ), child: InkWell( onTap: () { - if (filter != QuickSearchFilter.last7Days) { + if (!filter.isTapOpenPopupMenu()) { controller.selectQuickSearchFilterAction(filter); } }, onTapDown: (detail) { - if (filter == QuickSearchFilter.last7Days) { - final screenSize = MediaQuery.of(context).size; - final offset = detail.globalPosition; - final position = RelativeRect.fromLTRB( - offset.dx, - offset.dy, - screenSize.width - offset.dx, - screenSize.height - offset.dy, - ); - controller.openPopupMenuAction( - context, - position, - popupMenuEmailReceiveTimeType( - context, - controller.searchController.receiveTimeFiltered, - onCallBack: (receiveTime) => controller.selectReceiveTimeQuickSearchFilter(context, receiveTime) - ) - ); - } - if (filter == QuickSearchFilter.sortBy) { - final screenSize = MediaQuery.of(context).size; - final offset = detail.globalPosition; - final position = RelativeRect.fromLTRB( - offset.dx, - offset.dy, - screenSize.width - offset.dx, - screenSize.height - offset.dy, - ); - controller.openPopupMenuAction( - context, - position, - popupMenuEmailSortOrderType( - context, - controller.searchController.sortOrderFiltered.value, - onCallBack: (sortOrder) => controller.selectSortOrderQuickSearchFilter(context, sortOrder) - ) - ); + final screenSize = MediaQuery.of(context).size; + final offset = detail.globalPosition; + final position = RelativeRect.fromLTRB( + offset.dx, + offset.dy, + screenSize.width - offset.dx, + screenSize.height - offset.dy, + ); + + switch(filter) { + case QuickSearchFilter.last7Days: + _openPopupMenuDateFilter(context, position); + break; + case QuickSearchFilter.sortBy: + _openPopupMenuSortFilter(context, position); + break; + default: + break; } }, borderRadius: const BorderRadius.all(Radius.circular(10)), @@ -692,6 +673,33 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView { .toList(); } + void _openPopupMenuDateFilter(BuildContext context, RelativeRect position) { + controller.openPopupMenuAction( + context, + position, + popupMenuEmailReceiveTimeType( + context, + controller.searchController.receiveTimeFiltered, + onCallBack: (receiveTime) => controller.selectReceiveTimeQuickSearchFilter( + context, + receiveTime + ) + ) + ); + } + + void _openPopupMenuSortFilter(BuildContext context, RelativeRect position) { + controller.openPopupMenuAction( + context, + position, + popupMenuEmailSortOrderType( + context, + controller.searchController.sortOrderFiltered.value, + onCallBack: (sortOrder) => controller.selectSortOrderQuickSearchFilter(context, sortOrder) + ) + ); + } + Widget _buildComposerButton(BuildContext context) { return Container( padding: const EdgeInsetsDirectional.only( diff --git a/lib/features/mailbox_dashboard/presentation/model/search/quick_search_filter.dart b/lib/features/mailbox_dashboard/presentation/model/search/quick_search_filter.dart index 4b758cb0d..3b1e078ca 100644 --- a/lib/features/mailbox_dashboard/presentation/model/search/quick_search_filter.dart +++ b/lib/features/mailbox_dashboard/presentation/model/search/quick_search_filter.dart @@ -101,4 +101,6 @@ enum QuickSearchFilter { return true; } } + + bool isTapOpenPopupMenu() => this == QuickSearchFilter.last7Days || this == QuickSearchFilter.sortBy; } \ No newline at end of file