@@ -80,12 +80,17 @@ import im.vector.app.features.voice.AudioWaveformView
8080import im.vector.lib.core.utils.epoxy.charsequence.toEpoxyCharSequence
8181import me.gujun.android.span.span
8282import org.matrix.android.sdk.api.MatrixUrls.isMxcUrl
83+ import org.matrix.android.sdk.api.query.QueryStringValue
8384import org.matrix.android.sdk.api.session.Session
85+ import org.matrix.android.sdk.api.session.content.ContentUrlResolver
8486import org.matrix.android.sdk.api.session.crypto.attachments.toElementToDecrypt
87+ import org.matrix.android.sdk.api.session.events.model.EventType
8588import org.matrix.android.sdk.api.session.events.model.RelationType
8689import org.matrix.android.sdk.api.session.events.model.content.EncryptedEventContent
8790import org.matrix.android.sdk.api.session.events.model.isThread
8891import org.matrix.android.sdk.api.session.events.model.toModel
92+ import org.matrix.android.sdk.api.session.getRoom
93+ import org.matrix.android.sdk.api.session.room.getStateEvent
8994import org.matrix.android.sdk.api.session.room.model.message.MessageAudioContent
9095import org.matrix.android.sdk.api.session.room.model.message.MessageBeaconInfoContent
9196import org.matrix.android.sdk.api.session.room.model.message.MessageContent
@@ -105,6 +110,7 @@ import org.matrix.android.sdk.api.session.room.model.message.getThumbnailUrl
105110import org.matrix.android.sdk.api.session.room.timeline.getLastMessageContent
106111import org.matrix.android.sdk.api.settings.LightweightSettingsStorage
107112import org.matrix.android.sdk.api.util.MimeTypes
113+ import timber.log.Timber
108114import javax.inject.Inject
109115
110116class MessageItemFactory @Inject constructor(
@@ -185,9 +191,23 @@ class MessageItemFactory @Inject constructor(
185191
186192 // val all = event.root.toContent()
187193 // val ev = all.toModel<Event>()
194+
195+ val room= session.getRoom(roomId)
196+ val rawEmotes= room?.getStateEvent(EventType .STATE_ROOM_EMOTES ,QueryStringValue .IsEmpty )
197+ ?.content
198+ ?.toMap()
199+ // val rawEmotes= mutableMapOf<String,String>()
200+ val contentResolver= session.contentUrlResolver()
201+ val finalEmotes= mutableMapOf<String ,String >()
202+ if (rawEmotes != null ) {
203+ for ((key,value) in rawEmotes){
204+ finalEmotes[" :" + key+ " :" ]= " <img style='height:80px;' src='" + contentResolver.resolveFullSize(value.toString()) + " '/>"
205+
206+ }
207+ }
188208 val messageItem = when (messageContent) {
189209 is MessageEmoteContent -> buildEmoteMessageItem(messageContent, informationData, highlight, callback, attributes)
190- is MessageTextContent -> buildItemForTextContent(messageContent, informationData, highlight, callback, attributes)
210+ is MessageTextContent -> buildItemForTextContent(messageContent, informationData, highlight, callback, attributes,finalEmotes )
191211 is MessageImageInfoContent -> buildImageMessageItem(messageContent, informationData, highlight, callback, attributes)
192212 is MessageNoticeContent -> buildNoticeMessageItem(messageContent, informationData, highlight, callback, attributes)
193213 is MessageVideoContent -> buildVideoMessageItem(messageContent, informationData, highlight, callback, attributes)
@@ -522,10 +542,15 @@ class MessageItemFactory @Inject constructor(
522542 highlight : Boolean ,
523543 callback : TimelineEventController .Callback ? ,
524544 attributes : AbsMessageItem .Attributes ,
545+ emotes : Map <String ,String >,
525546 ): VectorEpoxyModel <* >? {
526547 val matrixFormattedBody = messageContent.matrixFormattedBody
548+ val emotesBody: String
549+ emotesBody = messageContent.body.replace(Regex (" :[^:]+:" )) { emotes[it.value] ? : it.value }
527550 return if (matrixFormattedBody != null ) {
528551 buildFormattedTextItem(matrixFormattedBody, informationData, highlight, callback, attributes)
552+ } else if (emotesBody!= messageContent.body){
553+ buildFormattedTextItem(emotesBody, informationData, highlight, callback, attributes)
529554 } else {
530555 buildMessageTextItem(messageContent.body, false , informationData, highlight, callback, attributes)
531556 }
@@ -574,6 +599,8 @@ class MessageItemFactory @Inject constructor(
574599 .attributes(attributes)
575600 .highlighted(highlight)
576601 .movementMethod(createLinkMovementMethod(callback))
602+
603+
577604 }
578605
579606 private fun annotateWithEdited (
0 commit comments