diff --git a/lib/features/thread/data/repository/thread_repository_impl.dart b/lib/features/thread/data/repository/thread_repository_impl.dart index 7ba1a9fb1..624f74911 100644 --- a/lib/features/thread/data/repository/thread_repository_impl.dart +++ b/lib/features/thread/data/repository/thread_repository_impl.dart @@ -244,9 +244,6 @@ class ThreadRepositoryImpl extends ThreadRepository { properties: emailRequest.properties) .then((response) { var listEmails = response.emailList; - if (listEmails != null && listEmails.isNotEmpty) { - listEmails = listEmails.where((email) => email.id != emailRequest.lastEmailId).toList(); - } return EmailsResponse(emailList: listEmails, state: response.state); }); diff --git a/lib/features/thread/presentation/thread_controller.dart b/lib/features/thread/presentation/thread_controller.dart index 9d95b8024..9308a4501 100644 --- a/lib/features/thread/presentation/thread_controller.dart +++ b/lib/features/thread/presentation/thread_controller.dart @@ -454,6 +454,7 @@ class ThreadController extends BaseController { } void loadMoreEmails() { + log('ThreadController::loadMoreEmails()'); if (canLoadMore && _accountId != null) { startFpsMeter(); consumeState(_loadMoreEmailsInMailboxInteractor.execute( @@ -469,15 +470,21 @@ class ThreadController extends BaseController { } } - bool _ableAppendLoadMore(List listEmail) { - return !(listEmail.where((email) => (email.mailboxIds != null && !email.mailboxIds!.keys.contains(currentMailbox?.id)) || emailList.contains(email)).isNotEmpty); + bool _belongToCurrentMailboxId(PresentationEmail email) { + return (email.mailboxIds != null && email.mailboxIds!.keys.contains(currentMailbox?.id)); + } + + bool _notDuplicatedInCurrentList(PresentationEmail email) { + return emailList.isEmpty || !emailList.map((element) => element.id).contains(email.id); } void _loadMoreEmailsSuccess(LoadMoreEmailsSuccess success) { if (success.emailList.isNotEmpty) { - if (_ableAppendLoadMore(success.emailList)){ - emailList.addAll(success.emailList); - } + final appendableList = success.emailList + .where(_belongToCurrentMailboxId) + .where(_notDuplicatedInCurrentList); + + emailList.addAll(appendableList); } else { canLoadMore = false; }