Skip to content

Commit e034d55

Browse files
Opening a Thread now correctly marks it as read
1 parent 082bebe commit e034d55

File tree

3 files changed

+10
-10
lines changed

3 files changed

+10
-10
lines changed

app/src/main/java/com/infomaniak/mail/ui/main/thread/ThreadFragment.kt

+5-5
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,11 @@ class ThreadFragment : Fragment() {
361361
return@observe
362362
}
363363

364+
if (threadState.shouldMarkThreadAsSeen == true) {
365+
threadState.shouldMarkThreadAsSeen = false
366+
markThreadAsSeen(thread)
367+
}
368+
364369
binding.iconFavorite.apply {
365370
setIconResource(if (thread.isFavorite) R.drawable.ic_star_filled else R.drawable.ic_star)
366371
val color = if (thread.isFavorite) {
@@ -378,11 +383,6 @@ class ThreadFragment : Fragment() {
378383
messagesLive.observe(viewLifecycleOwner) { (items, messagesToFetch) ->
379384
SentryLog.i("UI", "Received ${items.count()} messages")
380385

381-
if (threadState.shouldMarkThreadAsSeen) {
382-
threadState.shouldMarkThreadAsSeen = false
383-
markThreadAsSeen()
384-
}
385-
386386
if (items.isEmpty()) {
387387
mainViewModel.deletedMessages.value = deletedMessagesUids
388388
twoPaneViewModel.closeThread()

app/src/main/java/com/infomaniak/mail/ui/main/thread/ThreadState.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ class ThreadState {
3737
val isCalendarEventExpandedMap: MutableMap<String, Boolean> = mutableMapOf()
3838
val treatedMessagesForCalendarEvent: MutableSet<String> = mutableSetOf()
3939
val cachedSplitBodies: MutableMap<String, SplitBody> = mutableMapOf()
40-
var shouldMarkThreadAsSeen: Boolean = false
40+
var shouldMarkThreadAsSeen: Boolean? = null
4141
var superCollapsedBlock: SuperCollapsedBlock? = null
4242

4343
fun reset() {
@@ -48,7 +48,7 @@ class ThreadState {
4848
isCalendarEventExpandedMap.clear()
4949
treatedMessagesForCalendarEvent.clear()
5050
cachedSplitBodies.clear()
51-
shouldMarkThreadAsSeen = false
51+
shouldMarkThreadAsSeen = null
5252
superCollapsedBlock = null
5353
}
5454
}

app/src/main/java/com/infomaniak/mail/ui/main/thread/ThreadViewModel.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -255,13 +255,13 @@ class ThreadViewModel @Inject constructor(
255255
}
256256
}
257257

258-
threadState.shouldMarkThreadAsSeen = thread.unseenMessagesCount > 0
258+
if (threadState.shouldMarkThreadAsSeen == null) threadState.shouldMarkThreadAsSeen = thread.unseenMessagesCount > 0
259259

260260
emit(thread)
261261
}
262262

263-
fun markThreadAsSeen() = viewModelScope.launch(ioCoroutineContext) {
264-
threadLive.value?.let { sharedUtils.markAsSeen(mailbox, listOf(it)) }
263+
fun markThreadAsSeen(thread: Thread) = viewModelScope.launch(ioCoroutineContext) {
264+
sharedUtils.markAsSeen(mailbox, listOf(thread))
265265
}
266266

267267
private fun sendMatomoAndSentryAboutThreadMessagesCount(thread: Thread) {

0 commit comments

Comments
 (0)