TF-709: After search with advanced search, load more is not show corrected results
This commit is contained in:
@@ -6,6 +6,7 @@ import 'package:get/get.dart';
|
|||||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/sort/comparator.dart';
|
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/unsigned_int.dart';
|
||||||
|
import 'package:jmap_dart_client/jmap/core/utc_date.dart';
|
||||||
import 'package:jmap_dart_client/jmap/mail/email/email_comparator.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_comparator_property.dart';
|
||||||
import 'package:model/model.dart';
|
import 'package:model/model.dart';
|
||||||
@@ -125,6 +126,7 @@ class SearchController extends BaseController {
|
|||||||
PresentationMailbox? mailbox,
|
PresentationMailbox? mailbox,
|
||||||
EmailReceiveTimeType? emailReceiveTimeType,
|
EmailReceiveTimeType? emailReceiveTimeType,
|
||||||
bool? hasAttachment,
|
bool? hasAttachment,
|
||||||
|
UTCDate? before,
|
||||||
}) {
|
}) {
|
||||||
searchEmailFilter.value = searchEmailFilter.value.copyWith(
|
searchEmailFilter.value = searchEmailFilter.value.copyWith(
|
||||||
from: from,
|
from: from,
|
||||||
@@ -136,6 +138,7 @@ class SearchController extends BaseController {
|
|||||||
mailbox: mailbox,
|
mailbox: mailbox,
|
||||||
emailReceiveTimeType: emailReceiveTimeType,
|
emailReceiveTimeType: emailReceiveTimeType,
|
||||||
hasAttachment: hasAttachment,
|
hasAttachment: hasAttachment,
|
||||||
|
before: before,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import 'package:jmap_dart_client/jmap/core/filter/filter.dart';
|
import 'package:jmap_dart_client/jmap/core/filter/filter.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/filter/filter_operator.dart';
|
import 'package:jmap_dart_client/jmap/core/filter/filter_operator.dart';
|
||||||
import 'package:jmap_dart_client/jmap/core/filter/operator/logic_filter_operator.dart';
|
import 'package:jmap_dart_client/jmap/core/filter/operator/logic_filter_operator.dart';
|
||||||
|
import 'package:jmap_dart_client/jmap/core/utc_date.dart';
|
||||||
import 'package:jmap_dart_client/jmap/mail/email/email_filter_condition.dart';
|
import 'package:jmap_dart_client/jmap/mail/email/email_filter_condition.dart';
|
||||||
import 'package:model/model.dart';
|
import 'package:model/model.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_receive_time_type.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_receive_time_type.dart';
|
||||||
@@ -16,6 +17,7 @@ class SearchEmailFilter {
|
|||||||
final PresentationMailbox? mailbox;
|
final PresentationMailbox? mailbox;
|
||||||
final EmailReceiveTimeType emailReceiveTimeType;
|
final EmailReceiveTimeType emailReceiveTimeType;
|
||||||
final bool hasAttachment;
|
final bool hasAttachment;
|
||||||
|
final UTCDate? before;
|
||||||
|
|
||||||
SearchEmailFilter({
|
SearchEmailFilter({
|
||||||
Set<String>? from,
|
Set<String>? from,
|
||||||
@@ -27,6 +29,7 @@ class SearchEmailFilter {
|
|||||||
Set<String>? hasKeyword,
|
Set<String>? hasKeyword,
|
||||||
Set<String>? notKeyword,
|
Set<String>? notKeyword,
|
||||||
this.mailbox,
|
this.mailbox,
|
||||||
|
this.before,
|
||||||
}) : from = from ?? <String>{},
|
}) : from = from ?? <String>{},
|
||||||
to = to ?? <String>{},
|
to = to ?? <String>{},
|
||||||
hasKeyword = hasKeyword ?? <String>{},
|
hasKeyword = hasKeyword ?? <String>{},
|
||||||
@@ -45,6 +48,7 @@ class SearchEmailFilter {
|
|||||||
PresentationMailbox? mailbox,
|
PresentationMailbox? mailbox,
|
||||||
EmailReceiveTimeType? emailReceiveTimeType,
|
EmailReceiveTimeType? emailReceiveTimeType,
|
||||||
bool? hasAttachment,
|
bool? hasAttachment,
|
||||||
|
UTCDate? before,
|
||||||
}) {
|
}) {
|
||||||
return SearchEmailFilter(
|
return SearchEmailFilter(
|
||||||
from: from ?? this.from,
|
from: from ?? this.from,
|
||||||
@@ -56,16 +60,18 @@ class SearchEmailFilter {
|
|||||||
mailbox: mailbox ?? this.mailbox,
|
mailbox: mailbox ?? this.mailbox,
|
||||||
emailReceiveTimeType: emailReceiveTimeType ?? this.emailReceiveTimeType,
|
emailReceiveTimeType: emailReceiveTimeType ?? this.emailReceiveTimeType,
|
||||||
hasAttachment: hasAttachment ?? this.hasAttachment,
|
hasAttachment: hasAttachment ?? this.hasAttachment,
|
||||||
|
before: before ?? this.before,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Filter? mappingToEmailFilterCondition({Filter? moreFilterCondition}) {
|
Filter mappingToEmailFilterCondition({Filter? moreFilterCondition}) {
|
||||||
final emailEmailFilterConditionShared = EmailFilterCondition(
|
final emailEmailFilterConditionShared = EmailFilterCondition(
|
||||||
text: text?.value,
|
text: text?.value,
|
||||||
inMailbox: mailbox?.id,
|
inMailbox: mailbox?.id,
|
||||||
after: emailReceiveTimeType.toUTCDate(),
|
after: emailReceiveTimeType.toUTCDate(),
|
||||||
hasAttachment: hasAttachment == false ? null : hasAttachment,
|
hasAttachment: hasAttachment == false ? null : hasAttachment,
|
||||||
subject: subject,
|
subject: subject,
|
||||||
|
before: before,
|
||||||
);
|
);
|
||||||
return LogicFilterOperator(Operator.AND, {
|
return LogicFilterOperator(Operator.AND, {
|
||||||
emailEmailFilterConditionShared,
|
emailEmailFilterConditionShared,
|
||||||
|
|||||||
@@ -865,13 +865,12 @@ class ThreadController extends BaseController {
|
|||||||
|
|
||||||
void searchMoreEmails() {
|
void searchMoreEmails() {
|
||||||
if (canSearchMore && _accountId != null) {
|
if (canSearchMore && _accountId != null) {
|
||||||
|
searchController.updateFilterEmail(before: emailList.last.receivedAt);
|
||||||
consumeState(_searchMoreEmailInteractor.execute(
|
consumeState(_searchMoreEmailInteractor.execute(
|
||||||
_accountId!,
|
_accountId!,
|
||||||
limit: ThreadConstants.defaultLimit,
|
limit: ThreadConstants.defaultLimit,
|
||||||
sort: _sortOrder,
|
sort: _sortOrder,
|
||||||
filter: EmailFilterCondition(
|
filter: searchController.searchEmailFilter.value.mappingToEmailFilterCondition(),
|
||||||
text: searchQuery?.value,
|
|
||||||
before: emailList.last.receivedAt),
|
|
||||||
properties: ThreadConstants.propertiesDefault,
|
properties: ThreadConstants.propertiesDefault,
|
||||||
lastEmailId: emailList.last.id
|
lastEmailId: emailList.last.id
|
||||||
));
|
));
|
||||||
|
|||||||
@@ -540,7 +540,7 @@ class ThreadView extends GetWidget<ThreadController> with AppLoaderMixin,
|
|||||||
&& !controller.isLoadingMore
|
&& !controller.isLoadingMore
|
||||||
&& scrollInfo.metrics.pixels == scrollInfo.metrics.maxScrollExtent
|
&& scrollInfo.metrics.pixels == scrollInfo.metrics.maxScrollExtent
|
||||||
) {
|
) {
|
||||||
if (controller.isSearchActive()) {
|
if (controller.isSearchActive() || controller.isAdvanceSearchActive()) {
|
||||||
controller.searchMoreEmails();
|
controller.searchMoreEmails();
|
||||||
} else {
|
} else {
|
||||||
controller.loadMoreEmails();
|
controller.loadMoreEmails();
|
||||||
|
|||||||
Reference in New Issue
Block a user