refactor(android): workaround ContentEmitterReturningValues lint

This commit is contained in:
Harsh Shandilya 2024-10-02 20:26:04 +05:30
parent fc45376b39
commit 7d31979221
3 changed files with 48 additions and 51 deletions

View file

@ -10,8 +10,6 @@ import android.content.Context
import android.content.ContextWrapper import android.content.ContextWrapper
import android.content.Intent import android.content.Intent
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.navigation.NavController import androidx.navigation.NavController
import com.slack.eithernet.ApiResult import com.slack.eithernet.ApiResult
import dev.msfjarvis.claw.android.ui.navigation.Comments import dev.msfjarvis.claw.android.ui.navigation.Comments
@ -31,56 +29,53 @@ fun Context.getActivity(): ComponentActivity? {
} }
} }
@Composable fun PostActions(
fun rememberPostActions(
context: Context, context: Context,
urlLauncher: UrlLauncher, urlLauncher: UrlLauncher,
navController: NavController, navController: NavController,
viewModel: ClawViewModel, viewModel: ClawViewModel,
): PostActions { ): PostActions {
return remember { return object : PostActions {
object : PostActions { override fun viewPost(postId: String, postUrl: String, commentsUrl: String) {
override fun viewPost(postId: String, postUrl: String, commentsUrl: String) { viewModel.markPostAsRead(postId)
viewModel.markPostAsRead(postId) urlLauncher.openUri(postUrl.ifEmpty { commentsUrl })
urlLauncher.openUri(postUrl.ifEmpty { commentsUrl }) }
}
override fun viewComments(postId: String) {
override fun viewComments(postId: String) { viewModel.markPostAsRead(postId)
viewModel.markPostAsRead(postId) navController.navigate(Comments(postId))
navController.navigate(Comments(postId)) }
}
override fun viewCommentsPage(post: UIPost) {
override fun viewCommentsPage(post: UIPost) { urlLauncher.openUri(post.commentsUrl)
urlLauncher.openUri(post.commentsUrl) }
}
override fun toggleSave(post: UIPost) {
override fun toggleSave(post: UIPost) { viewModel.toggleSave(post)
viewModel.toggleSave(post) }
}
override fun share(post: UIPost) {
override fun share(post: UIPost) { val sendIntent: Intent =
val sendIntent: Intent = Intent().apply {
Intent().apply { action = Intent.ACTION_SEND
action = Intent.ACTION_SEND putExtra(Intent.EXTRA_TEXT, post.url.ifEmpty { post.commentsUrl })
putExtra(Intent.EXTRA_TEXT, post.url.ifEmpty { post.commentsUrl }) putExtra(Intent.EXTRA_TITLE, post.title)
putExtra(Intent.EXTRA_TITLE, post.title) type = "text/plain"
type = "text/plain" }
} val shareIntent = Intent.createChooser(sendIntent, null)
val shareIntent = Intent.createChooser(sendIntent, null) context.startActivity(shareIntent)
context.startActivity(shareIntent) }
}
override fun isPostRead(post: UIPost): Boolean = viewModel.isPostRead(post)
override fun isPostRead(post: UIPost): Boolean = viewModel.isPostRead(post)
override fun isPostSaved(post: UIPost): Boolean = viewModel.isPostSaved(post)
override fun isPostSaved(post: UIPost): Boolean = viewModel.isPostSaved(post)
override suspend fun getComments(postId: String): UIPost {
override suspend fun getComments(postId: String): UIPost { return viewModel.getPostComments(postId)
return viewModel.getPostComments(postId) }
}
override suspend fun getLinkMetadata(url: String): LinkMetadata {
override suspend fun getLinkMetadata(url: String): LinkMetadata { return viewModel.getLinkMetadata(url)
return viewModel.getLinkMetadata(url)
}
} }
} }
} }

View file

@ -63,6 +63,7 @@ import dev.chrisbanes.haze.haze
import dev.msfjarvis.claw.android.MainActivity import dev.msfjarvis.claw.android.MainActivity
import dev.msfjarvis.claw.android.R import dev.msfjarvis.claw.android.R
import dev.msfjarvis.claw.android.SearchActivity 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.ClawNavigationBar
import dev.msfjarvis.claw.android.ui.decorations.ClawNavigationRail import dev.msfjarvis.claw.android.ui.decorations.ClawNavigationRail
import dev.msfjarvis.claw.android.ui.decorations.NavigationItem 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.User
import dev.msfjarvis.claw.android.ui.navigation.any import dev.msfjarvis.claw.android.ui.navigation.any
import dev.msfjarvis.claw.android.ui.navigation.none 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.android.viewmodel.ClawViewModel
import dev.msfjarvis.claw.common.comments.CommentsPage import dev.msfjarvis.claw.common.comments.CommentsPage
import dev.msfjarvis.claw.common.comments.HTMLConverter import dev.msfjarvis.claw.common.comments.HTMLConverter
@ -109,7 +109,7 @@ fun LobstersPostsScreen(
val currentDestination = navBackStackEntry?.destination val currentDestination = navBackStackEntry?.destination
val coroutineScope = rememberCoroutineScope() val coroutineScope = rememberCoroutineScope()
val snackbarHostState = remember { SnackbarHostState() } val snackbarHostState = remember { SnackbarHostState() }
val postActions = rememberPostActions(context, urlLauncher, navController, viewModel) val postActions = remember { PostActions(context, urlLauncher, navController, viewModel) }
val hazeState = remember { HazeState() } val hazeState = remember { HazeState() }
val hottestPosts = viewModel.hottestPosts.collectAsLazyPagingItems() val hottestPosts = viewModel.hottestPosts.collectAsLazyPagingItems()

View file

@ -9,6 +9,7 @@ package dev.msfjarvis.claw.android.ui.screens
import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.material3.Scaffold import androidx.compose.material3.Scaffold
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.navigation.compose.NavHost import androidx.navigation.compose.NavHost
@ -17,11 +18,11 @@ import androidx.navigation.compose.rememberNavController
import androidx.navigation.toRoute import androidx.navigation.toRoute
import androidx.paging.compose.collectAsLazyPagingItems import androidx.paging.compose.collectAsLazyPagingItems
import com.deliveryhero.whetstone.compose.injectedViewModel 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.lists.SearchList
import dev.msfjarvis.claw.android.ui.navigation.Comments import dev.msfjarvis.claw.android.ui.navigation.Comments
import dev.msfjarvis.claw.android.ui.navigation.Search import dev.msfjarvis.claw.android.ui.navigation.Search
import dev.msfjarvis.claw.android.ui.navigation.User 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.android.viewmodel.ClawViewModel
import dev.msfjarvis.claw.common.comments.CommentsPage import dev.msfjarvis.claw.common.comments.CommentsPage
import dev.msfjarvis.claw.common.comments.HTMLConverter import dev.msfjarvis.claw.common.comments.HTMLConverter
@ -36,8 +37,9 @@ fun SearchScreen(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
viewModel: ClawViewModel = injectedViewModel(), viewModel: ClawViewModel = injectedViewModel(),
) { ) {
val context = LocalContext.current
val navController = rememberNavController() val navController = rememberNavController()
val postActions = rememberPostActions(LocalContext.current, urlLauncher, navController, viewModel) val postActions = remember { PostActions(context, urlLauncher, navController, viewModel) }
val listState = rememberLazyListState() val listState = rememberLazyListState()
val searchResults = viewModel.searchResults.collectAsLazyPagingItems() val searchResults = viewModel.searchResults.collectAsLazyPagingItems()
Scaffold(modifier = modifier) { contentPadding -> Scaffold(modifier = modifier) { contentPadding ->