Skip to content

Commit e4ca206

Browse files
Merge pull request #2056 from Infomaniak/fix-autoAdvance
Fix AutoAdvance feature that was triggering too often
2 parents be36a18 + 0466c5f commit e4ca206

File tree

2 files changed

+6
-10
lines changed

2 files changed

+6
-10
lines changed

app/src/main/java/com/infomaniak/mail/data/cache/mailboxContent/MessageController.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -143,11 +143,8 @@ class MessageController @Inject constructor(private val mailboxContentRealm: Rea
143143
return getMessagesQuery(messageUid, mailboxContentRealm()).first().asFlow()
144144
}
145145

146-
fun getMessageCountInThreadForFolder(threadUid: String, folderId: String, realm: Realm): Long? {
147-
return ThreadController.getThread(threadUid, realm)
148-
?.messages?.query("${Message::folderId.name} == $0", folderId)
149-
?.count()
150-
?.find()
146+
fun getMessagesCountInThread(threadUid: String, realm: Realm): Int? {
147+
return ThreadController.getThread(threadUid, realm)?.messages?.count()
151148
}
152149
//endregion
153150

app/src/main/java/com/infomaniak/mail/ui/MainViewModel.kt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ class MainViewModel @Inject constructor(
121121
val canInstallUpdate = MutableLiveData(false)
122122
val messageOfUserToBlock = SingleLiveEvent<Message>()
123123

124-
val autoAdvanceThreadsUids = MutableLiveData<List<String>>()
124+
val autoAdvanceThreadsUids = SingleLiveEvent<List<String>>()
125125

126126
val mailboxesLive = mailboxController.getMailboxesAsync(AccountUtils.currentUserId).asLiveData(ioCoroutineContext)
127127

@@ -1150,12 +1150,11 @@ class MainViewModel @Inject constructor(
11501150

11511151
private fun shouldAutoAdvance(message: Message?, threadsUids: List<String>): Boolean {
11521152
val isWorkingWithThread = message == null
1153-
return isWorkingWithThread || threadHasOnlyOneMessageLeftInCurrentFolder(threadsUids.first())
1153+
return isWorkingWithThread || threadHasOnlyOneMessageLeft(threadsUids.first())
11541154
}
11551155

1156-
private fun threadHasOnlyOneMessageLeftInCurrentFolder(threadUid: String): Boolean {
1157-
val folderId = currentFolderId ?: return false
1158-
return messageController.getMessageCountInThreadForFolder(threadUid, folderId, mailboxContentRealm()) == 1L
1156+
private fun threadHasOnlyOneMessageLeft(threadUid: String): Boolean {
1157+
return messageController.getMessagesCountInThread(threadUid, mailboxContentRealm()) == 1
11591158
}
11601159

11611160
fun shareThreadUrl(messageUid: String, startShareActivity: ((String) -> Unit)) {

0 commit comments

Comments
 (0)