mirror of
https://github.com/SchildiChat/SchildiChat-android.git
synced 2024-11-25 02:45:53 +03:00
Merge pull request #584 from vector-im/feature/hasUnread
isEventRead() returns true if the event has been sent by the user
This commit is contained in:
commit
6422d946c9
1 changed files with 10 additions and 4 deletions
|
@ -30,12 +30,18 @@ internal fun isEventRead(monarchy: Monarchy,
|
|||
var isEventRead = false
|
||||
|
||||
monarchy.doWithRealm { realm ->
|
||||
val readReceipt = ReadReceiptEntity.where(realm, roomId, userId).findFirst() ?: return@doWithRealm
|
||||
val liveChunk = ChunkEntity.findLastLiveChunkFromRoom(realm, roomId) ?: return@doWithRealm
|
||||
val readReceiptIndex = liveChunk.timelineEvents.find(readReceipt.eventId)?.root?.displayIndex ?: Int.MIN_VALUE
|
||||
val eventToCheckIndex = liveChunk.timelineEvents.find(eventId)?.root?.displayIndex ?: Int.MAX_VALUE
|
||||
val eventToCheck = liveChunk.timelineEvents.find(eventId)?.root
|
||||
|
||||
isEventRead = eventToCheckIndex <= readReceiptIndex
|
||||
isEventRead = if (eventToCheck?.sender == userId) {
|
||||
true
|
||||
} else {
|
||||
val readReceipt = ReadReceiptEntity.where(realm, roomId, userId).findFirst() ?: return@doWithRealm
|
||||
val readReceiptIndex = liveChunk.timelineEvents.find(readReceipt.eventId)?.root?.displayIndex ?: Int.MIN_VALUE
|
||||
val eventToCheckIndex = eventToCheck?.displayIndex ?: Int.MAX_VALUE
|
||||
|
||||
eventToCheckIndex <= readReceiptIndex
|
||||
}
|
||||
}
|
||||
|
||||
return isEventRead
|
||||
|
|
Loading…
Reference in a new issue