Merge pull request #3218 from nextcloud/feature/3176/markdownFlag

Implement respecting the markdown rendering flag
This commit is contained in:
Andy Scherzinger 2023-07-28 11:25:19 +02:00 committed by GitHub
commit 87cff6fc80
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 38 additions and 25 deletions

View File

@ -195,9 +195,9 @@ class IncomingLinkPreviewMessageViewHolder(incomingView: View, payload: Any) :
binding.messageQuote.quotedMessageAuthor.text = parentChatMessage.actorDisplayName
?: context.getText(R.string.nc_nick_guest)
binding.messageQuote.quotedMessage.text = messageUtils
.enrichChatMessageText(
.enrichChatReplyMessageText(
binding.messageQuote.quotedMessage.context,
parentChatMessage.text,
parentChatMessage,
binding.messageQuote.quotedMessage.context.resources.getColor(
R.color.nc_incoming_text_default
)

View File

@ -180,9 +180,9 @@ class IncomingLocationMessageViewHolder(incomingView: View, payload: Any) :
binding.messageQuote.quotedMessageAuthor.text = parentChatMessage.actorDisplayName
?: context!!.getText(R.string.nc_nick_guest)
binding.messageQuote.quotedMessage.text = messageUtils
.enrichChatMessageText(
.enrichChatReplyMessageText(
binding.messageQuote.quotedMessage.context,
parentChatMessage.text,
parentChatMessage,
binding.messageQuote.quotedMessage.context.resources.getColor(
R.color.nc_incoming_text_default
)

View File

@ -203,9 +203,9 @@ class IncomingPollMessageViewHolder(incomingView: View, payload: Any) :
binding.messageQuote.quotedMessageAuthor.text = parentChatMessage.actorDisplayName
?: context.getText(R.string.nc_nick_guest)
binding.messageQuote.quotedMessage.text = messageUtils
.enrichChatMessageText(
.enrichChatReplyMessageText(
binding.messageQuote.quotedMessage.context,
parentChatMessage.text,
parentChatMessage,
binding.messageQuote.quotedMessage.context.resources.getColor(
R.color.nc_incoming_text_default
)

View File

@ -44,7 +44,6 @@ import com.nextcloud.talk.models.json.chat.ChatMessage
import com.nextcloud.talk.ui.theme.ViewThemeUtils
import com.nextcloud.talk.utils.ApiUtils
import com.nextcloud.talk.utils.DateUtils
import com.nextcloud.talk.utils.DisplayUtils
import com.nextcloud.talk.utils.TextMatchers
import com.nextcloud.talk.utils.message.MessageUtils
import com.nextcloud.talk.utils.preferences.AppPreferences
@ -202,10 +201,11 @@ class IncomingTextMessageViewHolder(itemView: View, payload: Any) :
} else {
parentChatMessage.actorDisplayName
}
binding.messageQuote.quotedMessage.text = messageUtils
.enrichChatMessageText(
.enrichChatReplyMessageText(
binding.messageQuote.quotedMessage.context,
DisplayUtils.ellipsize(parentChatMessage.text, MAX_REPLY_LENGTH),
parentChatMessage,
binding.messageQuote.quotedMessage.context.resources.getColor(R.color.nc_incoming_text_default)
)
@ -240,6 +240,5 @@ class IncomingTextMessageViewHolder(itemView: View, payload: Any) :
companion object {
const val TEXT_SIZE_MULTIPLIER = 2.5
const val MAX_REPLY_LENGTH = 250
}
}

View File

@ -296,9 +296,9 @@ class IncomingVoiceMessageViewHolder(incomingView: View, payload: Any) :
binding.messageQuote.quotedMessageAuthor.text = parentChatMessage.actorDisplayName
?: context!!.getText(R.string.nc_nick_guest)
binding.messageQuote.quotedMessage.text = messageUtils
.enrichChatMessageText(
.enrichChatReplyMessageText(
binding.messageQuote.quotedMessage.context,
parentChatMessage.text,
parentChatMessage,
binding.messageQuote.quotedMessage.context.resources.getColor(
R.color.nc_incoming_text_default
)

View File

@ -173,9 +173,9 @@ class OutcomingLinkPreviewMessageViewHolder(outcomingView: View, payload: Any) :
binding.messageQuote.quotedMessageAuthor.text = parentChatMessage.actorDisplayName
?: context.getText(R.string.nc_nick_guest)
binding.messageQuote.quotedMessage.text = messageUtils
.enrichChatMessageText(
.enrichChatReplyMessageText(
binding.messageQuote.quotedMessage.context,
parentChatMessage.text,
parentChatMessage,
viewThemeUtils.getScheme(binding.messageQuote.quotedMessage.context).onSurfaceVariant
)
viewThemeUtils.talk.colorOutgoingQuoteText(binding.messageQuote.quotedMessage)

View File

@ -226,9 +226,9 @@ class OutcomingLocationMessageViewHolder(incomingView: View) :
binding.messageQuote.quotedMessageAuthor.text = parentChatMessage.actorDisplayName
?: context!!.getText(R.string.nc_nick_guest)
binding.messageQuote.quotedMessage.text = messageUtils
.enrichChatMessageText(
.enrichChatReplyMessageText(
binding.messageQuote.quotedMessage.context,
parentChatMessage.text,
parentChatMessage,
viewThemeUtils.getScheme(binding.messageQuote.quotedMessage.context).onSurfaceVariant
)
viewThemeUtils.talk.colorOutgoingQuoteText(binding.messageQuote.quotedMessage)

View File

@ -188,9 +188,9 @@ class OutcomingPollMessageViewHolder(outcomingView: View, payload: Any) :
binding.messageQuote.quotedMessageAuthor.text = parentChatMessage.actorDisplayName
?: context.getText(R.string.nc_nick_guest)
binding.messageQuote.quotedMessage.text = messageUtils
.enrichChatMessageText(
.enrichChatReplyMessageText(
binding.messageQuote.quotedMessage.context,
parentChatMessage.text,
parentChatMessage,
viewThemeUtils.getScheme(binding.messageQuote.quotedMessage.context).onSurfaceVariant
)
viewThemeUtils.talk.colorOutgoingQuoteText(binding.messageQuote.quotedMessage)

View File

@ -41,7 +41,6 @@ import com.nextcloud.talk.models.json.chat.ReadStatus
import com.nextcloud.talk.ui.theme.ViewThemeUtils
import com.nextcloud.talk.utils.ApiUtils
import com.nextcloud.talk.utils.DateUtils
import com.nextcloud.talk.utils.DisplayUtils
import com.nextcloud.talk.utils.TextMatchers
import com.nextcloud.talk.utils.message.MessageUtils
import com.stfalcon.chatkit.messages.MessageHolders.OutcomingTextMessageViewHolder
@ -175,9 +174,9 @@ class OutcomingTextMessageViewHolder(itemView: View) : OutcomingTextMessageViewH
binding.messageQuote.quotedMessageAuthor.text = parentChatMessage.actorDisplayName
?: context!!.getText(R.string.nc_nick_guest)
binding.messageQuote.quotedMessage.text = messageUtils
.enrichChatMessageText(
.enrichChatReplyMessageText(
binding.messageQuote.quotedMessage.context,
DisplayUtils.ellipsize(parentChatMessage.text, MAX_REPLY_LENGTH),
parentChatMessage,
textColor
)
@ -201,6 +200,5 @@ class OutcomingTextMessageViewHolder(itemView: View) : OutcomingTextMessageViewH
companion object {
const val TEXT_SIZE_MULTIPLIER = 2.5
const val MAX_REPLY_LENGTH = 250
}
}

View File

@ -283,9 +283,9 @@ class OutcomingVoiceMessageViewHolder(outcomingView: View) :
binding.messageQuote.quotedMessageAuthor.text = parentChatMessage.actorDisplayName
?: context!!.getText(R.string.nc_nick_guest)
binding.messageQuote.quotedMessage.text = messageUtils
.enrichChatMessageText(
.enrichChatReplyMessageText(
binding.messageQuote.quotedMessage.context,
parentChatMessage.text,
parentChatMessage,
viewThemeUtils.getScheme(binding.messageQuote.quotedMessage.context).onSurfaceVariant
)
viewThemeUtils.talk.colorOutgoingQuoteText(binding.messageQuote.quotedMessage)

View File

@ -119,6 +119,9 @@ data class ChatMessage(
@JsonField(name = ["expirationTimestamp"])
var expirationTimestamp: Int = 0,
@JsonField(name = ["markdown"])
var renderMarkdown: Boolean? = null,
var isDownloadingVoiceMessage: Boolean = false,
var resetVoiceMessage: Boolean = false,

View File

@ -23,6 +23,7 @@ package com.nextcloud.talk.utils.message
import android.content.Context
import android.content.Intent
import android.net.Uri
import android.text.SpannableString
import android.text.Spanned
import android.util.Log
import android.view.View
@ -39,16 +40,27 @@ import io.noties.markwon.ext.tasklist.TaskListDrawable
import io.noties.markwon.ext.tasklist.TaskListPlugin
class MessageUtils(val context: Context) {
fun enrichChatReplyMessageText(context: Context, message: ChatMessage, textColor: Int): Spanned? {
return if (message.message == null) {
null
} else if (message.renderMarkdown == false) {
SpannableString(DisplayUtils.ellipsize(message.message!!, MAX_REPLY_LENGTH))
} else {
enrichChatMessageText(context, DisplayUtils.ellipsize(message.message!!, MAX_REPLY_LENGTH), textColor)
}
}
fun enrichChatMessageText(context: Context, message: ChatMessage, textColor: Int): Spanned? {
return if (message.message == null) {
null
} else if (message.renderMarkdown == false) {
SpannableString(message.message)
} else {
enrichChatMessageText(context, message.message!!, textColor)
}
}
fun enrichChatMessageText(context: Context, message: String, textColor: Int): Spanned {
private fun enrichChatMessageText(context: Context, message: String, textColor: Int): Spanned {
return getRenderedMarkdownText(context, message, textColor)
}
@ -139,5 +151,6 @@ class MessageUtils(val context: Context) {
companion object {
private const val TAG = "MessageUtils"
const val MAX_REPLY_LENGTH = 250
}
}