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 {
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) {
@@ -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(
@@ -101,4 +101,6 @@ enum QuickSearchFilter {
return true;
}
}
bool isTapOpenPopupMenu() => this == QuickSearchFilter.last7Days || this == QuickSearchFilter.sortBy;
}