refactor(common): pass HTMLConverter down as a parameter

This commit is contained in:
Harsh Shandilya 2022-10-03 12:15:44 +05:30
parent 02416a3606
commit 535c8a5808
No known key found for this signature in database
5 changed files with 18 additions and 18 deletions

View file

@ -38,7 +38,6 @@ import dev.msfjarvis.claw.android.viewmodel.ClawViewModel
import dev.msfjarvis.claw.api.LobstersApi
import dev.msfjarvis.claw.common.comments.CommentsPage
import dev.msfjarvis.claw.common.comments.HTMLConverter
import dev.msfjarvis.claw.common.comments.LocalHTMLConverter
import dev.msfjarvis.claw.common.res.ClawIcons
import dev.msfjarvis.claw.common.theme.LobstersTheme
import dev.msfjarvis.claw.common.ui.decorations.ClawAppBar
@ -75,11 +74,7 @@ fun LobstersApp(
LobstersTheme(
dynamicColor = true,
providedValues =
arrayOf(
LocalUriHandler provides urlLauncher,
LocalHTMLConverter provides htmlConverter,
),
providedValues = arrayOf(LocalUriHandler provides urlLauncher),
) {
val currentUiMode = LocalConfiguration.current.uiMode
val systemBarsColor = MaterialTheme.colorScheme.surfaceColorAtNavigationBarElevation()
@ -211,6 +206,7 @@ fun LobstersApp(
postId = postId,
getDetails = viewModel::getPostComments,
postActions = postActions,
htmlConverter = htmlConverter,
)
}
composable(

View file

@ -49,9 +49,9 @@ import java.time.temporal.TemporalAccessor
fun CommentsHeader(
postDetails: ExtendedPostDetails,
postActions: PostActions,
htmlConverter: HTMLConverter,
modifier: Modifier = Modifier,
) {
val htmlConverter = LocalHTMLConverter.current
val uriHandler = LocalUriHandler.current
Surface(color = MaterialTheme.colorScheme.background, modifier = modifier) {
@ -133,10 +133,10 @@ fun PostLink(
@Composable
fun CommentEntry(
comment: Comment,
htmlConverter: HTMLConverter,
modifier: Modifier = Modifier,
) {
var expanded by remember(comment) { mutableStateOf(true) }
val htmlConverter = LocalHTMLConverter.current
val uriHandler = LocalUriHandler.current
Box(
modifier =

View file

@ -30,11 +30,18 @@ import dev.msfjarvis.claw.model.ExtendedPostDetails
private fun CommentsPageInternal(
details: ExtendedPostDetails,
postActions: PostActions,
htmlConverter: HTMLConverter,
modifier: Modifier = Modifier,
) {
Surface(color = MaterialTheme.colorScheme.surfaceVariant) {
LazyColumn(modifier = modifier, contentPadding = PaddingValues(bottom = 24.dp)) {
item { CommentsHeader(postDetails = details, postActions = postActions) }
item {
CommentsHeader(
postDetails = details,
postActions = postActions,
htmlConverter = htmlConverter,
)
}
if (details.comments.isNotEmpty()) {
item {
@ -49,7 +56,7 @@ private fun CommentsPageInternal(
if (index != 0) {
Divider()
}
CommentEntry(item)
CommentEntry(comment = item, htmlConverter = htmlConverter)
}
} else {
item {
@ -72,6 +79,7 @@ fun CommentsPage(
postId: String,
getDetails: suspend (String) -> ExtendedPostDetails,
postActions: PostActions,
htmlConverter: HTMLConverter,
modifier: Modifier = Modifier,
) {
val postDetails by
@ -86,9 +94,10 @@ fun CommentsPage(
when (postDetails) {
is Success<*> -> {
CommentsPageInternal(
(postDetails as Success<ExtendedPostDetails>).data,
postActions,
modifier.fillMaxSize(),
details = (postDetails as Success<ExtendedPostDetails>).data,
postActions = postActions,
htmlConverter = htmlConverter,
modifier = modifier.fillMaxSize(),
)
}
is Error -> {

View file

@ -1,10 +1,6 @@
package dev.msfjarvis.claw.common.comments
import androidx.compose.runtime.staticCompositionLocalOf
/** Defines a contract to convert strings of HTML to Markdown. */
fun interface HTMLConverter {
fun convertHTMLToMarkdown(html: String): String
}
val LocalHTMLConverter = staticCompositionLocalOf<HTMLConverter> { error("To be provided") }

View file

@ -2,7 +2,6 @@
<SmellBaseline>
<ManuallySuppressedIssues></ManuallySuppressedIssues>
<CurrentIssues>
<ID>CompositionLocalAllowlist:HTMLConverter.kt$LocalHTMLConverter</ID>
<ID>MagicNumber:CommentEntry.kt$16</ID>
<ID>MagicNumber:LobstersCard.kt$50</ID>
<ID>MagicNumber:LobstersCard.kt$8</ID>