TF-4356 Add filter event mail in search (#4357)
* Add `Events` filter checkbox in Advanced Search form * Perform search email by `Events` filter in Advanced Search form * Add `Event` quick search button in Search view * Use `keywords` replace to `headers` for search event filter
This commit is contained in:
+35
-13
@@ -37,6 +37,7 @@ class AdvancedFilterController extends BaseController {
|
||||
final hasAttachment = false.obs;
|
||||
final isStarred = false.obs;
|
||||
final isUnread = false.obs;
|
||||
final hasEvents = false.obs;
|
||||
final startDate = Rxn<DateTime>();
|
||||
final endDate = Rxn<DateTime>();
|
||||
final sortOrderType = SearchEmailFilter.defaultSortOrder.obs;
|
||||
@@ -188,10 +189,12 @@ class AdvancedFilterController extends BaseController {
|
||||
|
||||
final unreadOption = Some(isUnread.value);
|
||||
|
||||
final hasKeywordOption = option(
|
||||
isStarred.isTrue,
|
||||
{KeyWordIdentifier.emailFlagged.value},
|
||||
);
|
||||
final listKeywords = {
|
||||
if(isStarred.isTrue) KeyWordIdentifier.emailFlagged.value,
|
||||
if(hasEvents.isTrue) KeyWordIdentifierExtension.eventsMail.value,
|
||||
};
|
||||
final hasKeywordOption =
|
||||
optionOf(listKeywords.isNotEmpty ? listKeywords : null);
|
||||
|
||||
final labelOption = optionOf(selectedLabel.value);
|
||||
|
||||
@@ -296,6 +299,9 @@ class AdvancedFilterController extends BaseController {
|
||||
isStarred.value = _memorySearchFilter.hasKeyword
|
||||
.contains(KeyWordIdentifier.emailFlagged.value);
|
||||
|
||||
hasEvents.value = _memorySearchFilter.hasKeyword
|
||||
.contains(KeyWordIdentifierExtension.eventsMail.value);
|
||||
|
||||
if (_memorySearchFilter.from.isEmpty) {
|
||||
listFromEmailAddress.clear();
|
||||
} else {
|
||||
@@ -486,6 +492,7 @@ class AdvancedFilterController extends BaseController {
|
||||
hasAttachment.value = false;
|
||||
isUnread.value = false;
|
||||
isStarred.value = false;
|
||||
hasEvents.value = false;
|
||||
selectedFolderName.value = null;
|
||||
listFromEmailAddress.clear();
|
||||
listToEmailAddress.clear();
|
||||
@@ -568,21 +575,36 @@ class AdvancedFilterController extends BaseController {
|
||||
|
||||
void onStarredCheckboxChanged(bool? isChecked) {
|
||||
isStarred.value = isChecked ?? false;
|
||||
final listHasKeywordFiltered = _memorySearchFilter.hasKeyword;
|
||||
if (isStarred.isTrue) {
|
||||
listHasKeywordFiltered.add(KeyWordIdentifier.emailFlagged.value);
|
||||
} else {
|
||||
listHasKeywordFiltered.remove(KeyWordIdentifier.emailFlagged.value);
|
||||
}
|
||||
_updateMemorySearchFilter(
|
||||
hasKeywordOption: Some(listHasKeywordFiltered),
|
||||
_updateKeywordsSearchFilter(
|
||||
isStarred.isTrue,
|
||||
KeyWordIdentifier.emailFlagged,
|
||||
);
|
||||
}
|
||||
|
||||
void onUnreadCheckboxChanged(bool? isChecked) {
|
||||
isUnread.value = isChecked ?? false;
|
||||
_updateMemorySearchFilter(
|
||||
unreadOption: isStarred.isTrue ? const Some(true) : const None(),
|
||||
unreadOption: isUnread.isTrue ? const Some(true) : const None(),
|
||||
);
|
||||
}
|
||||
|
||||
void _updateKeywordsSearchFilter(bool isChecked, KeyWordIdentifier keyword) {
|
||||
final listHasKeywordFiltered = _memorySearchFilter.hasKeyword;
|
||||
if (isChecked) {
|
||||
listHasKeywordFiltered.add(keyword.value);
|
||||
} else {
|
||||
listHasKeywordFiltered.remove(keyword.value);
|
||||
}
|
||||
_updateMemorySearchFilter(
|
||||
hasKeywordOption: Some(listHasKeywordFiltered),
|
||||
);
|
||||
}
|
||||
|
||||
void onEventsCheckboxChanged(bool? isChecked) {
|
||||
hasEvents.value = isChecked ?? false;
|
||||
_updateKeywordsSearchFilter(
|
||||
hasEvents.isTrue,
|
||||
KeyWordIdentifierExtension.eventsMail,
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ class InputFieldFocusManager {
|
||||
late FocusNode attachmentCheckboxFocusNode;
|
||||
late FocusNode starredCheckboxFocusNode;
|
||||
late FocusNode unreadCheckboxFocusNode;
|
||||
late FocusNode eventsCheckboxFocusNode;
|
||||
|
||||
InputFieldFocusManager() {
|
||||
fromFieldFocusNode = FocusNode();
|
||||
@@ -23,6 +24,7 @@ class InputFieldFocusManager {
|
||||
attachmentCheckboxFocusNode = FocusNode();
|
||||
starredCheckboxFocusNode = FocusNode();
|
||||
unreadCheckboxFocusNode = FocusNode();
|
||||
eventsCheckboxFocusNode = FocusNode();
|
||||
}
|
||||
|
||||
factory InputFieldFocusManager.initial() {
|
||||
@@ -39,5 +41,6 @@ class InputFieldFocusManager {
|
||||
attachmentCheckboxFocusNode.dispose();
|
||||
starredCheckboxFocusNode.dispose();
|
||||
unreadCheckboxFocusNode.dispose();
|
||||
eventsCheckboxFocusNode.dispose();
|
||||
}
|
||||
}
|
||||
+1
@@ -2394,6 +2394,7 @@ class MailboxDashBoardController extends ReloadableController
|
||||
case QuickSearchFilter.starred:
|
||||
case QuickSearchFilter.unread:
|
||||
case QuickSearchFilter.labels:
|
||||
case QuickSearchFilter.events:
|
||||
deleteQuickSearchFilter(filter: searchFilter);
|
||||
break;
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user