File tree Expand file tree Collapse file tree 2 files changed +12
-1
lines changed
Sources/StreamChat/Database/DTOs Expand file tree Collapse file tree 2 files changed +12
-1
lines changed Original file line number Diff line number Diff line change @@ -166,9 +166,16 @@ extension NSManagedObjectContext {
166166 read. lastReadAt = lastReadAt. bridgeDate
167167 read. lastReadMessageId = lastReadMessageId
168168
169+ let excludesMessageId : Bool = {
170+ switch unreadCriteria {
171+ case . messageId: return false
172+ case . messageTimestamp: return true
173+ }
174+ } ( )
169175 let messagesCount = unreadMessagesCount ?? MessageDTO . countOtherUserMessages (
170176 in: read. channel. cid,
171177 createdAtFrom: lastReadAt,
178+ excludingMessageId: excludesMessageId ? message. id : nil ,
172179 context: self
173180 )
174181 read. unreadMessageCount = Int32 ( messagesCount)
Original file line number Diff line number Diff line change @@ -558,13 +558,17 @@ class MessageDTO: NSManagedObject {
558558 static func countOtherUserMessages(
559559 in cid: String ,
560560 createdAtFrom: Date ,
561+ excludingMessageId: MessageId ? ,
561562 context: NSManagedObjectContext
562563 ) -> Int {
563- let subpredicates : [ NSPredicate ] = [
564+ var subpredicates : [ NSPredicate ] = [
564565 sentMessagesPredicate ( for: cid) ,
565566 . init( format: " createdAt >= %@ " , createdAtFrom. bridgeDate) ,
566567 . init( format: " user.currentUser == nil " )
567568 ]
569+ if let excludingMessageId {
570+ subpredicates. append ( . init( format: " id != %@ " , excludingMessageId) )
571+ }
568572
569573 let request = NSFetchRequest < MessageDTO > ( entityName: MessageDTO . entityName)
570574 request. sortDescriptors = [ NSSortDescriptor ( keyPath: \MessageDTO . defaultSortingKey, ascending: false ) ]
You can’t perform that action at this time.
0 commit comments