Skip to content

Commit 8f40378

Browse files
committed
fix: marking channels as unread
Signed-off-by: Infi <[email protected]>
1 parent 11439bf commit 8f40378

File tree

1 file changed

+7
-21
lines changed

1 file changed

+7
-21
lines changed

app/src/main/java/chat/revolt/screens/chat/views/channel/ChannelScreenViewModel.kt

Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ class ChannelScreenViewModel @Inject constructor(
143143
denyMessageFieldIfNeeded()
144144
}
145145

146-
this.loadMessages(50)
146+
this.loadMessages(50, markLastAsRead = true)
147147
}
148148

149149
suspend fun unlockAgeGate() {
@@ -420,7 +420,8 @@ class ChannelScreenViewModel @Inject constructor(
420420
before: String? = null,
421421
after: String? = null,
422422
around: String? = null,
423-
ignoreExisting: Boolean = false
423+
ignoreExisting: Boolean = false,
424+
markLastAsRead: Boolean = false
424425
) {
425426
channel?.id?.let { channelId ->
426427
loadMessagesJob = viewModelScope.launch {
@@ -451,13 +452,11 @@ class ChannelScreenViewModel @Inject constructor(
451452
RevoltAPI.members.setMember(member.id.server, member)
452453
}
453454
}
454-
}
455455

456-
val ackNewest: Boolean
457-
if (!didInitialChannelFetch) {
458-
didInitialChannelFetch = true
459-
ackNewest = true
460-
} else ackNewest = false
456+
if (markLastAsRead) {
457+
ackMessage(messages.firstOrNull()?.id ?: return@launch)
458+
}
459+
}
461460

462461
val newItems = messages.filter {
463462
if (ignoreExisting) {
@@ -490,19 +489,6 @@ class ChannelScreenViewModel @Inject constructor(
490489
}
491490

492491
updateItems(newItemsWithPosition)
493-
494-
// If ackNewest is true, we ack the newest (first, as initial fetch is newest to oldest) message.
495-
if (ackNewest) {
496-
ackMessage(newItemsWithPosition.first {
497-
it is ChannelScreenItem.RegularMessage || it is ChannelScreenItem.SystemMessage
498-
}.let {
499-
when (it) {
500-
is ChannelScreenItem.RegularMessage -> it.message.id
501-
is ChannelScreenItem.SystemMessage -> it.message.id
502-
else -> null
503-
}
504-
} ?: return@launch)
505-
}
506492
} catch (e: Exception) {
507493
Log.e("ChannelScreenViewModel", "Failed to fetch messages", e)
508494
}

0 commit comments

Comments
 (0)