TF-3004 Fix open close advanced search looses data

This commit is contained in:
dab246
2024-10-09 11:14:47 +07:00
committed by Dat H. Pham
parent 6d0c7ed7f5
commit d77e1585b8
16 changed files with 681 additions and 274 deletions
@@ -218,9 +218,9 @@ class SearchEmailController extends BaseController
suggestionSearchViewState.value = Right(LoadingState());
currentSearchText.value = value;
_updateSimpleSearchFilter(
textOption: value.isNotEmpty ? Some(SearchQuery(value)) : const None(),
textOption: option(value.isNotEmpty, SearchQuery(value)),
beforeOption: const None(),
positionOption: emailSortOrderType.value.isScrollByPosition() ? const Some(0) : const None()
positionOption: option(searchEmailFilter.value.sortOrderType.isScrollByPosition(), 0)
);
if (value.isNotEmpty && session != null && accountId != null) {
final tupleListSuggestion = await Future.wait([
@@ -297,15 +297,15 @@ class SearchEmailController extends BaseController
: ThreadConstants.defaultLimit;
_updateSimpleSearchFilter(
beforeOption: const None(),
positionOption: emailSortOrderType.value.isScrollByPosition() ? const Some(0) : const None()
positionOption: option(searchEmailFilter.value.sortOrderType.isScrollByPosition(), 0)
);
consumeState(_refreshChangesSearchEmailInteractor.execute(
session!,
accountId!,
limit: limit,
position: searchEmailFilter.value.position,
sort: emailSortOrderType.value.getSortOrder().toNullable(),
filter: searchEmailFilter.value.mappingToEmailFilterCondition(sortOrderType: emailSortOrderType.value),
sort: searchEmailFilter.value.sortOrderType.getSortOrder().toNullable(),
filter: searchEmailFilter.value.mappingToEmailFilterCondition(),
properties: EmailUtils.getPropertiesForEmailGetMethod(session!, accountId!),
));
}
@@ -347,8 +347,8 @@ class SearchEmailController extends BaseController
session,
accountId,
limit: UnsignedInt(5),
sort: emailSortOrderType.value.getSortOrder().toNullable(),
filter: searchEmailFilter.value.mappingToEmailFilterCondition(sortOrderType: emailSortOrderType.value),
sort: searchEmailFilter.value.sortOrderType.getSortOrder().toNullable(),
filter: searchEmailFilter.value.mappingToEmailFilterCondition(),
properties: ThreadConstants.propertiesQuickSearch)
.then((result) => result.fold(
(failure) => <PresentationEmail>[],
@@ -389,9 +389,7 @@ class SearchEmailController extends BaseController
}
_updateSimpleSearchFilter(
positionOption: emailSortOrderType.value.isScrollByPosition()
? const Some(0)
: const None(),
positionOption: option(searchEmailFilter.value.sortOrderType.isScrollByPosition(), 0),
beforeOption: const None(),
);
@@ -400,8 +398,8 @@ class SearchEmailController extends BaseController
accountId!,
limit: ThreadConstants.defaultLimit,
position: searchEmailFilter.value.position,
sort: emailSortOrderType.value.getSortOrder().toNullable(),
filter: searchEmailFilter.value.mappingToEmailFilterCondition(sortOrderType: emailSortOrderType.value),
sort: searchEmailFilter.value.sortOrderType.getSortOrder().toNullable(),
filter: searchEmailFilter.value.mappingToEmailFilterCondition(),
properties: EmailUtils.getPropertiesForEmailGetMethod(session!, accountId!),
));
}
@@ -440,12 +438,12 @@ class SearchEmailController extends BaseController
if (canSearchMore && session != null && accountId != null) {
final lastEmail = listResultSearch.last;
if (emailSortOrderType.value.isScrollByPosition()) {
if (searchEmailFilter.value.sortOrderType.isScrollByPosition()) {
_updateSimpleSearchFilter(
positionOption: Some(listResultSearch.length),
beforeOption: const None()
);
} else if (emailSortOrderType.value == EmailSortOrderType.oldest) {
} else if (searchEmailFilter.value.sortOrderType == EmailSortOrderType.oldest) {
_updateSimpleSearchFilter(startDateOption: optionOf(lastEmail.receivedAt));
} else {
_updateSimpleSearchFilter(beforeOption: optionOf(lastEmail.receivedAt));
@@ -455,9 +453,9 @@ class SearchEmailController extends BaseController
session!,
accountId!,
limit: ThreadConstants.defaultLimit,
sort: emailSortOrderType.value.getSortOrder().toNullable(),
sort: searchEmailFilter.value.sortOrderType.getSortOrder().toNullable(),
position: searchEmailFilter.value.position,
filter: searchEmailFilter.value.mappingToEmailFilterCondition(sortOrderType: emailSortOrderType.value),
filter: searchEmailFilter.value.mappingToEmailFilterCondition(),
properties: EmailUtils.getPropertiesForEmailGetMethod(session!, accountId!),
lastEmailId: lastEmail.id
));
@@ -576,9 +574,6 @@ class SearchEmailController extends BaseController
onCallbackAction: (newStartDate, newEndDate) {
_updateSimpleSearchFilter(
emailReceiveTimeTypeOption: Some(emailReceiveTimeType),
textOption: searchQuery == null
? Some(SearchQuery.initial())
: optionOf(searchEmailFilter.value.text),
startDateOption: optionOf(newStartDate?.toUTCDate()),
endDateOption: optionOf(newEndDate?.toUTCDate()),
);
@@ -590,9 +585,6 @@ class SearchEmailController extends BaseController
} else {
_updateSimpleSearchFilter(
emailReceiveTimeTypeOption: Some(emailReceiveTimeType),
textOption: searchQuery == null
? Some(SearchQuery.initial())
: optionOf(searchEmailFilter.value.text),
startDateOption: const None(),
endDateOption: const None(),
);
@@ -605,6 +597,7 @@ class SearchEmailController extends BaseController
void selectSortOrderQuickSearchFilter(BuildContext context, EmailSortOrderType sortOrderType) {
popBack();
emailSortOrderType.value = sortOrderType;
_updateSimpleSearchFilter(sortOrderTypeOption: Some(sortOrderType));
_searchEmailAction(context);
}
@@ -702,6 +695,7 @@ class SearchEmailController extends BaseController
Option<UTCDate>? endDateOption,
Option<int>? positionOption,
Option<Set<String>>? hasKeywordOption,
Option<EmailSortOrderType>? sortOrderTypeOption,
}) {
searchEmailFilter.value = searchEmailFilter.value.copyWith(
fromOption: fromOption,
@@ -715,6 +709,7 @@ class SearchEmailController extends BaseController
endDateOption: endDateOption,
positionOption: positionOption,
hasKeywordOption: hasKeywordOption,
sortOrderTypeOption: sortOrderTypeOption,
);
searchEmailFilter.refresh();
}
@@ -947,9 +942,6 @@ class SearchEmailController extends BaseController
void _deleteDateTimeSearchFilter(BuildContext context) {
_updateSimpleSearchFilter(
emailReceiveTimeTypeOption: const Some(EmailReceiveTimeType.allTime),
textOption: searchQuery == null
? Some(SearchQuery.initial())
: optionOf(searchEmailFilter.value.text),
startDateOption: const None(),
endDateOption: const None(),
);
@@ -959,6 +951,7 @@ class SearchEmailController extends BaseController
void _deleteSortOrderSearchFilter(BuildContext context) {
emailSortOrderType.value = EmailSortOrderType.mostRecent;
_updateSimpleSearchFilter(sortOrderTypeOption: const Some(EmailSortOrderType.mostRecent));
_searchEmailAction(context);
}
@@ -987,16 +980,6 @@ class SearchEmailController extends BaseController
_searchEmailAction(context);
}
bool get isSearchFilterHasApplied {
return searchEmailFilter.value.from.isNotEmpty ||
searchEmailFilter.value.to.isNotEmpty ||
searchEmailFilter.value.emailReceiveTimeType != EmailReceiveTimeType.allTime ||
(searchEmailFilter.value.mailbox != PresentationMailbox.unifiedMailbox && searchEmailFilter.value.mailbox != null) ||
searchEmailFilter.value.hasAttachment == true ||
searchEmailFilter.value.hasKeyword.contains(KeyWordIdentifier.emailFlagged.value) ||
emailSortOrderType.value != EmailSortOrderType.mostRecent;
}
void clearAllSearchFilterApplied(BuildContext context) {
textInputSearchController.clear();
currentSearchText.value = '';
@@ -217,7 +217,7 @@ class SearchEmailView extends GetWidget<SearchEmailController>
),
),
Obx(() {
if (controller.isSearchFilterHasApplied) {
if (controller.searchEmailFilter.value.isApplied) {
return TMailButtonWidget.fromText(
text: AppLocalizations.of(context).clearFilter,
backgroundColor: Colors.transparent,