Skip to content

Commit dc33ec2

Browse files
authored
Merge pull request #1733 from Infomaniak/fix-read
Opening a Thread now correctly marks it as read
2 parents 401fbca + 390a3cd commit dc33ec2

File tree

3 files changed

+10
-12
lines changed

3 files changed

+10
-12
lines changed

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

+2-7
Original file line numberDiff line numberDiff line change
@@ -352,9 +352,9 @@ class ThreadFragment : Fragment() {
352352
mainViewModel.toggleLightThemeForMessage.observe(viewLifecycleOwner, threadAdapter::toggleLightMode)
353353
}
354354

355-
private fun observeThreadLive() = with(threadViewModel) {
355+
private fun observeThreadLive() {
356356

357-
threadLive.observe(viewLifecycleOwner) { thread ->
357+
threadViewModel.threadLive.observe(viewLifecycleOwner) { thread ->
358358

359359
if (thread == null) {
360360
twoPaneViewModel.closeThread()
@@ -378,11 +378,6 @@ class ThreadFragment : Fragment() {
378378
messagesLive.observe(viewLifecycleOwner) { (items, messagesToFetch) ->
379379
SentryLog.i("UI", "Received ${items.count()} messages")
380380

381-
if (threadState.shouldMarkThreadAsSeen) {
382-
threadState.shouldMarkThreadAsSeen = false
383-
markThreadAsSeen()
384-
}
385-
386381
if (items.isEmpty()) {
387382
mainViewModel.deletedMessages.value = deletedMessagesUids
388383
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 hasBeenMarkedAsSeen: Boolean = false
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+
hasBeenMarkedAsSeen = false
5252
superCollapsedBlock = null
5353
}
5454
}

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

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

258-
threadState.shouldMarkThreadAsSeen = thread.unseenMessagesCount > 0
258+
if (!threadState.hasBeenMarkedAsSeen) {
259+
threadState.hasBeenMarkedAsSeen = true
260+
if (thread.unseenMessagesCount > 0) markThreadAsSeen(thread)
261+
}
259262

260263
emit(thread)
261264
}
262265

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

267270
private fun sendMatomoAndSentryAboutThreadMessagesCount(thread: Thread) {

0 commit comments

Comments
 (0)