TF-3002 [WEB] Apply new design for SearchFilterButton

This commit is contained in:
dab246
2024-09-16 13:20:43 +07:00
committed by Dat H. Pham
parent 5cb6541ef6
commit 34c9c0cd0e
14 changed files with 345 additions and 230 deletions
@@ -397,7 +397,7 @@ class AdvancedFilterController extends BaseController {
);
} else if (action is ClearDateRangeToAdvancedSearch) {
_updateDateRangeTime(action.receiveTime);
} else if (action is StartSearchEmailAction && action.filter == QuickSearchFilter.fromMe) {
} else if (action is StartSearchEmailAction && action.filter == QuickSearchFilter.from) {
_updateFromField();
} else if (action is SearchEmailByFromFieldsAction) {
searchController.clearSearchFilter();
@@ -1575,17 +1575,6 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo
_getAllIdentities();
}
void selectQuickSearchFilter(QuickSearchFilter filter) {
return searchController.selectQuickSearchFilter(filter);
}
void selectQuickSearchFilterFrom(EmailAddress fromEmailFilter) {
return searchController.selectQuickSearchFilter(
QuickSearchFilter.fromMe,
fromEmailFilter: fromEmailFilter
);
}
void addFilterToSuggestionForm(QuickSearchFilter filter) {
searchController.addFilterToSuggestionForm(filter);
}
@@ -1667,24 +1656,26 @@ class MailboxDashBoardController extends ReloadableController with UserSettingPo
}
}
void selectQuickSearchFilterAction(QuickSearchFilter filter) async {
log('MailboxDashBoardController::selectQuickSearchFilterAction(): filter: $filter');
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);
void selectHasAttachmentSearchFilter() {
searchController.updateFilterEmail(hasAttachment: true);
dispatchAction(StartSearchEmailAction());
}
final newContact = await DialogRouter.pushGeneralDialog(routeName: AppRoutes.contact, arguments: arguments);
Future<void> selectFromSearchFilter() async {
if (accountId.value == null || sessionCurrent == null) return;
if (newContact is EmailAddress) {
selectQuickSearchFilterFrom(newContact);
dispatchAction(StartSearchEmailAction(filter: filter));
}
} else {
selectQuickSearchFilter(filter);
dispatchAction(StartSearchEmailAction(filter: filter));
final contactArgument = ContactArguments(
accountId.value!,
sessionCurrent!,
searchController.searchEmailFilter.value.from);
final newContact = await DialogRouter.pushGeneralDialog(
routeName: AppRoutes.contact,
arguments: contactArgument);
if (newContact is EmailAddress) {
searchController.updateFilterEmail(fromOption: Some({newContact.emailAddress}));
dispatchAction(StartSearchEmailAction(filter: QuickSearchFilter.from));
}
}
@@ -11,7 +11,6 @@ import 'package:jmap_dart_client/jmap/core/sort/comparator.dart';
import 'package:jmap_dart_client/jmap/core/unsigned_int.dart';
import 'package:jmap_dart_client/jmap/core/user_name.dart';
import 'package:jmap_dart_client/jmap/core/utc_date.dart';
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
import 'package:jmap_dart_client/jmap/mail/email/email_comparator.dart';
import 'package:jmap_dart_client/jmap/mail/email/email_comparator_property.dart';
import 'package:jmap_dart_client/jmap/mail/email/email_filter_condition.dart';
@@ -71,32 +70,6 @@ class SearchController extends BaseController with DateRangePickerMixin {
searchEmailFilter.value = SearchEmailFilter.initial();
}
void selectQuickSearchFilter(
QuickSearchFilter quickSearchFilter,
{EmailAddress? fromEmailFilter}
) {
final isFilterSelected = quickSearchFilter.isSelected(searchEmailFilter.value);
switch (quickSearchFilter) {
case QuickSearchFilter.hasAttachment:
updateFilterEmail(hasAttachment: !isFilterSelected);
return;
case QuickSearchFilter.last7Days:
updateFilterEmail(emailReceiveTimeType: EmailReceiveTimeType.allTime);
return;
case QuickSearchFilter.fromMe:
if (fromEmailFilter != null) {
final newListEmailAddress = (fromEmailFilter.email != null && fromEmailFilter.email!.isNotEmpty)
? <String>{fromEmailFilter.email!}
: <String>{};
updateFilterEmail(fromOption: Some(newListEmailAddress));
}
return;
case QuickSearchFilter.sortBy:
return;
}
}
void addFilterToSuggestionForm(QuickSearchFilter filter) {
if (listFilterOnSuggestionForm.contains(filter)) {
listFilterOnSuggestionForm.remove(filter);