From 4d260933c0ff09253d89d2c7bb404f92462ca8be Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Fri, 1 Nov 2024 00:00:33 +0530 Subject: [PATCH] refactor(android): remove `TwoPaneLayoutPostActions` --- .../msfjarvis/claw/android/MainActivity.kt | 4 +- .../dev/msfjarvis/claw/android/ui/ext.kt | 57 +------------------ .../android/ui/screens/LobstersPostsScreen.kt | 4 +- .../claw/android/ui/screens/SearchScreen.kt | 4 +- .../{TwoPaneLayout.kt => TabletScreen.kt} | 6 +- 5 files changed, 13 insertions(+), 62 deletions(-) rename android/src/main/kotlin/dev/msfjarvis/claw/android/ui/screens/{TwoPaneLayout.kt => TabletScreen.kt} (97%) diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/MainActivity.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/MainActivity.kt index 81963eff..8834306a 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/MainActivity.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/MainActivity.kt @@ -15,7 +15,7 @@ import androidx.compose.ui.Modifier import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen import com.deliveryhero.whetstone.activity.ContributesActivityInjector import dev.msfjarvis.claw.android.ui.screens.LobstersPostsScreen -import dev.msfjarvis.claw.android.ui.screens.TwoPaneLayout +import dev.msfjarvis.claw.android.ui.screens.TabletScreen @ContributesActivityInjector class MainActivity : BaseActivity() { @@ -36,7 +36,7 @@ class MainActivity : BaseActivity() { } else -> { - TwoPaneLayout( + TabletScreen( urlLauncher = urlLauncher, htmlConverter = htmlConverter, modifier = Modifier.fillMaxSize(), 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 a025731a..0d597e56 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 @@ -8,9 +8,7 @@ package dev.msfjarvis.claw.android.ui import android.content.Context import android.content.Intent -import androidx.navigation.NavController import com.slack.eithernet.ApiResult -import dev.msfjarvis.claw.android.ui.navigation.Comments import dev.msfjarvis.claw.android.viewmodel.ClawViewModel import dev.msfjarvis.claw.common.posts.PostActions import dev.msfjarvis.claw.common.urllauncher.UrlLauncher @@ -22,8 +20,8 @@ import java.net.HttpURLConnection fun PostActions( context: Context, urlLauncher: UrlLauncher, - navController: NavController, viewModel: ClawViewModel, + viewComments: (String) -> Unit, ): PostActions { return object : PostActions { override fun viewPost(postId: String, postUrl: String, commentsUrl: String) { @@ -33,7 +31,7 @@ fun PostActions( override fun viewComments(postId: String) { viewModel.markPostAsRead(postId) - navController.navigate(Comments(postId)) + viewComments(postId) } override fun viewCommentsPage(post: UIPost) { @@ -70,57 +68,6 @@ fun PostActions( } } -fun TwoPaneLayoutPostActions( - context: Context, - urlLauncher: UrlLauncher, - viewModel: ClawViewModel, - setSelectedPost: (String) -> Unit, -): PostActions { - return object : PostActions { - override fun viewPost(postId: String, postUrl: String, commentsUrl: String) { - viewModel.markPostAsRead(postId) - urlLauncher.openUri(postUrl.ifEmpty { commentsUrl }) - } - - override fun viewComments(postId: String) { - viewModel.markPostAsRead(postId) - setSelectedPost(postId) - } - - override fun viewCommentsPage(post: UIPost) { - urlLauncher.openUri(post.commentsUrl) - } - - override fun toggleSave(post: UIPost) { - viewModel.toggleSave(post) - } - - override fun share(post: UIPost) { - val sendIntent = - Intent().apply { - action = Intent.ACTION_SEND - putExtra(Intent.EXTRA_TEXT, post.url.ifEmpty { post.commentsUrl }) - putExtra(Intent.EXTRA_TITLE, post.title) - type = "text/plain" - } - val shareIntent = Intent.createChooser(sendIntent, null) - context.startActivity(shareIntent) - } - - override fun isPostRead(post: UIPost): Boolean = viewModel.isPostRead(post) - - override fun isPostSaved(post: UIPost): Boolean = viewModel.isPostSaved(post) - - override suspend fun getComments(postId: String): UIPost { - return viewModel.getPostComments(postId) - } - - override suspend fun getLinkMetadata(url: String): LinkMetadata { - return viewModel.getLinkMetadata(url) - } - } -} - /** * Convert an [ApiResult.Failure.HttpFailure] to a scoped down error with a more useful user-facing * message. diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/screens/LobstersPostsScreen.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/screens/LobstersPostsScreen.kt index 3a4651a2..87867ebe 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/screens/LobstersPostsScreen.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/screens/LobstersPostsScreen.kt @@ -109,7 +109,9 @@ fun LobstersPostsScreen( val currentDestination = navBackStackEntry?.destination val coroutineScope = rememberCoroutineScope() val snackbarHostState = remember { SnackbarHostState() } - val postActions = remember { PostActions(context, urlLauncher, navController, viewModel) } + val postActions = remember { + PostActions(context, urlLauncher, viewModel) { navController.navigate(Comments(it)) } + } val hazeState = remember { HazeState() } val hottestPosts = viewModel.hottestPosts.collectAsLazyPagingItems() diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/screens/SearchScreen.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/screens/SearchScreen.kt index 570f80c5..c365b438 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/screens/SearchScreen.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/screens/SearchScreen.kt @@ -39,7 +39,9 @@ fun SearchScreen( ) { val context = LocalContext.current val navController = rememberNavController() - val postActions = remember { PostActions(context, urlLauncher, navController, viewModel) } + val postActions = remember { + PostActions(context, urlLauncher, viewModel) { navController.navigate(Comments(it)) } + } val listState = rememberLazyListState() val searchResults = viewModel.searchResults.collectAsLazyPagingItems() diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/screens/TwoPaneLayout.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/screens/TabletScreen.kt similarity index 97% rename from android/src/main/kotlin/dev/msfjarvis/claw/android/ui/screens/TwoPaneLayout.kt rename to android/src/main/kotlin/dev/msfjarvis/claw/android/ui/screens/TabletScreen.kt index 94d613ce..05dbf639 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/screens/TwoPaneLayout.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/screens/TabletScreen.kt @@ -42,7 +42,7 @@ import androidx.navigation.compose.rememberNavController import androidx.paging.compose.collectAsLazyPagingItems import com.deliveryhero.whetstone.compose.injectedViewModel import dev.msfjarvis.claw.android.R -import dev.msfjarvis.claw.android.ui.TwoPaneLayoutPostActions +import dev.msfjarvis.claw.android.ui.PostActions import dev.msfjarvis.claw.android.ui.lists.NetworkPosts import dev.msfjarvis.claw.android.ui.navigation.Comments import dev.msfjarvis.claw.android.ui.navigation.User @@ -60,7 +60,7 @@ private fun ThreePaneScaffoldNavigator<*>.isDetailExpanded() = @OptIn(ExperimentalMaterial3Api::class) @Composable -fun TwoPaneLayout( +fun TabletScreen( urlLauncher: UrlLauncher, htmlConverter: HTMLConverter, modifier: Modifier = Modifier, @@ -80,7 +80,7 @@ fun TwoPaneLayout( } val postActions = remember { - TwoPaneLayoutPostActions(context, urlLauncher, viewModel) { + PostActions(context, urlLauncher, viewModel) { coroutineScope.launch { navigator.navigateTo(pane = ListDetailPaneScaffoldRole.Detail, contentKey = Comments(it)) }