Updates markdown parser to the latest

This commit is contained in:
Vitor Pamplona
2025-09-25 12:53:45 -04:00
parent d04cf97418
commit 1f6135d45d
4 changed files with 38 additions and 25 deletions

View File

@@ -26,15 +26,17 @@ import androidx.compose.foundation.verticalScroll
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.ProvideTextStyle
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalUriHandler
import androidx.compose.ui.platform.UriHandler
import androidx.compose.ui.tooling.preview.Preview
import com.halilibo.richtext.commonmark.CommonMarkdownParseOptions
import com.halilibo.richtext.commonmark.CommonmarkAstNodeParser
import com.halilibo.richtext.commonmark.MarkdownParseOptions
import com.halilibo.richtext.markdown.BasicMarkdown
import com.halilibo.richtext.ui.material3.RichText
import com.vitorpamplona.amethyst.model.LocalCache
@@ -69,24 +71,25 @@ fun RenderContentAsMarkdown(
accountViewModel: AccountViewModel,
nav: INav,
) {
val uri = LocalUriHandler.current
val uriHandler = LocalUriHandler.current
val onClick =
remember {
{ link: String ->
val route = uriToRoute(link, accountViewModel.account)
if (route != null) {
nav.nav(route)
} else {
runCatching { uri.openUri(link) }
remember(uriHandler) {
object : UriHandler {
override fun openUri(uri: String) {
val route = uriToRoute(uri, accountViewModel.account)
if (route != null) {
nav.nav(route)
} else {
runCatching { uriHandler.openUri(uri) }
}
}
Unit
}
}
ProvideTextStyle(MarkdownTextStyle) {
val astNode =
remember(content) {
CommonmarkAstNodeParser(MarkdownParseOptions.MarkdownWithLinks).parse(content)
CommonmarkAstNodeParser(CommonMarkdownParseOptions.MarkdownWithLinks).parse(content)
}
val renderer =
@@ -103,12 +106,13 @@ fun RenderContentAsMarkdown(
)
}
RichText(
style = MaterialTheme.colorScheme.markdownStyle,
linkClickHandler = onClick,
renderer = renderer,
) {
BasicMarkdown(astNode)
CompositionLocalProvider(LocalUriHandler provides onClick) {
RichText(
style = MaterialTheme.colorScheme.markdownStyle,
renderer = renderer,
) {
BasicMarkdown(astNode)
}
}
}
}

View File

@@ -83,8 +83,8 @@ import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog
import androidx.compose.ui.window.DialogProperties
import androidx.fragment.app.FragmentActivity
import com.halilibo.richtext.commonmark.CommonMarkdownParseOptions
import com.halilibo.richtext.commonmark.CommonmarkAstNodeParser
import com.halilibo.richtext.commonmark.MarkdownParseOptions
import com.halilibo.richtext.markdown.BasicMarkdown
import com.halilibo.richtext.ui.RichTextStyle
import com.halilibo.richtext.ui.material3.RichText
@@ -177,7 +177,7 @@ private fun DialogContents(
val astNode1 =
remember {
CommonmarkAstNodeParser(MarkdownParseOptions.MarkdownWithLinks).parse(content1)
CommonmarkAstNodeParser(CommonMarkdownParseOptions.MarkdownWithLinks).parse(content1)
}
RichText(
@@ -205,7 +205,7 @@ private fun DialogContents(
val astNode =
remember {
CommonmarkAstNodeParser(MarkdownParseOptions.MarkdownWithLinks).parse(content)
CommonmarkAstNodeParser(CommonMarkdownParseOptions.MarkdownWithLinks).parse(content)
}
RichText(

View File

@@ -20,6 +20,8 @@
*/
package com.vitorpamplona.amethyst.ui.theme
import android.R.attr.fontFamily
import android.R.id.primary
import android.app.Activity
import android.app.UiModeManager
import android.content.Context
@@ -49,6 +51,7 @@ import androidx.compose.ui.graphics.toArgb
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalView
import androidx.compose.ui.text.SpanStyle
import androidx.compose.ui.text.TextLinkStyles
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.unit.dp
@@ -292,8 +295,11 @@ val MarkDownStyleOnDark =
stringStyle =
RichTextDefaults.stringStyle?.copy(
linkStyle =
SpanStyle(
color = DarkColorPalette.primary,
TextLinkStyles(
style =
SpanStyle(
color = DarkColorPalette.primary,
),
),
codeStyle =
SpanStyle(
@@ -330,8 +336,11 @@ val MarkDownStyleOnLight =
stringStyle =
RichTextDefaults.stringStyle?.copy(
linkStyle =
SpanStyle(
color = LightColorPalette.primary,
TextLinkStyles(
style =
SpanStyle(
color = LightColorPalette.primary,
),
),
codeStyle =
SpanStyle(

View File

@@ -34,7 +34,7 @@ lazysodiumAndroid = "5.2.0"
lazysodiumJava = "5.2.0"
lifecycleRuntimeKtx = "2.9.4"
lightcompressor = "1.3.3"
markdown = "e1151c8"
markdown = "f92ef49c9d"
media3 = "1.8.0"
mockk = "1.14.5"
kotlinx-coroutines-test = "1.10.2"