TF-2323 Fix auto refresh emails list when click quick search filter

Signed-off-by: dab246 <tdvu@linagora.com>
(cherry picked from commit 929d89db7bf626889a4a1307da186769c1da0b49)
This commit is contained in:
dab246
2023-12-18 11:41:30 +07:00
committed by Dat H. Pham
parent d5f646af79
commit 19fd4e625d
3 changed files with 60 additions and 49 deletions
@@ -1530,10 +1530,10 @@ class MailboxDashBoardController extends ReloadableController {
void selectQuickSearchFilterAction(QuickSearchFilter filter) async { void selectQuickSearchFilterAction(QuickSearchFilter filter) async {
log('MailboxDashBoardController::selectQuickSearchFilterAction(): filter: $filter'); log('MailboxDashBoardController::selectQuickSearchFilterAction(): filter: $filter');
if (filter == QuickSearchFilter.fromMe && if (filter == QuickSearchFilter.fromMe) {
accountId.value != null && if (accountId.value == null || sessionCurrent == null) {
sessionCurrent != null logError('MailboxDashBoardController::selectQuickSearchFilterAction(): accountId or sessionCurrent is null');
) { }
final listContactSelected = searchController.searchEmailFilter.value.from; final listContactSelected = searchController.searchEmailFilter.value.from;
final arguments = ContactArguments(accountId.value!, sessionCurrent!, listContactSelected); final arguments = ContactArguments(accountId.value!, sessionCurrent!, listContactSelected);
@@ -1541,11 +1541,12 @@ class MailboxDashBoardController extends ReloadableController {
if (newContact is EmailAddress) { if (newContact is EmailAddress) {
selectQuickSearchFilterFrom(newContact); selectQuickSearchFilterFrom(newContact);
dispatchAction(StartSearchEmailAction(filter: filter));
} }
} else { } else {
selectQuickSearchFilter(filter); selectQuickSearchFilter(filter);
dispatchAction(StartSearchEmailAction(filter: filter));
} }
dispatchAction(StartSearchEmailAction(filter: filter));
} }
void selectReceiveTimeQuickSearchFilter(BuildContext context, EmailReceiveTimeType receiveTime) { void selectReceiveTimeQuickSearchFilter(BuildContext context, EmailReceiveTimeType receiveTime) {
@@ -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/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/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/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/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/extensions/vacation_response_extension.dart';
import 'package:tmail_ui_user/features/manage_account/presentation/vacation/widgets/vacation_notification_message_widget.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/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/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/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/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/localizations/app_localizations.dart';
import 'package:tmail_ui_user/main/routes/route_navigation.dart'; import 'package:tmail_ui_user/main/routes/route_navigation.dart';
import 'package:tmail_ui_user/main/utils/app_config.dart'; import 'package:tmail_ui_user/main/utils/app_config.dart';
@@ -570,48 +570,29 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
), ),
child: InkWell( child: InkWell(
onTap: () { onTap: () {
if (filter != QuickSearchFilter.last7Days) { if (!filter.isTapOpenPopupMenu()) {
controller.selectQuickSearchFilterAction(filter); controller.selectQuickSearchFilterAction(filter);
} }
}, },
onTapDown: (detail) { onTapDown: (detail) {
if (filter == QuickSearchFilter.last7Days) { final screenSize = MediaQuery.of(context).size;
final screenSize = MediaQuery.of(context).size; final offset = detail.globalPosition;
final offset = detail.globalPosition; final position = RelativeRect.fromLTRB(
final position = RelativeRect.fromLTRB( offset.dx,
offset.dx, offset.dy,
offset.dy, screenSize.width - offset.dx,
screenSize.width - offset.dx, screenSize.height - offset.dy,
screenSize.height - offset.dy, );
);
controller.openPopupMenuAction( switch(filter) {
context, case QuickSearchFilter.last7Days:
position, _openPopupMenuDateFilter(context, position);
popupMenuEmailReceiveTimeType( break;
context, case QuickSearchFilter.sortBy:
controller.searchController.receiveTimeFiltered, _openPopupMenuSortFilter(context, position);
onCallBack: (receiveTime) => controller.selectReceiveTimeQuickSearchFilter(context, receiveTime) break;
) default:
); break;
}
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)
)
);
} }
}, },
borderRadius: const BorderRadius.all(Radius.circular(10)), borderRadius: const BorderRadius.all(Radius.circular(10)),
@@ -692,6 +673,33 @@ class MailboxDashBoardView extends BaseMailboxDashBoardView {
.toList(); .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) { Widget _buildComposerButton(BuildContext context) {
return Container( return Container(
padding: const EdgeInsetsDirectional.only( padding: const EdgeInsetsDirectional.only(
@@ -101,4 +101,6 @@ enum QuickSearchFilter {
return true; return true;
} }
} }
bool isTapOpenPopupMenu() => this == QuickSearchFilter.last7Days || this == QuickSearchFilter.sortBy;
} }