From ccfcd48438a4bad6a1c2da3aa636337a09ba7691 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Sun, 16 Oct 2022 12:44:07 +0530 Subject: [PATCH] refactor: simplify argument passing --- .../dev/msfjarvis/claw/android/ui/LobstersApp.kt | 2 -- .../main/kotlin/dev/msfjarvis/claw/android/ui/ext.kt | 10 ++++++++++ .../dev/msfjarvis/claw/common/comments/CommentEntry.kt | 3 +-- .../dev/msfjarvis/claw/common/comments/Comments.kt | 10 ++-------- .../dev/msfjarvis/claw/common/posts/PostActions.kt | 4 ++++ 5 files changed, 17 insertions(+), 12 deletions(-) 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 c0329f24..685bf967 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 @@ -205,8 +205,6 @@ fun LobstersApp( setWebUri("https://lobste.rs/s/$postId") CommentsPage( postId = postId, - getDetails = viewModel::getPostComments, - getLinkMetadata = viewModel::getLinkMetadata, postActions = postActions, htmlConverter = htmlConverter, ) diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/ext.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/ext.kt index a76154ff..ec2e6fb7 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/ext.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/ext.kt @@ -11,6 +11,8 @@ import dev.msfjarvis.claw.android.viewmodel.ClawViewModel import dev.msfjarvis.claw.common.posts.PostActions import dev.msfjarvis.claw.common.urllauncher.UrlLauncher import dev.msfjarvis.claw.database.local.SavedPost +import dev.msfjarvis.claw.model.LinkMetadata +import dev.msfjarvis.claw.model.LobstersPostDetails import java.time.LocalDateTime import java.time.format.DateTimeFormatter @@ -61,6 +63,14 @@ fun rememberPostActions( override fun toggleSave(post: SavedPost) { viewModel.toggleSave(post) } + + override suspend fun getComments(postId: String): LobstersPostDetails { + return viewModel.getPostComments(postId) + } + + override suspend fun getLinkMetadata(url: String): LinkMetadata { + return viewModel.getLinkMetadata(url) + } } } } diff --git a/common/src/main/kotlin/dev/msfjarvis/claw/common/comments/CommentEntry.kt b/common/src/main/kotlin/dev/msfjarvis/claw/common/comments/CommentEntry.kt index 9e2fd941..5eeabeec 100644 --- a/common/src/main/kotlin/dev/msfjarvis/claw/common/comments/CommentEntry.kt +++ b/common/src/main/kotlin/dev/msfjarvis/claw/common/comments/CommentEntry.kt @@ -49,7 +49,6 @@ import java.time.temporal.TemporalAccessor @Composable fun CommentsHeader( postDetails: LobstersPostDetails, - getLinkMetadata: suspend (String) -> LinkMetadata, postActions: PostActions, htmlConverter: HTMLConverter, modifier: Modifier = Modifier, @@ -59,7 +58,7 @@ fun CommentsHeader( produceState( initialValue = LinkMetadata(postDetails.url, null, null), ) { - value = getLinkMetadata(postDetails.url) + value = postActions.getLinkMetadata(postDetails.url) } Surface(color = MaterialTheme.colorScheme.background, modifier = modifier) { diff --git a/common/src/main/kotlin/dev/msfjarvis/claw/common/comments/Comments.kt b/common/src/main/kotlin/dev/msfjarvis/claw/common/comments/Comments.kt index 6bfd01e8..5bb79dff 100644 --- a/common/src/main/kotlin/dev/msfjarvis/claw/common/comments/Comments.kt +++ b/common/src/main/kotlin/dev/msfjarvis/claw/common/comments/Comments.kt @@ -24,13 +24,11 @@ import dev.msfjarvis.claw.common.NetworkState.Success import dev.msfjarvis.claw.common.posts.PostActions import dev.msfjarvis.claw.common.ui.NetworkError import dev.msfjarvis.claw.common.ui.ProgressBar -import dev.msfjarvis.claw.model.LinkMetadata import dev.msfjarvis.claw.model.LobstersPostDetails @Composable private fun CommentsPageInternal( details: LobstersPostDetails, - getLinkMetadata: suspend (String) -> LinkMetadata, postActions: PostActions, htmlConverter: HTMLConverter, modifier: Modifier = Modifier, @@ -40,7 +38,6 @@ private fun CommentsPageInternal( item { CommentsHeader( postDetails = details, - getLinkMetadata = getLinkMetadata, postActions = postActions, htmlConverter = htmlConverter, ) @@ -76,19 +73,17 @@ private fun CommentsPageInternal( } } -@Suppress("UNCHECKED_CAST", "LongParameterList") +@Suppress("UNCHECKED_CAST") @Composable fun CommentsPage( postId: String, - getDetails: suspend (String) -> LobstersPostDetails, - getLinkMetadata: suspend (String) -> LinkMetadata, postActions: PostActions, htmlConverter: HTMLConverter, modifier: Modifier = Modifier, ) { val postDetails by produceState(Loading) { - runCatching { getDetails(postId) } + runCatching { postActions.getComments(postId) } .fold( onSuccess = { details -> value = Success(details) }, onFailure = { value = Error(error = it, description = "Failed to load comments") } @@ -99,7 +94,6 @@ fun CommentsPage( is Success<*> -> { CommentsPageInternal( details = (postDetails as Success).data, - getLinkMetadata = getLinkMetadata, postActions = postActions, htmlConverter = htmlConverter, modifier = modifier.fillMaxSize(), diff --git a/common/src/main/kotlin/dev/msfjarvis/claw/common/posts/PostActions.kt b/common/src/main/kotlin/dev/msfjarvis/claw/common/posts/PostActions.kt index f0ad9288..2c8354e8 100644 --- a/common/src/main/kotlin/dev/msfjarvis/claw/common/posts/PostActions.kt +++ b/common/src/main/kotlin/dev/msfjarvis/claw/common/posts/PostActions.kt @@ -1,10 +1,14 @@ package dev.msfjarvis.claw.common.posts import dev.msfjarvis.claw.database.local.SavedPost +import dev.msfjarvis.claw.model.LinkMetadata +import dev.msfjarvis.claw.model.LobstersPostDetails interface PostActions { fun viewPost(postUrl: String, commentsUrl: String) fun viewComments(postId: String) fun viewCommentsPage(commentsUrl: String) fun toggleSave(post: SavedPost) + suspend fun getComments(postId: String): LobstersPostDetails + suspend fun getLinkMetadata(url: String): LinkMetadata }