diff --git a/dependencies.gradle b/dependencies.gradle index cc1abb3cf6..28e389583a 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -101,7 +101,7 @@ ext.libs = [ ], element : [ 'opusencoder' : "io.element.android:opusencoder:1.1.0", - 'wysiwyg' : "io.element.android:wysiwyg:2.14.1" + 'wysiwyg' : "io.element.android:wysiwyg:2.22.0" ], squareup : [ 'moshi' : "com.squareup.moshi:moshi:$moshi", diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/AutoCompleter.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/AutoCompleter.kt index 568f4cf9e7..daf401efc3 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/AutoCompleter.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/AutoCompleter.kt @@ -232,6 +232,7 @@ class AutoCompleter @AssistedInject constructor( private fun insertMatrixItemIntoRichTextEditor(editorEditText: EditorEditText, matrixItem: MatrixItem) { if (matrixItem is MatrixItem.EveryoneInRoomItem) { editorEditText.replaceTextSuggestion(matrixItem.displayName) + // Note: not using editorEditText.insertAtRoomMentionAtSuggestion() since we want to keep the existing look and feel of the mention for @room. return } @@ -253,7 +254,7 @@ class AutoCompleter @AssistedInject constructor( matrixItem.getBestName() } - editorEditText.setLinkSuggestion(url = permalink, text = linkText) + editorEditText.insertMentionAtSuggestion(url = permalink, text = linkText) } private fun insertMatrixItemIntoEditable(editText: EditText, editable: Editable, firstChar: Char, matrixItem: MatrixItem) { diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/composer/RichTextComposerLayout.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/composer/RichTextComposerLayout.kt index 1b999b65c8..b0923885e8 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/composer/RichTextComposerLayout.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/composer/RichTextComposerLayout.kt @@ -105,10 +105,10 @@ internal class RichTextComposerLayout @JvmOverloads constructor( override val attachmentButton: ImageButton get() = views.attachmentButton - val richTextEditText: EditText get() = - views.richTextComposerEditText - val plainTextEditText: EditText get() = - views.plainTextComposerEditText + val richTextEditText: EditText + get() = views.richTextComposerEditText + val plainTextEditText: EditText + get() = views.plainTextComposerEditText var pillDisplayHandler: PillDisplayHandler? = null @@ -237,14 +237,16 @@ internal class RichTextComposerLayout @JvmOverloads constructor( views.composerEditTextOuterBorder.background = borderShapeDrawable setupRichTextMenu() - views.richTextComposerEditText.mentionDisplayHandler = object : MentionDisplayHandler { - override fun resolveMentionDisplay(text: String, url: String): TextDisplay = - pillDisplayHandler?.resolveMentionDisplay(text, url) ?: TextDisplay.Plain - - override fun resolveAtRoomMentionDisplay(): TextDisplay = - pillDisplayHandler?.resolveAtRoomMentionDisplay() ?: TextDisplay.Plain - } + views.richTextComposerEditText.updateStyle( + styleConfig = views.richTextComposerEditText.styleConfig, + mentionDisplayHandler = object : MentionDisplayHandler { + override fun resolveMentionDisplay(text: String, url: String): TextDisplay = + pillDisplayHandler?.resolveMentionDisplay(text, url) ?: TextDisplay.Plain + override fun resolveAtRoomMentionDisplay(): TextDisplay = + pillDisplayHandler?.resolveAtRoomMentionDisplay() ?: TextDisplay.Plain + } + ) updateTextFieldBorder(isFullScreen) } diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageTextItem.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageTextItem.kt index 6ffaa6d896..4cfeef0bcf 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageTextItem.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageTextItem.kt @@ -35,6 +35,7 @@ import im.vector.app.features.home.room.detail.timeline.url.PreviewUrlUiState import im.vector.app.features.home.room.detail.timeline.url.PreviewUrlView import im.vector.app.features.media.ImageContentRenderer import im.vector.lib.core.utils.epoxy.charsequence.EpoxyCharSequence +import io.element.android.wysiwyg.EditorStyledTextView import io.noties.markwon.MarkwonPlugin import org.matrix.android.sdk.api.extensions.orFalse @@ -138,13 +139,19 @@ abstract class MessageTextItem : AbsMessageItem() { val previewUrlView by bind(R.id.messageUrlPreview) private val richMessageStub by bind(R.id.richMessageTextViewStub) private val plainMessageStub by bind(R.id.plainMessageTextViewStub) - var richMessageView: AppCompatTextView? = null + var richMessageView: EditorStyledTextView? = null private set var plainMessageView: AppCompatTextView? = null private set fun requireRichMessageView(): AppCompatTextView { - val view = richMessageView ?: richMessageStub.inflate().findViewById(R.id.messageTextView) + val view = richMessageView ?: richMessageStub.inflate().findViewById(R.id.messageTextView).also { + // Required to ensure that `inlineCodeBgHelper` and `codeBlockBgHelper` are initialized + it.updateStyle( + styleConfig = it.styleConfig, + mentionDisplayHandler = null, + ) + } richMessageView = view return view }