From b4d75fe4703dc5ff269e46e9e22cab8e3ae6a3cc Mon Sep 17 00:00:00 2001 From: Kevin Boulongne Date: Thu, 29 Aug 2024 07:04:22 +0200 Subject: [PATCH] Use `getUpToDateFolder()` instead of `findLatest()` in RefreshController --- .../cache/mailboxContent/RefreshController.kt | 40 +++++++++---------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/com/infomaniak/mail/data/cache/mailboxContent/RefreshController.kt b/app/src/main/java/com/infomaniak/mail/data/cache/mailboxContent/RefreshController.kt index 0448ea0c1d..c4edea99a0 100644 --- a/app/src/main/java/com/infomaniak/mail/data/cache/mailboxContent/RefreshController.kt +++ b/app/src/main/java/com/infomaniak/mail/data/cache/mailboxContent/RefreshController.kt @@ -388,19 +388,18 @@ class RefreshController @Inject constructor( apiResponse.data?.messages?.let { messages -> writeBlocking { - findLatest(folder)?.let { latestFolder -> - val isConversationMode = localSettings.threadMode == ThreadMode.CONVERSATION - val allImpactedThreads = createThreads(scope, latestFolder, messages, isConversationMode).also { threads -> - val foldersIds = (if (isConversationMode) threads.map { it.folderId }.toSet() else emptySet()) + folder.id - foldersIds.forEach { refreshUnreadCount(id = it, realm = this) } - } - SentryLog.d( - "Realm", - "Saved Messages: ${latestFolder.displayForSentry()} | ${latestFolder.messages.count()}", - ) - - impactedThreads += allImpactedThreads.filter { it.folderId == folder.id } + val upToDateFolder = getUpToDateFolder(folder.id) + val isConversationMode = localSettings.threadMode == ThreadMode.CONVERSATION + val allImpactedThreads = createThreads(scope, upToDateFolder, messages, isConversationMode).also { threads -> + val foldersIds = (if (isConversationMode) threads.map { it.folderId }.toSet() else emptySet()) + folder.id + foldersIds.forEach { refreshUnreadCount(id = it, realm = this) } } + SentryLog.d( + "Realm", + "Saved Messages: ${upToDateFolder.displayForSentry()} | ${upToDateFolder.messages.count()}", + ) + + impactedThreads += allImpactedThreads.filter { it.folderId == upToDateFolder.id } } } @@ -725,16 +724,15 @@ class RefreshController @Inject constructor( private fun Realm.sendSentryOrphans(folder: Folder, previousCursor: String? = null) { writeBlocking { - findLatest(folder)?.let { - SentryDebug.sendOrphanMessages(previousCursor, folder = it).also { orphans -> - MessageController.deleteMessages(appContext, mailbox, orphans, realm = this) - } - SentryDebug.sendOrphanThreads(previousCursor, folder = it, realm = this).also { orphans -> - orphans.forEach { thread -> - MessageController.deleteMessages(appContext, mailbox, thread.messages, realm = this) - } - delete(orphans) + val upToDateFolder = getUpToDateFolder(folder.id) + SentryDebug.sendOrphanMessages(previousCursor, folder = upToDateFolder).also { orphans -> + MessageController.deleteMessages(appContext, mailbox, orphans, realm = this) + } + SentryDebug.sendOrphanThreads(previousCursor, folder = upToDateFolder, realm = this).also { orphans -> + orphans.forEach { thread -> + MessageController.deleteMessages(appContext, mailbox, thread.messages, realm = this) } + delete(orphans) } } }