Fix / Edits could break cells merging

Edits are not displayable
This commit is contained in:
Valere 2019-05-27 12:30:05 +02:00
parent 0e06908a48
commit d9fecabc1f
2 changed files with 22 additions and 9 deletions

View File

@ -105,10 +105,8 @@ class MessageItemFactory(private val colorProvider: ColorProvider,
?: //Malformed content, we should echo something on screen ?: //Malformed content, we should echo something on screen
return DefaultItem_().text(stringProvider.getString(R.string.malformed_message)) return DefaultItem_().text(stringProvider.getString(R.string.malformed_message))


//TODO this should be filtered as not displayable?
if (messageContent.relatesTo?.type == RelationType.REPLACE) { if (messageContent.relatesTo?.type == RelationType.REPLACE) {
//TODO blank item or ignore?? // ignore replace event, the targeted id is already edited
// ignore this event
return BlankItem_() return BlankItem_()
} }
// val all = event.root.toContent() // val all = event.root.toContent()

View File

@ -17,6 +17,10 @@
package im.vector.riotredesign.features.home.room.detail.timeline.helper package im.vector.riotredesign.features.home.room.detail.timeline.helper


import im.vector.matrix.android.api.session.events.model.EventType import im.vector.matrix.android.api.session.events.model.EventType
import im.vector.matrix.android.api.session.events.model.RelationType
import im.vector.matrix.android.api.session.events.model.toModel
import im.vector.matrix.android.api.session.room.model.message.MessageContent
import im.vector.matrix.android.api.session.room.model.message.MessageTextContent
import im.vector.matrix.android.api.session.room.timeline.TimelineEvent import im.vector.matrix.android.api.session.room.timeline.TimelineEvent
import im.vector.riotredesign.core.extensions.localDateTime import im.vector.riotredesign.core.extensions.localDateTime


@ -40,14 +44,25 @@ object TimelineDisplayableEvents {
} }


fun TimelineEvent.isDisplayable(): Boolean { fun TimelineEvent.isDisplayable(): Boolean {
return TimelineDisplayableEvents.DISPLAYABLE_TYPES.contains(root.type) && !root.content.isNullOrEmpty() if (!TimelineDisplayableEvents.DISPLAYABLE_TYPES.contains(root.type)) {
} return false

fun List<TimelineEvent>.filterDisplayableEvents(): List<TimelineEvent> {
return this.filter {
it.isDisplayable()
} }
if (root.content.isNullOrEmpty()) {
return false
}
//Edits should be filtered out!
if (EventType.MESSAGE == root.type
&& root.content.toModel<MessageContent>()?.relatesTo?.type == RelationType.REPLACE) {
return false
}
return true
} }
//
//fun List<TimelineEvent>.filterDisplayableEvents(): List<TimelineEvent> {
// return this.filter {
// it.isDisplayable()
// }
//}


fun TimelineEvent.canBeMerged(): Boolean { fun TimelineEvent.canBeMerged(): Boolean {
return root.type == EventType.STATE_ROOM_MEMBER return root.type == EventType.STATE_ROOM_MEMBER