From 1d7e3c79ccb15f0fc5ff4d7b584f9cb05be4b2bd Mon Sep 17 00:00:00 2001 From: Kevin Boulongne Date: Fri, 27 Sep 2024 08:04:24 +0200 Subject: [PATCH 1/2] `getMessageCountInThreadForFolder()` is now `getMessagesCountInThread()` --- .../mail/data/cache/mailboxContent/MessageController.kt | 7 ++----- app/src/main/java/com/infomaniak/mail/ui/MainViewModel.kt | 7 +++---- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/infomaniak/mail/data/cache/mailboxContent/MessageController.kt b/app/src/main/java/com/infomaniak/mail/data/cache/mailboxContent/MessageController.kt index 6743edd946..0135cb26c2 100644 --- a/app/src/main/java/com/infomaniak/mail/data/cache/mailboxContent/MessageController.kt +++ b/app/src/main/java/com/infomaniak/mail/data/cache/mailboxContent/MessageController.kt @@ -143,11 +143,8 @@ class MessageController @Inject constructor(private val mailboxContentRealm: Rea return getMessagesQuery(messageUid, mailboxContentRealm()).first().asFlow() } - fun getMessageCountInThreadForFolder(threadUid: String, folderId: String, realm: Realm): Long? { - return ThreadController.getThread(threadUid, realm) - ?.messages?.query("${Message::folderId.name} == $0", folderId) - ?.count() - ?.find() + fun getMessagesCountInThread(threadUid: String, realm: Realm): Int? { + return ThreadController.getThread(threadUid, realm)?.messages?.count() } //endregion diff --git a/app/src/main/java/com/infomaniak/mail/ui/MainViewModel.kt b/app/src/main/java/com/infomaniak/mail/ui/MainViewModel.kt index 83ee47bafa..bb37fa130e 100644 --- a/app/src/main/java/com/infomaniak/mail/ui/MainViewModel.kt +++ b/app/src/main/java/com/infomaniak/mail/ui/MainViewModel.kt @@ -1150,12 +1150,11 @@ class MainViewModel @Inject constructor( private fun shouldAutoAdvance(message: Message?, threadsUids: List): Boolean { val isWorkingWithThread = message == null - return isWorkingWithThread || threadHasOnlyOneMessageLeftInCurrentFolder(threadsUids.first()) + return isWorkingWithThread || threadHasOnlyOneMessageLeft(threadsUids.first()) } - private fun threadHasOnlyOneMessageLeftInCurrentFolder(threadUid: String): Boolean { - val folderId = currentFolderId ?: return false - return messageController.getMessageCountInThreadForFolder(threadUid, folderId, mailboxContentRealm()) == 1L + private fun threadHasOnlyOneMessageLeft(threadUid: String): Boolean { + return messageController.getMessagesCountInThread(threadUid, mailboxContentRealm()) == 1 } fun shareThreadUrl(messageUid: String, startShareActivity: ((String) -> Unit)) { From 0466c5f4c2c5abbaaddb9b9ca87cd8696ddb83e1 Mon Sep 17 00:00:00 2001 From: Kevin Boulongne Date: Fri, 27 Sep 2024 08:05:40 +0200 Subject: [PATCH 2/2] `autoAdvanceThreadsUids` is now a SingleLiveEvent so it doesn't unnecessary trigger all the time --- app/src/main/java/com/infomaniak/mail/ui/MainViewModel.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/infomaniak/mail/ui/MainViewModel.kt b/app/src/main/java/com/infomaniak/mail/ui/MainViewModel.kt index bb37fa130e..75c77bfa8b 100644 --- a/app/src/main/java/com/infomaniak/mail/ui/MainViewModel.kt +++ b/app/src/main/java/com/infomaniak/mail/ui/MainViewModel.kt @@ -121,7 +121,7 @@ class MainViewModel @Inject constructor( val canInstallUpdate = MutableLiveData(false) val messageOfUserToBlock = SingleLiveEvent() - val autoAdvanceThreadsUids = MutableLiveData>() + val autoAdvanceThreadsUids = SingleLiveEvent>() val mailboxesLive = mailboxController.getMailboxesAsync(AccountUtils.currentUserId).asLiveData(ioCoroutineContext)