From 7d31979221b89183adec6cdf119495f29c11865e Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Wed, 2 Oct 2024 20:26:04 +0530 Subject: [PATCH] refactor(android): workaround `ContentEmitterReturningValues` lint --- .../dev/msfjarvis/claw/android/ui/ext.kt | 89 +++++++++---------- .../android/ui/screens/LobstersPostsScreen.kt | 4 +- .../claw/android/ui/screens/SearchScreen.kt | 6 +- 3 files changed, 48 insertions(+), 51 deletions(-) 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 356cfe87..7de6d3ca 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 @@ -10,8 +10,6 @@ import android.content.Context import android.content.ContextWrapper import android.content.Intent import androidx.activity.ComponentActivity -import androidx.compose.runtime.Composable -import androidx.compose.runtime.remember import androidx.navigation.NavController import com.slack.eithernet.ApiResult import dev.msfjarvis.claw.android.ui.navigation.Comments @@ -31,56 +29,53 @@ fun Context.getActivity(): ComponentActivity? { } } -@Composable -fun rememberPostActions( +fun PostActions( context: Context, urlLauncher: UrlLauncher, navController: NavController, viewModel: ClawViewModel, ): PostActions { - return remember { - 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) - navController.navigate(Comments(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 = - 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) - } + 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) + navController.navigate(Comments(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 = + 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) } } } 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 2a43d6f5..a4186db2 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 @@ -63,6 +63,7 @@ import dev.chrisbanes.haze.haze import dev.msfjarvis.claw.android.MainActivity import dev.msfjarvis.claw.android.R import dev.msfjarvis.claw.android.SearchActivity +import dev.msfjarvis.claw.android.ui.PostActions import dev.msfjarvis.claw.android.ui.decorations.ClawNavigationBar import dev.msfjarvis.claw.android.ui.decorations.ClawNavigationRail import dev.msfjarvis.claw.android.ui.decorations.NavigationItem @@ -79,7 +80,6 @@ import dev.msfjarvis.claw.android.ui.navigation.Settings import dev.msfjarvis.claw.android.ui.navigation.User import dev.msfjarvis.claw.android.ui.navigation.any import dev.msfjarvis.claw.android.ui.navigation.none -import dev.msfjarvis.claw.android.ui.rememberPostActions import dev.msfjarvis.claw.android.viewmodel.ClawViewModel import dev.msfjarvis.claw.common.comments.CommentsPage import dev.msfjarvis.claw.common.comments.HTMLConverter @@ -109,7 +109,7 @@ fun LobstersPostsScreen( val currentDestination = navBackStackEntry?.destination val coroutineScope = rememberCoroutineScope() val snackbarHostState = remember { SnackbarHostState() } - val postActions = rememberPostActions(context, urlLauncher, navController, viewModel) + val postActions = remember { PostActions(context, urlLauncher, navController, viewModel) } 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 9ba8aabc..2b55eb77 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 @@ -9,6 +9,7 @@ package dev.msfjarvis.claw.android.ui.screens import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material3.Scaffold import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.navigation.compose.NavHost @@ -17,11 +18,11 @@ import androidx.navigation.compose.rememberNavController import androidx.navigation.toRoute import androidx.paging.compose.collectAsLazyPagingItems import com.deliveryhero.whetstone.compose.injectedViewModel +import dev.msfjarvis.claw.android.ui.PostActions import dev.msfjarvis.claw.android.ui.lists.SearchList import dev.msfjarvis.claw.android.ui.navigation.Comments import dev.msfjarvis.claw.android.ui.navigation.Search import dev.msfjarvis.claw.android.ui.navigation.User -import dev.msfjarvis.claw.android.ui.rememberPostActions import dev.msfjarvis.claw.android.viewmodel.ClawViewModel import dev.msfjarvis.claw.common.comments.CommentsPage import dev.msfjarvis.claw.common.comments.HTMLConverter @@ -36,8 +37,9 @@ fun SearchScreen( modifier: Modifier = Modifier, viewModel: ClawViewModel = injectedViewModel(), ) { + val context = LocalContext.current val navController = rememberNavController() - val postActions = rememberPostActions(LocalContext.current, urlLauncher, navController, viewModel) + val postActions = remember { PostActions(context, urlLauncher, navController, viewModel) } val listState = rememberLazyListState() val searchResults = viewModel.searchResults.collectAsLazyPagingItems() Scaffold(modifier = modifier) { contentPadding ->