LobstersApp: lower coroutine scope further in the view tree

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
This commit is contained in:
Harsh Shandilya 2021-03-02 09:08:17 +05:30
parent e53471f85e
commit f7c6330910
No known key found for this signature in database
GPG key ID: 366D7BBAD1031E80

View file

@ -31,7 +31,6 @@ import kotlinx.coroutines.launch
@Composable @Composable
fun LobstersApp() { fun LobstersApp() {
val viewModel: LobstersViewModel = viewModel() val viewModel: LobstersViewModel = viewModel()
val coroutineScope = rememberCoroutineScope()
val navController = rememberNavController() val navController = rememberNavController()
val hottestPosts = viewModel.posts.collectAsLazyPagingItems() val hottestPosts = viewModel.posts.collectAsLazyPagingItems()
val savedPosts by viewModel.savedPosts.collectAsState() val savedPosts by viewModel.savedPosts.collectAsState()
@ -47,10 +46,8 @@ fun LobstersApp() {
popUpTo(navController.graph.startDestination) { inclusive = false } popUpTo(navController.graph.startDestination) { inclusive = false }
} }
} }
val jumpToIndex: (Int) -> Unit = { val jumpToIndex: suspend (Int) -> Unit = {
coroutineScope.launch { hottestPostsListState.animateScrollToItem(it)
hottestPostsListState.animateScrollToItem(it)
}
} }
Scaffold( Scaffold(
@ -87,8 +84,9 @@ fun LobstersApp() {
fun LobstersBottomNav( fun LobstersBottomNav(
currentDestination: Destination, currentDestination: Destination,
navigateToDestination: (destination: Destination) -> Unit, navigateToDestination: (destination: Destination) -> Unit,
jumpToIndex: (index: Int) -> Unit, jumpToIndex: suspend (index: Int) -> Unit,
) { ) {
val coroutineScope = rememberCoroutineScope()
BottomNavigation(modifier = Modifier.testTag("LobstersBottomNav")) { BottomNavigation(modifier = Modifier.testTag("LobstersBottomNav")) {
Destination.values().forEach { screen -> Destination.values().forEach { screen ->
BottomNavigationItem( BottomNavigationItem(
@ -106,7 +104,7 @@ fun LobstersBottomNav(
if (screen != currentDestination) { if (screen != currentDestination) {
navigateToDestination(screen) navigateToDestination(screen)
} else if (screen.route == Destination.Hottest.route) { } else if (screen.route == Destination.Hottest.route) {
jumpToIndex(0) coroutineScope.launch { jumpToIndex(0) }
} }
} }
) )