mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-20 12:09:45 +01:00
Merge pull request #3218 from nextcloud/feature/3176/markdownFlag
Implement respecting the markdown rendering flag
This commit is contained in:
commit
87cff6fc80
@ -195,9 +195,9 @@ class IncomingLinkPreviewMessageViewHolder(incomingView: View, payload: Any) :
|
|||||||
binding.messageQuote.quotedMessageAuthor.text = parentChatMessage.actorDisplayName
|
binding.messageQuote.quotedMessageAuthor.text = parentChatMessage.actorDisplayName
|
||||||
?: context.getText(R.string.nc_nick_guest)
|
?: context.getText(R.string.nc_nick_guest)
|
||||||
binding.messageQuote.quotedMessage.text = messageUtils
|
binding.messageQuote.quotedMessage.text = messageUtils
|
||||||
.enrichChatMessageText(
|
.enrichChatReplyMessageText(
|
||||||
binding.messageQuote.quotedMessage.context,
|
binding.messageQuote.quotedMessage.context,
|
||||||
parentChatMessage.text,
|
parentChatMessage,
|
||||||
binding.messageQuote.quotedMessage.context.resources.getColor(
|
binding.messageQuote.quotedMessage.context.resources.getColor(
|
||||||
R.color.nc_incoming_text_default
|
R.color.nc_incoming_text_default
|
||||||
)
|
)
|
||||||
|
@ -180,9 +180,9 @@ class IncomingLocationMessageViewHolder(incomingView: View, payload: Any) :
|
|||||||
binding.messageQuote.quotedMessageAuthor.text = parentChatMessage.actorDisplayName
|
binding.messageQuote.quotedMessageAuthor.text = parentChatMessage.actorDisplayName
|
||||||
?: context!!.getText(R.string.nc_nick_guest)
|
?: context!!.getText(R.string.nc_nick_guest)
|
||||||
binding.messageQuote.quotedMessage.text = messageUtils
|
binding.messageQuote.quotedMessage.text = messageUtils
|
||||||
.enrichChatMessageText(
|
.enrichChatReplyMessageText(
|
||||||
binding.messageQuote.quotedMessage.context,
|
binding.messageQuote.quotedMessage.context,
|
||||||
parentChatMessage.text,
|
parentChatMessage,
|
||||||
binding.messageQuote.quotedMessage.context.resources.getColor(
|
binding.messageQuote.quotedMessage.context.resources.getColor(
|
||||||
R.color.nc_incoming_text_default
|
R.color.nc_incoming_text_default
|
||||||
)
|
)
|
||||||
|
@ -203,9 +203,9 @@ class IncomingPollMessageViewHolder(incomingView: View, payload: Any) :
|
|||||||
binding.messageQuote.quotedMessageAuthor.text = parentChatMessage.actorDisplayName
|
binding.messageQuote.quotedMessageAuthor.text = parentChatMessage.actorDisplayName
|
||||||
?: context.getText(R.string.nc_nick_guest)
|
?: context.getText(R.string.nc_nick_guest)
|
||||||
binding.messageQuote.quotedMessage.text = messageUtils
|
binding.messageQuote.quotedMessage.text = messageUtils
|
||||||
.enrichChatMessageText(
|
.enrichChatReplyMessageText(
|
||||||
binding.messageQuote.quotedMessage.context,
|
binding.messageQuote.quotedMessage.context,
|
||||||
parentChatMessage.text,
|
parentChatMessage,
|
||||||
binding.messageQuote.quotedMessage.context.resources.getColor(
|
binding.messageQuote.quotedMessage.context.resources.getColor(
|
||||||
R.color.nc_incoming_text_default
|
R.color.nc_incoming_text_default
|
||||||
)
|
)
|
||||||
|
@ -44,7 +44,6 @@ import com.nextcloud.talk.models.json.chat.ChatMessage
|
|||||||
import com.nextcloud.talk.ui.theme.ViewThemeUtils
|
import com.nextcloud.talk.ui.theme.ViewThemeUtils
|
||||||
import com.nextcloud.talk.utils.ApiUtils
|
import com.nextcloud.talk.utils.ApiUtils
|
||||||
import com.nextcloud.talk.utils.DateUtils
|
import com.nextcloud.talk.utils.DateUtils
|
||||||
import com.nextcloud.talk.utils.DisplayUtils
|
|
||||||
import com.nextcloud.talk.utils.TextMatchers
|
import com.nextcloud.talk.utils.TextMatchers
|
||||||
import com.nextcloud.talk.utils.message.MessageUtils
|
import com.nextcloud.talk.utils.message.MessageUtils
|
||||||
import com.nextcloud.talk.utils.preferences.AppPreferences
|
import com.nextcloud.talk.utils.preferences.AppPreferences
|
||||||
@ -202,10 +201,11 @@ class IncomingTextMessageViewHolder(itemView: View, payload: Any) :
|
|||||||
} else {
|
} else {
|
||||||
parentChatMessage.actorDisplayName
|
parentChatMessage.actorDisplayName
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.messageQuote.quotedMessage.text = messageUtils
|
binding.messageQuote.quotedMessage.text = messageUtils
|
||||||
.enrichChatMessageText(
|
.enrichChatReplyMessageText(
|
||||||
binding.messageQuote.quotedMessage.context,
|
binding.messageQuote.quotedMessage.context,
|
||||||
DisplayUtils.ellipsize(parentChatMessage.text, MAX_REPLY_LENGTH),
|
parentChatMessage,
|
||||||
binding.messageQuote.quotedMessage.context.resources.getColor(R.color.nc_incoming_text_default)
|
binding.messageQuote.quotedMessage.context.resources.getColor(R.color.nc_incoming_text_default)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -240,6 +240,5 @@ class IncomingTextMessageViewHolder(itemView: View, payload: Any) :
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val TEXT_SIZE_MULTIPLIER = 2.5
|
const val TEXT_SIZE_MULTIPLIER = 2.5
|
||||||
const val MAX_REPLY_LENGTH = 250
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -296,9 +296,9 @@ class IncomingVoiceMessageViewHolder(incomingView: View, payload: Any) :
|
|||||||
binding.messageQuote.quotedMessageAuthor.text = parentChatMessage.actorDisplayName
|
binding.messageQuote.quotedMessageAuthor.text = parentChatMessage.actorDisplayName
|
||||||
?: context!!.getText(R.string.nc_nick_guest)
|
?: context!!.getText(R.string.nc_nick_guest)
|
||||||
binding.messageQuote.quotedMessage.text = messageUtils
|
binding.messageQuote.quotedMessage.text = messageUtils
|
||||||
.enrichChatMessageText(
|
.enrichChatReplyMessageText(
|
||||||
binding.messageQuote.quotedMessage.context,
|
binding.messageQuote.quotedMessage.context,
|
||||||
parentChatMessage.text,
|
parentChatMessage,
|
||||||
binding.messageQuote.quotedMessage.context.resources.getColor(
|
binding.messageQuote.quotedMessage.context.resources.getColor(
|
||||||
R.color.nc_incoming_text_default
|
R.color.nc_incoming_text_default
|
||||||
)
|
)
|
||||||
|
@ -173,9 +173,9 @@ class OutcomingLinkPreviewMessageViewHolder(outcomingView: View, payload: Any) :
|
|||||||
binding.messageQuote.quotedMessageAuthor.text = parentChatMessage.actorDisplayName
|
binding.messageQuote.quotedMessageAuthor.text = parentChatMessage.actorDisplayName
|
||||||
?: context.getText(R.string.nc_nick_guest)
|
?: context.getText(R.string.nc_nick_guest)
|
||||||
binding.messageQuote.quotedMessage.text = messageUtils
|
binding.messageQuote.quotedMessage.text = messageUtils
|
||||||
.enrichChatMessageText(
|
.enrichChatReplyMessageText(
|
||||||
binding.messageQuote.quotedMessage.context,
|
binding.messageQuote.quotedMessage.context,
|
||||||
parentChatMessage.text,
|
parentChatMessage,
|
||||||
viewThemeUtils.getScheme(binding.messageQuote.quotedMessage.context).onSurfaceVariant
|
viewThemeUtils.getScheme(binding.messageQuote.quotedMessage.context).onSurfaceVariant
|
||||||
)
|
)
|
||||||
viewThemeUtils.talk.colorOutgoingQuoteText(binding.messageQuote.quotedMessage)
|
viewThemeUtils.talk.colorOutgoingQuoteText(binding.messageQuote.quotedMessage)
|
||||||
|
@ -226,9 +226,9 @@ class OutcomingLocationMessageViewHolder(incomingView: View) :
|
|||||||
binding.messageQuote.quotedMessageAuthor.text = parentChatMessage.actorDisplayName
|
binding.messageQuote.quotedMessageAuthor.text = parentChatMessage.actorDisplayName
|
||||||
?: context!!.getText(R.string.nc_nick_guest)
|
?: context!!.getText(R.string.nc_nick_guest)
|
||||||
binding.messageQuote.quotedMessage.text = messageUtils
|
binding.messageQuote.quotedMessage.text = messageUtils
|
||||||
.enrichChatMessageText(
|
.enrichChatReplyMessageText(
|
||||||
binding.messageQuote.quotedMessage.context,
|
binding.messageQuote.quotedMessage.context,
|
||||||
parentChatMessage.text,
|
parentChatMessage,
|
||||||
viewThemeUtils.getScheme(binding.messageQuote.quotedMessage.context).onSurfaceVariant
|
viewThemeUtils.getScheme(binding.messageQuote.quotedMessage.context).onSurfaceVariant
|
||||||
)
|
)
|
||||||
viewThemeUtils.talk.colorOutgoingQuoteText(binding.messageQuote.quotedMessage)
|
viewThemeUtils.talk.colorOutgoingQuoteText(binding.messageQuote.quotedMessage)
|
||||||
|
@ -188,9 +188,9 @@ class OutcomingPollMessageViewHolder(outcomingView: View, payload: Any) :
|
|||||||
binding.messageQuote.quotedMessageAuthor.text = parentChatMessage.actorDisplayName
|
binding.messageQuote.quotedMessageAuthor.text = parentChatMessage.actorDisplayName
|
||||||
?: context.getText(R.string.nc_nick_guest)
|
?: context.getText(R.string.nc_nick_guest)
|
||||||
binding.messageQuote.quotedMessage.text = messageUtils
|
binding.messageQuote.quotedMessage.text = messageUtils
|
||||||
.enrichChatMessageText(
|
.enrichChatReplyMessageText(
|
||||||
binding.messageQuote.quotedMessage.context,
|
binding.messageQuote.quotedMessage.context,
|
||||||
parentChatMessage.text,
|
parentChatMessage,
|
||||||
viewThemeUtils.getScheme(binding.messageQuote.quotedMessage.context).onSurfaceVariant
|
viewThemeUtils.getScheme(binding.messageQuote.quotedMessage.context).onSurfaceVariant
|
||||||
)
|
)
|
||||||
viewThemeUtils.talk.colorOutgoingQuoteText(binding.messageQuote.quotedMessage)
|
viewThemeUtils.talk.colorOutgoingQuoteText(binding.messageQuote.quotedMessage)
|
||||||
|
@ -41,7 +41,6 @@ import com.nextcloud.talk.models.json.chat.ReadStatus
|
|||||||
import com.nextcloud.talk.ui.theme.ViewThemeUtils
|
import com.nextcloud.talk.ui.theme.ViewThemeUtils
|
||||||
import com.nextcloud.talk.utils.ApiUtils
|
import com.nextcloud.talk.utils.ApiUtils
|
||||||
import com.nextcloud.talk.utils.DateUtils
|
import com.nextcloud.talk.utils.DateUtils
|
||||||
import com.nextcloud.talk.utils.DisplayUtils
|
|
||||||
import com.nextcloud.talk.utils.TextMatchers
|
import com.nextcloud.talk.utils.TextMatchers
|
||||||
import com.nextcloud.talk.utils.message.MessageUtils
|
import com.nextcloud.talk.utils.message.MessageUtils
|
||||||
import com.stfalcon.chatkit.messages.MessageHolders.OutcomingTextMessageViewHolder
|
import com.stfalcon.chatkit.messages.MessageHolders.OutcomingTextMessageViewHolder
|
||||||
@ -175,9 +174,9 @@ class OutcomingTextMessageViewHolder(itemView: View) : OutcomingTextMessageViewH
|
|||||||
binding.messageQuote.quotedMessageAuthor.text = parentChatMessage.actorDisplayName
|
binding.messageQuote.quotedMessageAuthor.text = parentChatMessage.actorDisplayName
|
||||||
?: context!!.getText(R.string.nc_nick_guest)
|
?: context!!.getText(R.string.nc_nick_guest)
|
||||||
binding.messageQuote.quotedMessage.text = messageUtils
|
binding.messageQuote.quotedMessage.text = messageUtils
|
||||||
.enrichChatMessageText(
|
.enrichChatReplyMessageText(
|
||||||
binding.messageQuote.quotedMessage.context,
|
binding.messageQuote.quotedMessage.context,
|
||||||
DisplayUtils.ellipsize(parentChatMessage.text, MAX_REPLY_LENGTH),
|
parentChatMessage,
|
||||||
textColor
|
textColor
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -201,6 +200,5 @@ class OutcomingTextMessageViewHolder(itemView: View) : OutcomingTextMessageViewH
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val TEXT_SIZE_MULTIPLIER = 2.5
|
const val TEXT_SIZE_MULTIPLIER = 2.5
|
||||||
const val MAX_REPLY_LENGTH = 250
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -283,9 +283,9 @@ class OutcomingVoiceMessageViewHolder(outcomingView: View) :
|
|||||||
binding.messageQuote.quotedMessageAuthor.text = parentChatMessage.actorDisplayName
|
binding.messageQuote.quotedMessageAuthor.text = parentChatMessage.actorDisplayName
|
||||||
?: context!!.getText(R.string.nc_nick_guest)
|
?: context!!.getText(R.string.nc_nick_guest)
|
||||||
binding.messageQuote.quotedMessage.text = messageUtils
|
binding.messageQuote.quotedMessage.text = messageUtils
|
||||||
.enrichChatMessageText(
|
.enrichChatReplyMessageText(
|
||||||
binding.messageQuote.quotedMessage.context,
|
binding.messageQuote.quotedMessage.context,
|
||||||
parentChatMessage.text,
|
parentChatMessage,
|
||||||
viewThemeUtils.getScheme(binding.messageQuote.quotedMessage.context).onSurfaceVariant
|
viewThemeUtils.getScheme(binding.messageQuote.quotedMessage.context).onSurfaceVariant
|
||||||
)
|
)
|
||||||
viewThemeUtils.talk.colorOutgoingQuoteText(binding.messageQuote.quotedMessage)
|
viewThemeUtils.talk.colorOutgoingQuoteText(binding.messageQuote.quotedMessage)
|
||||||
|
@ -119,6 +119,9 @@ data class ChatMessage(
|
|||||||
@JsonField(name = ["expirationTimestamp"])
|
@JsonField(name = ["expirationTimestamp"])
|
||||||
var expirationTimestamp: Int = 0,
|
var expirationTimestamp: Int = 0,
|
||||||
|
|
||||||
|
@JsonField(name = ["markdown"])
|
||||||
|
var renderMarkdown: Boolean? = null,
|
||||||
|
|
||||||
var isDownloadingVoiceMessage: Boolean = false,
|
var isDownloadingVoiceMessage: Boolean = false,
|
||||||
|
|
||||||
var resetVoiceMessage: Boolean = false,
|
var resetVoiceMessage: Boolean = false,
|
||||||
|
@ -23,6 +23,7 @@ package com.nextcloud.talk.utils.message
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
|
import android.text.SpannableString
|
||||||
import android.text.Spanned
|
import android.text.Spanned
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import android.view.View
|
import android.view.View
|
||||||
@ -39,16 +40,27 @@ import io.noties.markwon.ext.tasklist.TaskListDrawable
|
|||||||
import io.noties.markwon.ext.tasklist.TaskListPlugin
|
import io.noties.markwon.ext.tasklist.TaskListPlugin
|
||||||
|
|
||||||
class MessageUtils(val context: Context) {
|
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? {
|
fun enrichChatMessageText(context: Context, message: ChatMessage, textColor: Int): Spanned? {
|
||||||
return if (message.message == null) {
|
return if (message.message == null) {
|
||||||
null
|
null
|
||||||
|
} else if (message.renderMarkdown == false) {
|
||||||
|
SpannableString(message.message)
|
||||||
} else {
|
} else {
|
||||||
enrichChatMessageText(context, message.message!!, textColor)
|
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)
|
return getRenderedMarkdownText(context, message, textColor)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -139,5 +151,6 @@ class MessageUtils(val context: Context) {
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val TAG = "MessageUtils"
|
private const val TAG = "MessageUtils"
|
||||||
|
const val MAX_REPLY_LENGTH = 250
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user