mirror of
https://github.com/nextcloud/talk-android
synced 2025-08-11 05:55:17 +01:00
handle markdown links
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
This commit is contained in:
parent
465d779401
commit
5fb1ae4560
@ -7,17 +7,22 @@
|
||||
|
||||
package com.nextcloud.talk.utils
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.util.Log
|
||||
import android.content.Intent
|
||||
import android.text.method.ScrollingMovementMethod
|
||||
import android.view.View
|
||||
import androidx.core.net.toUri
|
||||
import com.nextcloud.talk.R
|
||||
import io.noties.markwon.AbstractMarkwonPlugin
|
||||
import io.noties.markwon.LinkResolverDef
|
||||
import io.noties.markwon.Markwon
|
||||
import io.noties.markwon.MarkwonConfiguration
|
||||
import io.noties.markwon.core.MarkwonTheme
|
||||
import io.noties.markwon.ext.strikethrough.StrikethroughPlugin
|
||||
import io.noties.markwon.ext.tasklist.TaskListDrawable
|
||||
import io.noties.markwon.ext.tasklist.TaskListPlugin
|
||||
import io.noties.markwon.movement.MovementMethodPlugin
|
||||
|
||||
object MarkwonUtils {
|
||||
private const val TAG = "MarkwonUtils"
|
||||
@ -31,13 +36,28 @@ object MarkwonUtils {
|
||||
}
|
||||
|
||||
override fun configureConfiguration(builder: MarkwonConfiguration.Builder) {
|
||||
builder.linkResolver { view: View?, link: String? ->
|
||||
Log.i(TAG, "Link action not implemented $view / $link")
|
||||
}
|
||||
builder.linkResolver(object : LinkResolverDef() {
|
||||
@SuppressLint("SuspiciousIndentation")
|
||||
override fun resolve(view: View, link: String) {
|
||||
var linkToOpen = link
|
||||
if (!(linkToOpen.contains("http://") || linkToOpen.contains("https://"))) {
|
||||
linkToOpen = "https://$link"
|
||||
} else {
|
||||
linkToOpen = link
|
||||
}
|
||||
|
||||
val browserIntent = Intent(
|
||||
Intent.ACTION_VIEW,
|
||||
linkToOpen.toUri()
|
||||
)
|
||||
context.startActivity(browserIntent)
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
.usePlugin(TaskListPlugin.create(drawable))
|
||||
.usePlugin(StrikethroughPlugin.create())
|
||||
.usePlugin(MovementMethodPlugin.create(ScrollingMovementMethod.getInstance()))
|
||||
.build()
|
||||
}
|
||||
}
|
||||
|
@ -16,6 +16,7 @@ import android.text.Spanned
|
||||
import android.text.style.StyleSpan
|
||||
import android.util.Log
|
||||
import android.view.View
|
||||
import android.widget.TextView
|
||||
import com.nextcloud.talk.R
|
||||
import com.nextcloud.talk.chat.data.model.ChatMessage
|
||||
import com.nextcloud.talk.ui.theme.ViewThemeUtils
|
||||
@ -208,6 +209,19 @@ class MessageUtils(val context: Context) {
|
||||
return markwon.toMarkdown(markdown)
|
||||
}
|
||||
|
||||
fun isMarkdownInlineLink(text: String): Boolean {
|
||||
val markdownLinkRegex = Regex("""\[([^\]]+?)]\((.*?)(?:\s+"[^"]*")?\)""")
|
||||
return markdownLinkRegex.containsMatchIn(text)
|
||||
}
|
||||
|
||||
fun hyperLinks(view: TextView, text: String) {
|
||||
val isMarkdownLink = isMarkdownInlineLink(text)
|
||||
if (isMarkdownLink) {
|
||||
view.autoLinkMask = 0
|
||||
} else {
|
||||
view.autoLinkMask = 15
|
||||
}
|
||||
}
|
||||
companion object {
|
||||
private const val TAG = "MessageUtils"
|
||||
const val MAX_REPLY_LENGTH = 250
|
||||
|
Loading…
Reference in New Issue
Block a user