diff --git a/android/build.gradle.kts b/android/build.gradle.kts index f58770a3..66b16a00 100644 --- a/android/build.gradle.kts +++ b/android/build.gradle.kts @@ -23,7 +23,6 @@ dependencies { implementation(libs.androidx.lifecycle.compose) implementation(libs.androidx.navigation.compose) implementation(libs.androidx.paging.compose) - implementation(libs.multiplatform.markdown.android) implementation(libs.copydown) implementation(libs.dagger.hilt.android) implementation(libs.sqldelight.extensions.coroutines) diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt index ed0ec550..b398cc43 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt @@ -28,7 +28,6 @@ import com.google.accompanist.insets.ProvideWindowInsets import com.google.accompanist.insets.navigationBarsPadding import com.google.accompanist.insets.statusBarsPadding import com.google.accompanist.systemuicontroller.rememberSystemUiController -import com.mikepenz.markdown.Markdown import dev.msfjarvis.claw.android.viewmodel.ClawViewModel import dev.msfjarvis.claw.common.comments.CommentsPage import dev.msfjarvis.claw.common.posts.PostActions @@ -127,10 +126,7 @@ fun LobstersApp( CommentsPage( postId = requireNotNull(backStackEntry.arguments?.getString("postId")), getDetails = viewModel::getPostComments, - renderMarkdown = { source, modifier -> - val markdown = copydown.convert(source) - Markdown(markdown, modifier = modifier) - }, + htmlToMarkdown = { source -> copydown.convert(source) }, paddingValues = paddingValues, ) } diff --git a/common/build.gradle.kts b/common/build.gradle.kts index 410fc22e..5aab19d2 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -17,6 +17,7 @@ kotlin { api(compose.material) api(projects.database) api(projects.model) + implementation(libs.multiplatform.markdown) } } sourceSets["androidMain"].apply { diff --git a/common/src/commonMain/kotlin/dev/msfjarvis/claw/common/comments/CommentEntry.kt b/common/src/commonMain/kotlin/dev/msfjarvis/claw/common/comments/CommentEntry.kt index 3954cf4d..fe37ea1b 100644 --- a/common/src/commonMain/kotlin/dev/msfjarvis/claw/common/comments/CommentEntry.kt +++ b/common/src/commonMain/kotlin/dev/msfjarvis/claw/common/comments/CommentEntry.kt @@ -17,6 +17,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp +import com.mikepenz.markdown.Markdown import dev.msfjarvis.claw.common.posts.PostDetails import dev.msfjarvis.claw.common.posts.SubmitterName import dev.msfjarvis.claw.common.posts.toDbModel @@ -26,6 +27,7 @@ import dev.msfjarvis.claw.model.LobstersPostDetails @Composable fun CommentsHeader( postDetails: LobstersPostDetails, + htmlToMarkdown: (html: String) -> String, ) { Surface { Column( @@ -35,6 +37,7 @@ fun CommentsHeader( PostDetails( post = postDetails.toDbModel(), ) + Markdown(htmlToMarkdown(postDetails.description)) } } } @@ -42,7 +45,7 @@ fun CommentsHeader( @Composable fun CommentEntry( comment: Comment, - renderMarkdown: @Composable (comment: String, modifier: Modifier) -> Unit, + htmlToMarkdown: (html: String) -> String, ) { val indentLevel = comment.indentLevel.toInt() - 1 @@ -55,7 +58,7 @@ fun CommentEntry( avatarUrl = "https://lobste.rs/${comment.user.avatarUrl}", contentDescription = "Submitted by ${comment.user.username}", ) - renderMarkdown(comment.comment, Modifier.padding(top = 8.dp)) + Markdown(htmlToMarkdown(comment.comment), Modifier.padding(top = 8.dp)) } } } diff --git a/common/src/commonMain/kotlin/dev/msfjarvis/claw/common/comments/Comments.kt b/common/src/commonMain/kotlin/dev/msfjarvis/claw/common/comments/Comments.kt index feb0da24..fea7b875 100644 --- a/common/src/commonMain/kotlin/dev/msfjarvis/claw/common/comments/Comments.kt +++ b/common/src/commonMain/kotlin/dev/msfjarvis/claw/common/comments/Comments.kt @@ -28,15 +28,15 @@ import dev.msfjarvis.lobsters.ui.comments.NetworkState @Composable private fun CommentsPageInternal( details: LobstersPostDetails, - renderMarkdown: @Composable (comment: String, modifier: Modifier) -> Unit, + htmlToMarkdown: (html: String) -> String, bottomPadding: Dp, ) { LazyColumn(Modifier.padding(bottom = bottomPadding)) { - item { CommentsHeader(postDetails = details) } + item { CommentsHeader(postDetails = details, htmlToMarkdown = htmlToMarkdown) } item { Spacer(modifier = Modifier.height(8.dp)) } - items(details.comments) { item -> CommentEntry(item, renderMarkdown) } + items(details.comments) { item -> CommentEntry(item, htmlToMarkdown) } item { Divider(color = Color.Gray.copy(0.4f)) } } @@ -47,7 +47,7 @@ private fun CommentsPageInternal( fun CommentsPage( postId: String, getDetails: suspend (String) -> LobstersPostDetails, - renderMarkdown: @Composable (comment: String, modifier: Modifier) -> Unit, + htmlToMarkdown: (html: String) -> String, paddingValues: PaddingValues, ) { var postDetails: NetworkState by remember { mutableStateOf(NetworkState.Loading) } @@ -58,7 +58,7 @@ fun CommentsPage( is NetworkState.Success<*> -> { CommentsPageInternal( (postDetails as NetworkState.Success).data, - renderMarkdown, + htmlToMarkdown, paddingValues.calculateBottomPadding(), ) } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 606439e3..446bfb51 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -38,7 +38,7 @@ dagger-hilt-android = { module = "com.google.dagger:hilt-android", version.ref = dagger-hilt-compiler = { module = "com.google.dagger:hilt-compiler", version.ref = "hilt" } dagger-hilt-core = { module = "com.google.dagger:hilt-core", version.ref = "hilt" } -multiplatform-markdown-android = "com.mikepenz:multiplatform-markdown-renderer-android:0.1.0" +multiplatform-markdown = "com.mikepenz:multiplatform-markdown-renderer:0.1.0" copydown = "io.github.furstenheim:copy_down:1.0" multiplatform-paging = "io.github.kuuuurt:multiplatform-paging:0.4.5"