TF-3292 Fix [SEARCH] If I filter emails by date and then sort them by relevance, the filter isn't applied

This commit is contained in:
dab246
2024-11-23 11:09:32 +07:00
committed by Dat H. Pham
parent 59c5df2a1b
commit 586b8505e0
4 changed files with 17 additions and 15 deletions
+1 -1
View File
@@ -79,7 +79,7 @@ Accepted
Brief the logic flows when click `Sort Order` in search:
- To sort by `Subject`, `Sender` or `Relevance` we will have to use the `position` property and ignore `before` and `after` in `conditions` of `filter`
- To sort by `Subject`, `Sender` or `Relevance` we will have to use the `position` property of `filter`
```json
{
@@ -99,16 +99,12 @@ class SearchEmailFilter with EquatableMixin, OptionParamMixin {
? text?.value.trim()
: null,
inMailbox: mailbox?.mailboxId,
after: sortOrderType.isScrollByPosition()
? null
: emailReceiveTimeType.getAfterDate(startDate),
after: emailReceiveTimeType.getAfterDate(startDate),
hasAttachment: !hasAttachment ? null : hasAttachment,
subject: subject?.trim().isNotEmpty == true
? subject?.trim()
: null,
before: sortOrderType.isScrollByPosition()
? null
: emailReceiveTimeType.getBeforeDate(endDate, before),
before: emailReceiveTimeType.getBeforeDate(endDate, before),
from: from.length == 1
? from.first
: null,
@@ -215,7 +215,9 @@ class SearchEmailController extends BaseController
currentSearchText.value = value;
_updateSimpleSearchFilter(
textOption: option(value.isNotEmpty, SearchQuery(value)),
beforeOption: const None(),
beforeOption: !searchEmailFilter.value.sortOrderType.isScrollByPosition()
? const None()
: null,
positionOption: option(searchEmailFilter.value.sortOrderType.isScrollByPosition(), 0)
);
if (value.isNotEmpty && session != null && accountId != null) {
@@ -319,7 +321,9 @@ class SearchEmailController extends BaseController
: ThreadConstants.defaultLimit;
_updateSimpleSearchFilter(
beforeOption: const None(),
beforeOption: !searchEmailFilter.value.sortOrderType.isScrollByPosition()
? const None()
: null,
positionOption: option(searchEmailFilter.value.sortOrderType.isScrollByPosition(), 0),
);
@@ -435,7 +439,9 @@ class SearchEmailController extends BaseController
_updateSimpleSearchFilter(
positionOption: option(searchEmailFilter.value.sortOrderType.isScrollByPosition(), 0),
beforeOption: const None(),
beforeOption: !searchEmailFilter.value.sortOrderType.isScrollByPosition()
? const None()
: null,
);
consumeState(_searchEmailInteractor.execute(
@@ -949,7 +949,10 @@ class ThreadController extends BaseController with EmailActionController {
searchController.updateFilterEmail(
positionOption: option(_searchEmailFilter.sortOrderType.isScrollByPosition(), 0),
beforeOption: const None());
beforeOption: !_searchEmailFilter.sortOrderType.isScrollByPosition()
? const None()
: null,
);
searchController.activateSimpleSearch();
@@ -1023,10 +1026,7 @@ class ThreadController extends BaseController with EmailActionController {
if (_searchEmailFilter.sortOrderType.isScrollByPosition()) {
final nextPosition = mailboxDashBoardController.emailsInCurrentMailbox.length;
log('ThreadController::_searchMoreEmails:nextPosition: $nextPosition');
searchController.updateFilterEmail(
positionOption: Some(nextPosition),
beforeOption: const None()
);
searchController.updateFilterEmail(positionOption: Some(nextPosition));
} else if (_searchEmailFilter.sortOrderType == EmailSortOrderType.oldest) {
searchController.updateFilterEmail(startDateOption: optionOf(lastEmail?.receivedAt));
} else {