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) {
|
if (queryString?.isNotEmpty == true) {
|
||||||
searchController.updateFilterEmail(text: SearchQuery(queryString!));
|
searchController.updateFilterEmail(text: SearchQuery(queryString!));
|
||||||
}
|
}
|
||||||
|
searchController.updateFilterEmail(sortOrderOption: searchController.sortOrderFiltered.value.getSortOrder());
|
||||||
dispatchAction(StartSearchEmailAction());
|
dispatchAction(StartSearchEmailAction());
|
||||||
KeyboardUtils.hideKeyboard(context);
|
KeyboardUtils.hideKeyboard(context);
|
||||||
if (_searchInsideEmailDetailedViewIsActive(context)) {
|
if (_searchInsideEmailDetailedViewIsActive(context)) {
|
||||||
|
|||||||
@@ -362,7 +362,12 @@ class SearchEmailController extends BaseController
|
|||||||
void searchMoreEmailsAction() {
|
void searchMoreEmailsAction() {
|
||||||
if (canSearchMore && session != null && accountId != null) {
|
if (canSearchMore && session != null && accountId != null) {
|
||||||
final lastEmail = listResultSearch.last;
|
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(
|
consumeState(_searchMoreEmailInteractor.execute(
|
||||||
session!,
|
session!,
|
||||||
@@ -384,7 +389,7 @@ class SearchEmailController extends BaseController
|
|||||||
if (success.emailList.isNotEmpty) {
|
if (success.emailList.isNotEmpty) {
|
||||||
final resultEmailSearchList = success.emailList
|
final resultEmailSearchList = success.emailList
|
||||||
.map((email) => email.toSearchPresentationEmail(mailboxDashBoardController.mapMailboxById))
|
.map((email) => email.toSearchPresentationEmail(mailboxDashBoardController.mapMailboxById))
|
||||||
.where((email) => !listResultSearch.contains(email))
|
.where((email) => listResultSearch.every((emailInCurrentList) => emailInCurrentList.id != email.id))
|
||||||
.toList()
|
.toList()
|
||||||
.syncPresentationEmail(
|
.syncPresentationEmail(
|
||||||
mapMailboxById: mailboxDashBoardController.mapMailboxById,
|
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/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/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/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/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/model/create_new_email_rule_filter_request.dart';
|
||||||
import 'package:tmail_ui_user/features/manage_account/domain/state/create_new_rule_filter_state.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() {
|
void searchMoreEmails() {
|
||||||
if (canSearchMore && _session != null && _accountId != null) {
|
if (canSearchMore && _session != null && _accountId != null) {
|
||||||
final oldestEmail = mailboxDashBoardController.emailsInCurrentMailbox.isNotEmpty
|
final lastEmail = mailboxDashBoardController.emailsInCurrentMailbox.isNotEmpty
|
||||||
? mailboxDashBoardController.emailsInCurrentMailbox.last
|
? mailboxDashBoardController.emailsInCurrentMailbox.last
|
||||||
: null;
|
: 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(
|
consumeState(_searchMoreEmailInteractor.execute(
|
||||||
_session!,
|
_session!,
|
||||||
_accountId!,
|
_accountId!,
|
||||||
@@ -790,7 +798,7 @@ class ThreadController extends BaseController with EmailActionController {
|
|||||||
sort: _searchEmailFilter.sortOrder ?? _sortOrder,
|
sort: _searchEmailFilter.sortOrder ?? _sortOrder,
|
||||||
filter: _searchEmailFilter.mappingToEmailFilterCondition(moreFilterCondition: _getFilterCondition()),
|
filter: _searchEmailFilter.mappingToEmailFilterCondition(moreFilterCondition: _getFilterCondition()),
|
||||||
properties: EmailUtils.getPropertiesForEmailGetMethod(_session!, _accountId!),
|
properties: EmailUtils.getPropertiesForEmailGetMethod(_session!, _accountId!),
|
||||||
lastEmailId: oldestEmail?.id
|
lastEmailId: lastEmail?.id
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -802,7 +810,7 @@ class ThreadController extends BaseController with EmailActionController {
|
|||||||
canSearchMore = true;
|
canSearchMore = true;
|
||||||
final resultEmailSearchList = success.emailList
|
final resultEmailSearchList = success.emailList
|
||||||
.map((email) => email.toSearchPresentationEmail(mailboxDashBoardController.mapMailboxById))
|
.map((email) => email.toSearchPresentationEmail(mailboxDashBoardController.mapMailboxById))
|
||||||
.where((email) => !mailboxDashBoardController.emailsInCurrentMailbox.contains(email))
|
.where((email) => mailboxDashBoardController.emailsInCurrentMailbox.every((emailInCurrentMailbox) => emailInCurrentMailbox.id != email.id))
|
||||||
.toList()
|
.toList()
|
||||||
.syncPresentationEmail(
|
.syncPresentationEmail(
|
||||||
mapMailboxById: mailboxDashBoardController.mapMailboxById,
|
mapMailboxById: mailboxDashBoardController.mapMailboxById,
|
||||||
|
|||||||
Reference in New Issue
Block a user