forked from GitHub-Mirror/riotX-android
Introduce a localId for event, to avoid blink effect when sending
This commit is contained in:
@ -20,12 +20,18 @@ data class EnrichedEvent(val root: Event) {
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val ROOM_MEMBER = "ROOM_MEMBER"
|
||||
const val IS_LAST_EVENT = "IS_LAST_EVENT"
|
||||
const val READ_RECEIPTS = "READ_RECEIPTS"
|
||||
const val LOCAL_ID = "LOCAL_ID"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fun EnrichedEvent.roomMember(): RoomMember? {
|
||||
return getMetadata<RoomMember>(EventType.STATE_ROOM_MEMBER)
|
||||
return getMetadata<RoomMember>(EnrichedEvent.ROOM_MEMBER)
|
||||
}
|
||||
|
||||
fun EnrichedEvent.localId(): String? {
|
||||
return getMetadata<String>(EnrichedEvent.LOCAL_ID)
|
||||
}
|
||||
|
@ -3,8 +3,11 @@ package im.vector.matrix.android.internal.database.model
|
||||
import io.realm.RealmObject
|
||||
import io.realm.RealmResults
|
||||
import io.realm.annotations.LinkingObjects
|
||||
import io.realm.annotations.PrimaryKey
|
||||
import java.util.*
|
||||
|
||||
internal open class EventEntity(var eventId: String = "",
|
||||
internal open class EventEntity(@PrimaryKey var localId: String = UUID.randomUUID().toString(),
|
||||
var eventId: String = "",
|
||||
var type: String = "",
|
||||
var content: String = "",
|
||||
var prevContent: String? = null,
|
||||
|
@ -18,16 +18,15 @@ internal class MessageEventInterceptor(private val monarchy: Monarchy,
|
||||
|
||||
override fun enrich(event: EnrichedEvent) {
|
||||
monarchy.doWithRealm { realm ->
|
||||
|
||||
if (event.root.eventId == null) {
|
||||
return@doWithRealm
|
||||
}
|
||||
|
||||
val rootEntity = EventEntity.where(realm, eventId = event.root.eventId).findFirst()
|
||||
?: return@doWithRealm
|
||||
?: return@doWithRealm
|
||||
event.enrichWith(EnrichedEvent.LOCAL_ID, rootEntity.localId)
|
||||
|
||||
val roomMember = RoomMemberExtractor(realm, roomId).extractFrom(rootEntity)
|
||||
event.enrichWith(EventType.STATE_ROOM_MEMBER, roomMember)
|
||||
event.enrichWith(EnrichedEvent.ROOM_MEMBER, roomMember)
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user