fix post body max height (#548)

This commit is contained in:
Diego Beraldin 2024-02-25 09:22:59 +01:00 committed by GitHub
parent 0cbec1899f
commit ccacbe2d13
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,5 +1,6 @@
package com.github.diegoberaldin.raccoonforlemmy.core.markdown package com.github.diegoberaldin.raccoonforlemmy.core.markdown
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.heightIn
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.CompositionLocalProvider
@ -11,7 +12,6 @@ import androidx.compose.ui.platform.UriHandler
import androidx.compose.ui.unit.Density import androidx.compose.ui.unit.Density
import androidx.compose.ui.unit.isUnspecified import androidx.compose.ui.unit.isUnspecified
import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick import com.github.diegoberaldin.raccoonforlemmy.core.utils.compose.onClick
import com.mikepenz.markdown.compose.LocalMarkdownTypography
import com.mikepenz.markdown.compose.Markdown import com.mikepenz.markdown.compose.Markdown
import com.mikepenz.markdown.compose.components.markdownComponents import com.mikepenz.markdown.compose.components.markdownComponents
import com.mikepenz.markdown.compose.elements.MarkdownParagraph import com.mikepenz.markdown.compose.elements.MarkdownParagraph
@ -21,6 +21,7 @@ import com.mikepenz.markdown.model.MarkdownTypography
import com.mikepenz.markdown.model.markdownColor import com.mikepenz.markdown.model.markdownColor
import com.mikepenz.markdown.model.markdownPadding import com.mikepenz.markdown.model.markdownPadding
import com.mikepenz.markdown.model.markdownTypography import com.mikepenz.markdown.model.markdownTypography
import kotlin.math.floor
private val String.containsSpoiler: Boolean private val String.containsSpoiler: Boolean
get() = SpoilerRegex.spoilerOpening.containsMatchIn(this) get() = SpoilerRegex.spoilerOpening.containsMatchIn(this)
@ -43,6 +44,21 @@ fun CustomMarkdownWrapper(
onDoubleClick: (() -> Unit)?, onDoubleClick: (() -> Unit)?,
onLongClick: (() -> Unit)?, onLongClick: (() -> Unit)?,
) { ) {
val maxHeightDp = with(LocalDensity.current) {
if (maxLines == null) {
null
} else {
val scale = 0.98f
val lineHeight =
typography.paragraph.lineHeight
val base = if (lineHeight.isUnspecified) {
floor(typography.paragraph.fontSize.toPx() * scale)
} else {
lineHeight.toPx() * scale
}
(base * maxLines).toDp()
}
}
val customUriHandler = remember { val customUriHandler = remember {
object : UriHandler { object : UriHandler {
override fun openUri(uri: String) { override fun openUri(uri: String) {
@ -73,24 +89,6 @@ fun CustomMarkdownWrapper(
else -> { else -> {
MarkdownParagraph( MarkdownParagraph(
modifier = if (maxLines != null && maxLines > 0) {
val maxHeightPx = with(LocalDensity.current) {
val lineHeight =
LocalMarkdownTypography.current.paragraph.lineHeight
val base = if (lineHeight.isUnspecified) {
LocalMarkdownTypography.current.paragraph.fontSize.roundToPx()
} else {
lineHeight.roundToPx()
}
base * maxLines
}
val maxHeightDp = with(LocalDensity.current) {
maxHeightPx.toDp()
}
Modifier.heightIn(max = maxHeightDp)
} else {
Modifier
},
content = model.content, content = model.content,
node = model.node node = model.node
) )
@ -114,8 +112,16 @@ fun CustomMarkdownWrapper(
fontScale = LocalDensity.current.fontScale * 0.99f, fontScale = LocalDensity.current.fontScale * 0.99f,
), ),
) { ) {
Markdown( Box(
modifier = modifier.onClick( modifier = modifier
.then(
if (maxHeightDp != null) {
Modifier.heightIn(max = maxHeightDp)
} else {
Modifier
}
)
.onClick(
onClick = { onClick = {
onClick?.invoke() onClick?.invoke()
}, },
@ -125,7 +131,9 @@ fun CustomMarkdownWrapper(
onDoubleClick = { onDoubleClick = {
onDoubleClick?.invoke() onDoubleClick?.invoke()
}, },
), )
) {
Markdown(
content = content.sanitize(), content = content.sanitize(),
colors = colors, colors = colors,
typography = typography, typography = typography,
@ -133,4 +141,5 @@ fun CustomMarkdownWrapper(
components = components, components = components,
) )
} }
}
} }