From 05dd587fa8927da0c2990bbbb7711d4b78ec4bdf Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 5 Feb 2020 12:44:31 +0100 Subject: [PATCH] Move FORMAT_MATRIX_HTML to a proper object and so fix a wrong usage issue --- .../room/model/message/MessageFormat.kt | 21 +++++++++++++++++++ .../session/room/model/message/MessageType.kt | 2 -- .../room/send/LocalEchoEventFactory.kt | 7 ++++--- .../internal/session/room/send/TextContent.kt | 3 ++- .../home/room/detail/RoomDetailFragment.kt | 4 ++-- .../action/MessageActionsViewModel.kt | 4 +--- 6 files changed, 30 insertions(+), 11 deletions(-) create mode 100644 matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/room/model/message/MessageFormat.kt diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/room/model/message/MessageFormat.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/room/model/message/MessageFormat.kt new file mode 100644 index 0000000000..3effa9a630 --- /dev/null +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/room/model/message/MessageFormat.kt @@ -0,0 +1,21 @@ +/* + * Copyright 2020 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.matrix.android.api.session.room.model.message + +object MessageFormat { + const val FORMAT_MATRIX_HTML = "org.matrix.custom.html" +} diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/room/model/message/MessageType.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/room/model/message/MessageType.kt index d4e6d5ea71..2707283325 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/room/model/message/MessageType.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/api/session/room/model/message/MessageType.kt @@ -17,7 +17,6 @@ package im.vector.matrix.android.api.session.room.model.message object MessageType { - const val MSGTYPE_TEXT = "m.text" const val MSGTYPE_EMOTE = "m.emote" const val MSGTYPE_NOTICE = "m.notice" @@ -27,7 +26,6 @@ object MessageType { const val MSGTYPE_LOCATION = "m.location" const val MSGTYPE_FILE = "m.file" const val MSGTYPE_VERIFICATION_REQUEST = "m.key.verification.request" - const val FORMAT_MATRIX_HTML = "org.matrix.custom.html" // Add, in local, a fake message type in order to StickerMessage can inherit Message class // Because sticker isn't a message type but a event type without msgtype field const val MSGTYPE_STICKER_LOCAL = "org.matrix.android.sdk.sticker" diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/send/LocalEchoEventFactory.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/send/LocalEchoEventFactory.kt index 5d7a7c085f..bfa1d380ae 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/send/LocalEchoEventFactory.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/send/LocalEchoEventFactory.kt @@ -34,6 +34,7 @@ import im.vector.matrix.android.api.session.room.model.message.ImageInfo import im.vector.matrix.android.api.session.room.model.message.MessageAudioContent import im.vector.matrix.android.api.session.room.model.message.MessageContent import im.vector.matrix.android.api.session.room.model.message.MessageFileContent +import im.vector.matrix.android.api.session.room.model.message.MessageFormat import im.vector.matrix.android.api.session.room.model.message.MessageImageContent import im.vector.matrix.android.api.session.room.model.message.MessageTextContent import im.vector.matrix.android.api.session.room.model.message.MessageType @@ -163,7 +164,7 @@ internal class LocalEchoEventFactory @Inject constructor( relatesTo = RelationDefaultContent(RelationType.REPLACE, eventReplaced.root.eventId), newContent = MessageTextContent( msgType = msgType, - format = MessageType.FORMAT_MATRIX_HTML, + format = MessageFormat.FORMAT_MATRIX_HTML, body = replyFallback, formattedBody = replyFormatted ) @@ -351,7 +352,7 @@ internal class LocalEchoEventFactory @Inject constructor( val eventId = eventReplied.root.eventId ?: return null val content = MessageTextContent( msgType = MessageType.MSGTYPE_TEXT, - format = MessageType.FORMAT_MATRIX_HTML, + format = MessageFormat.FORMAT_MATRIX_HTML, body = replyFallback, formattedBody = replyFormatted, relatesTo = RelationDefaultContent(null, null, ReplyToContent(eventId)) @@ -390,7 +391,7 @@ internal class LocalEchoEventFactory @Inject constructor( MessageType.MSGTYPE_NOTICE -> { var formattedText: String? = null if (content is MessageTextContent) { - if (content.format == MessageType.FORMAT_MATRIX_HTML) { + if (content.format == MessageFormat.FORMAT_MATRIX_HTML) { formattedText = content.formattedBody } } diff --git a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/send/TextContent.kt b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/send/TextContent.kt index ae973b17f5..5058c1991f 100644 --- a/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/send/TextContent.kt +++ b/matrix-sdk-android/src/main/java/im/vector/matrix/android/internal/session/room/send/TextContent.kt @@ -16,6 +16,7 @@ package im.vector.matrix.android.internal.session.room.send +import im.vector.matrix.android.api.session.room.model.message.MessageFormat import im.vector.matrix.android.api.session.room.model.message.MessageTextContent import im.vector.matrix.android.api.session.room.model.message.MessageType import im.vector.matrix.android.api.util.ContentUtils.extractUsefulTextFromHtmlReply @@ -34,7 +35,7 @@ data class TextContent( fun TextContent.toMessageTextContent(msgType: String = MessageType.MSGTYPE_TEXT): MessageTextContent { return MessageTextContent( msgType = msgType, - format = MessageType.FORMAT_MATRIX_HTML.takeIf { formattedText != null }, + format = MessageFormat.FORMAT_MATRIX_HTML.takeIf { formattedText != null }, body = text, formattedBody = formattedText ) diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt index e09270b52b..8645607dae 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailFragment.kt @@ -72,9 +72,9 @@ import im.vector.matrix.android.api.session.room.model.Membership import im.vector.matrix.android.api.session.room.model.message.MessageAudioContent import im.vector.matrix.android.api.session.room.model.message.MessageContent import im.vector.matrix.android.api.session.room.model.message.MessageFileContent +import im.vector.matrix.android.api.session.room.model.message.MessageFormat import im.vector.matrix.android.api.session.room.model.message.MessageImageInfoContent import im.vector.matrix.android.api.session.room.model.message.MessageTextContent -import im.vector.matrix.android.api.session.room.model.message.MessageType import im.vector.matrix.android.api.session.room.model.message.MessageVerificationRequestContent import im.vector.matrix.android.api.session.room.model.message.MessageVideoContent import im.vector.matrix.android.api.session.room.send.SendState @@ -448,7 +448,7 @@ class RoomDetailFragment @Inject constructor( val messageContent: MessageContent? = event.getLastMessageContent() val nonFormattedBody = messageContent?.body ?: "" var formattedBody: CharSequence? = null - if (messageContent is MessageTextContent && messageContent.format == MessageType.FORMAT_MATRIX_HTML) { + if (messageContent is MessageTextContent && messageContent.format == MessageFormat.FORMAT_MATRIX_HTML) { val parser = Parser.builder().build() val document = parser.parse(messageContent.formattedBody ?: messageContent.body) formattedBody = eventHtmlRenderer.render(document) diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsViewModel.kt index 8e175721ab..dcaddd3c08 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsViewModel.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/action/MessageActionsViewModel.kt @@ -172,7 +172,7 @@ class MessageActionsViewModel @AssistedInject constructor(@Assisted EventType.MESSAGE, EventType.STICKER -> { val messageContent: MessageContent? = timelineEvent.getLastMessageContent() - if (messageContent is MessageTextContent && messageContent.format == MessageType.FORMAT_MATRIX_HTML) { + if (messageContent is MessageTextContent && messageContent.format == MessageFormat.FORMAT_MATRIX_HTML) { val html = messageContent.formattedBody ?.takeIf { it.isNotBlank() } ?.let { htmlCompressor.compress(it) } @@ -315,7 +315,6 @@ class MessageActionsViewModel @AssistedInject constructor(@Assisted MessageType.MSGTYPE_TEXT, MessageType.MSGTYPE_NOTICE, MessageType.MSGTYPE_EMOTE, - MessageType.FORMAT_MATRIX_HTML, MessageType.MSGTYPE_LOCATION -> { true } @@ -357,7 +356,6 @@ class MessageActionsViewModel @AssistedInject constructor(@Assisted MessageType.MSGTYPE_TEXT, MessageType.MSGTYPE_NOTICE, MessageType.MSGTYPE_EMOTE, - MessageType.FORMAT_MATRIX_HTML, MessageType.MSGTYPE_LOCATION -> true else -> false }