@@ -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" 
508494                }
0 commit comments