diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/format/DisplayableEventFormatter.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/format/DisplayableEventFormatter.kt index bf333b0417..cb9f583a2a 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/format/DisplayableEventFormatter.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/format/DisplayableEventFormatter.kt @@ -20,15 +20,17 @@ import im.vector.app.EmojiCompatWrapper import im.vector.app.R import im.vector.app.core.resources.ColorProvider import im.vector.app.core.resources.StringProvider +import me.gujun.android.span.span import org.matrix.android.sdk.api.session.events.model.EventType import org.matrix.android.sdk.api.session.events.model.toModel +import org.matrix.android.sdk.api.session.room.model.message.MessageOptionsContent import org.matrix.android.sdk.api.session.room.model.message.MessageType +import org.matrix.android.sdk.api.session.room.model.message.OPTION_TYPE_BUTTONS import org.matrix.android.sdk.api.session.room.model.relation.ReactionContent import org.matrix.android.sdk.api.session.room.timeline.TimelineEvent import org.matrix.android.sdk.api.session.room.timeline.getLastMessageContent import org.matrix.android.sdk.api.session.room.timeline.getTextEditableContent import org.matrix.android.sdk.api.session.room.timeline.isReply -import me.gujun.android.span.span import javax.inject.Inject class DisplayableEventFormatter @Inject constructor( @@ -51,16 +53,16 @@ class DisplayableEventFormatter @Inject constructor( val senderName = timelineEvent.senderInfo.disambiguatedDisplayName when (timelineEvent.root.getClearType()) { - EventType.STICKER -> { + EventType.STICKER -> { return simpleFormat(senderName, stringProvider.getString(R.string.send_a_sticker), appendAuthor) } - EventType.REACTION -> { + EventType.REACTION -> { timelineEvent.root.getClearContent().toModel()?.relatesTo?.let { - val emojiSpanned = emojiCompatWrapper.safeEmojiSpanify(it.key) + val emojiSpanned = emojiCompatWrapper.safeEmojiSpanify(stringProvider.getString(R.string.sent_a_reaction, it.key)) return simpleFormat(senderName, emojiSpanned, appendAuthor) } } - EventType.MESSAGE -> { + EventType.MESSAGE -> { timelineEvent.getLastMessageContent()?.let { messageContent -> when (messageContent.msgType) { MessageType.MSGTYPE_VERIFICATION_REQUEST -> { @@ -88,13 +90,45 @@ class DisplayableEventFormatter @Inject constructor( simpleFormat(senderName, messageContent.body, appendAuthor) } } + MessageType.MSGTYPE_RESPONSE -> { + // do not show that? + return span { } + } + MessageType.MSGTYPE_OPTIONS -> { + return when (messageContent) { + is MessageOptionsContent -> { + val previewText = if (messageContent.optionType == OPTION_TYPE_BUTTONS) { + stringProvider.getString(R.string.sent_a_bot_buttons) + } else { + stringProvider.getString(R.string.sent_a_poll) + } + simpleFormat(senderName, previewText, appendAuthor) + } + else -> { + span { } + } + } + } else -> { return simpleFormat(senderName, messageContent.body, appendAuthor) } } } } - else -> { + EventType.KEY_VERIFICATION_CANCEL, + EventType.KEY_VERIFICATION_DONE -> { + // cancel and done can appear in timeline, so should have representation + return simpleFormat(senderName, stringProvider.getString(R.string.sent_verification_conclusion), appendAuthor) + } + EventType.KEY_VERIFICATION_START, + EventType.KEY_VERIFICATION_ACCEPT, + EventType.KEY_VERIFICATION_MAC, + EventType.KEY_VERIFICATION_KEY, + EventType.KEY_VERIFICATION_READY, + EventType.CALL_CANDIDATES -> { + return span { } + } + else -> { return span { text = noticeEventFormatter.format(timelineEvent) ?: "" textStyle = "italic" diff --git a/vector/src/main/res/values/strings.xml b/vector/src/main/res/values/strings.xml index 06e9530ad5..267079fdc6 100644 --- a/vector/src/main/res/values/strings.xml +++ b/vector/src/main/res/values/strings.xml @@ -2067,6 +2067,10 @@ Audio File Sticker + Poll + Bot Buttons + Reacted with: %s + Verification Conclusion Waiting… %s cancelled