TF-2381 Fix duplicate searching result after load mre
(cherry picked from commit 1cebbf8495990e9eecd78500a6c08d116314d5dc)
This commit is contained in:
+1
@@ -621,6 +621,7 @@ class MailboxDashBoardController extends ReloadableController {
|
||||
if (queryString?.isNotEmpty == true) {
|
||||
searchController.updateFilterEmail(text: SearchQuery(queryString!));
|
||||
}
|
||||
searchController.updateFilterEmail(sortOrderOption: searchController.sortOrderFiltered.value.getSortOrder());
|
||||
dispatchAction(StartSearchEmailAction());
|
||||
KeyboardUtils.hideKeyboard(context);
|
||||
if (_searchInsideEmailDetailedViewIsActive(context)) {
|
||||
|
||||
@@ -362,7 +362,12 @@ class SearchEmailController extends BaseController
|
||||
void searchMoreEmailsAction() {
|
||||
if (canSearchMore && session != null && accountId != null) {
|
||||
final lastEmail = listResultSearch.last;
|
||||
_updateSimpleSearchFilter(beforeOption: optionOf(lastEmail.receivedAt));
|
||||
final firstEmail = listResultSearch.first;
|
||||
if (emailSortOrderType.value == EmailSortOrderType.oldest) {
|
||||
_updateSimpleSearchFilter(beforeOption: optionOf(firstEmail.receivedAt));
|
||||
} else {
|
||||
_updateSimpleSearchFilter(beforeOption: optionOf(lastEmail.receivedAt));
|
||||
}
|
||||
|
||||
consumeState(_searchMoreEmailInteractor.execute(
|
||||
session!,
|
||||
@@ -384,7 +389,7 @@ class SearchEmailController extends BaseController
|
||||
if (success.emailList.isNotEmpty) {
|
||||
final resultEmailSearchList = success.emailList
|
||||
.map((email) => email.toSearchPresentationEmail(mailboxDashBoardController.mapMailboxById))
|
||||
.where((email) => !listResultSearch.contains(email))
|
||||
.where((email) => listResultSearch.every((emailInCurrentList) => emailInCurrentList.id != email.id))
|
||||
.toList()
|
||||
.syncPresentationEmail(
|
||||
mapMailboxById: mailboxDashBoardController.mapMailboxById,
|
||||
|
||||
@@ -37,6 +37,7 @@ import 'package:tmail_ui_user/features/mailbox_dashboard/domain/state/remove_ema
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/action/dashboard_action.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/controller/search_controller.dart' as search;
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/dashboard_routes.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/email_sort_order_type.dart';
|
||||
import 'package:tmail_ui_user/features/mailbox_dashboard/presentation/model/search/search_email_filter.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/model/create_new_email_rule_filter_request.dart';
|
||||
import 'package:tmail_ui_user/features/manage_account/domain/state/create_new_rule_filter_state.dart';
|
||||
@@ -779,10 +780,17 @@ class ThreadController extends BaseController with EmailActionController {
|
||||
|
||||
void searchMoreEmails() {
|
||||
if (canSearchMore && _session != null && _accountId != null) {
|
||||
final oldestEmail = mailboxDashBoardController.emailsInCurrentMailbox.isNotEmpty
|
||||
final lastEmail = mailboxDashBoardController.emailsInCurrentMailbox.isNotEmpty
|
||||
? mailboxDashBoardController.emailsInCurrentMailbox.last
|
||||
: null;
|
||||
searchController.updateFilterEmail(beforeOption: optionOf(oldestEmail?.receivedAt));
|
||||
final firstEmail = mailboxDashBoardController.emailsInCurrentMailbox.isNotEmpty
|
||||
? mailboxDashBoardController.emailsInCurrentMailbox.first
|
||||
: null;
|
||||
if (optionOf(_searchEmailFilter.sortOrder).toString() == EmailSortOrderType.oldest.getSortOrder().toString()) {
|
||||
searchController.updateFilterEmail(beforeOption: optionOf(firstEmail?.receivedAt));
|
||||
} else {
|
||||
searchController.updateFilterEmail(beforeOption: optionOf(lastEmail?.receivedAt));
|
||||
}
|
||||
consumeState(_searchMoreEmailInteractor.execute(
|
||||
_session!,
|
||||
_accountId!,
|
||||
@@ -790,7 +798,7 @@ class ThreadController extends BaseController with EmailActionController {
|
||||
sort: _searchEmailFilter.sortOrder ?? _sortOrder,
|
||||
filter: _searchEmailFilter.mappingToEmailFilterCondition(moreFilterCondition: _getFilterCondition()),
|
||||
properties: EmailUtils.getPropertiesForEmailGetMethod(_session!, _accountId!),
|
||||
lastEmailId: oldestEmail?.id
|
||||
lastEmailId: lastEmail?.id
|
||||
));
|
||||
}
|
||||
}
|
||||
@@ -802,7 +810,7 @@ class ThreadController extends BaseController with EmailActionController {
|
||||
canSearchMore = true;
|
||||
final resultEmailSearchList = success.emailList
|
||||
.map((email) => email.toSearchPresentationEmail(mailboxDashBoardController.mapMailboxById))
|
||||
.where((email) => !mailboxDashBoardController.emailsInCurrentMailbox.contains(email))
|
||||
.where((email) => mailboxDashBoardController.emailsInCurrentMailbox.every((emailInCurrentMailbox) => emailInCurrentMailbox.id != email.id))
|
||||
.toList()
|
||||
.syncPresentationEmail(
|
||||
mapMailboxById: mailboxDashBoardController.mapMailboxById,
|
||||
|
||||
Reference in New Issue
Block a user