refactor: migrate to HTMLText

This commit is contained in:
Harsh Shandilya 2023-06-09 19:57:53 +05:30
parent 2d23ceee83
commit 2dc8eae861
No known key found for this signature in database
6 changed files with 7 additions and 30 deletions

View file

@ -18,7 +18,6 @@ import androidx.core.view.WindowCompat
import com.deliveryhero.whetstone.Whetstone
import com.deliveryhero.whetstone.activity.ContributesActivityInjector
import dev.msfjarvis.claw.android.ui.LobstersApp
import dev.msfjarvis.claw.common.comments.HTMLConverter
import dev.msfjarvis.claw.common.urllauncher.UrlLauncher
import javax.inject.Inject
@ -26,7 +25,6 @@ import javax.inject.Inject
class MainActivity : ComponentActivity() {
@Inject lateinit var urlLauncher: UrlLauncher
@Inject lateinit var htmlConverter: HTMLConverter
private var webUri: String? = null
@OptIn(ExperimentalMaterial3WindowSizeClassApi::class)
@ -40,7 +38,6 @@ class MainActivity : ComponentActivity() {
LobstersApp(
urlLauncher = urlLauncher,
htmlConverter = htmlConverter,
windowSizeClass = windowSizeClass,
setWebUri = { url -> webUri = url },
)

View file

@ -64,7 +64,6 @@ import dev.msfjarvis.claw.android.ui.navigation.Destinations
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.theme.LobstersTheme
import dev.msfjarvis.claw.common.ui.decorations.ClawAppBar
import dev.msfjarvis.claw.common.urllauncher.UrlLauncher
@ -77,7 +76,6 @@ import kotlinx.coroutines.launch
@Composable
fun LobstersApp(
urlLauncher: UrlLauncher,
htmlConverter: HTMLConverter,
windowSizeClass: WindowSizeClass,
setWebUri: (String?) -> Unit,
modifier: Modifier = Modifier,
@ -238,7 +236,6 @@ fun LobstersApp(
CommentsPage(
postId = postId,
postActions = postActions,
htmlConverter = htmlConverter,
getSeenComments = viewModel::getSeenComments,
markSeenComments = viewModel::markSeenComments,
)

View file

@ -41,8 +41,8 @@ import dev.msfjarvis.claw.common.posts.PostActions
import dev.msfjarvis.claw.common.posts.PostTitle
import dev.msfjarvis.claw.common.posts.Submitter
import dev.msfjarvis.claw.common.posts.TagRow
import dev.msfjarvis.claw.common.ui.HTMLText
import dev.msfjarvis.claw.common.ui.NetworkImage
import dev.msfjarvis.claw.common.ui.ThemedRichText
import dev.msfjarvis.claw.model.LinkMetadata
import dev.msfjarvis.claw.model.LobstersPostDetails
import java.time.Instant
@ -53,7 +53,6 @@ import kotlinx.collections.immutable.toImmutableList
internal fun CommentsHeader(
postDetails: LobstersPostDetails,
postActions: PostActions,
htmlConverter: HTMLConverter,
modifier: Modifier = Modifier,
) {
val uriHandler = LocalUriHandler.current
@ -84,7 +83,7 @@ internal fun CommentsHeader(
}
if (postDetails.description.isNotBlank()) {
ThemedRichText(htmlConverter.convertHTMLToMarkdown(postDetails.description))
HTMLText(postDetails.description)
Spacer(Modifier.height(4.dp))
}
Submitter(
@ -134,7 +133,6 @@ private val CommentEntryPadding = 16f.dp
@Composable
internal fun CommentEntry(
commentNode: CommentNode,
htmlConverter: HTMLConverter,
toggleExpanded: (CommentNode) -> Unit,
modifier: Modifier = Modifier,
) {
@ -169,10 +167,7 @@ internal fun CommentEntry(
Modifier.clickable { uriHandler.openUri("https://lobste.rs/u/${comment.user.username}") },
)
if (commentNode.isExpanded) {
ThemedRichText(
text = htmlConverter.convertHTMLToMarkdown(comment.comment),
modifier = Modifier.padding(top = 8.dp)
)
HTMLText(text = comment.comment, modifier = Modifier.padding(top = 8.dp))
}
}
}

View file

@ -68,13 +68,11 @@ internal fun findTopMostParent(node: CommentNode): CommentNode {
internal fun LazyListScope.nodes(
nodes: List<CommentNode>,
htmlConverter: HTMLConverter,
toggleExpanded: (CommentNode) -> Unit,
) {
nodes.forEach { node ->
node(
node = node,
htmlConverter = htmlConverter,
toggleExpanded = toggleExpanded,
)
}
@ -82,7 +80,6 @@ internal fun LazyListScope.nodes(
private fun LazyListScope.node(
node: CommentNode,
htmlConverter: HTMLConverter,
toggleExpanded: (CommentNode) -> Unit,
) {
// Skip the node if neither the node nor its parent is expanded
@ -92,7 +89,6 @@ private fun LazyListScope.node(
item {
CommentEntry(
commentNode = node,
htmlConverter = htmlConverter,
toggleExpanded = toggleExpanded,
)
Divider()
@ -100,7 +96,6 @@ private fun LazyListScope.node(
if (node.children.isNotEmpty()) {
nodes(
node.children,
htmlConverter = htmlConverter,
toggleExpanded = toggleExpanded,
)
}

View file

@ -41,7 +41,6 @@ import dev.msfjarvis.claw.model.LobstersPostDetails
private fun CommentsPageInternal(
details: LobstersPostDetails,
postActions: PostActions,
htmlConverter: HTMLConverter,
commentState: PostComments?,
markSeenComments: (String, List<Comment>) -> Unit,
modifier: Modifier = Modifier,
@ -55,7 +54,6 @@ private fun CommentsPageInternal(
CommentsHeader(
postDetails = details,
postActions = postActions,
htmlConverter = htmlConverter,
)
}
@ -70,7 +68,6 @@ private fun CommentsPageInternal(
nodes(
nodes = commentNodes,
htmlConverter = htmlConverter,
toggleExpanded = { node ->
val newNode = setExpanded(node, !node.isExpanded)
val parent = findTopMostParent(newNode)
@ -102,7 +99,6 @@ private fun CommentsPageInternal(
fun CommentsPage(
postId: String,
postActions: PostActions,
htmlConverter: HTMLConverter,
getSeenComments: suspend (String) -> PostComments?,
markSeenComments: (String, List<Comment>) -> Unit,
modifier: Modifier = Modifier,
@ -123,7 +119,6 @@ fun CommentsPage(
CommentsPageInternal(
details = (postDetails as Success<LobstersPostDetails>).data,
postActions = postActions,
htmlConverter = htmlConverter,
commentState = commentState,
markSeenComments = markSeenComments,
modifier = modifier.fillMaxSize(),

View file

@ -29,10 +29,10 @@ import dev.msfjarvis.claw.common.NetworkState
import dev.msfjarvis.claw.common.NetworkState.Error
import dev.msfjarvis.claw.common.NetworkState.Loading
import dev.msfjarvis.claw.common.NetworkState.Success
import dev.msfjarvis.claw.common.ui.HTMLText
import dev.msfjarvis.claw.common.ui.NetworkError
import dev.msfjarvis.claw.common.ui.NetworkImage
import dev.msfjarvis.claw.common.ui.ProgressBar
import dev.msfjarvis.claw.common.ui.ThemedRichText
import dev.msfjarvis.claw.model.User
@Suppress("UNCHECKED_CAST")
@ -99,12 +99,10 @@ private fun UserProfileInternal(
text = user.username,
style = MaterialTheme.typography.displaySmall,
)
ThemedRichText(
text = user.about,
)
HTMLText(text = user.about)
user.invitedBy?.let { invitedBy ->
ThemedRichText(
text = "Invited by [${invitedBy}](https://lobste.rs/u/${user.invitedBy})",
HTMLText(
text = """Invited by <a href="https://lobste.rs/u/${invitedBy}">${invitedBy}</a>""",
)
}
}