diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/navigation/HomeNavHost.kt b/app/src/main/java/com/pixelized/rplexicon/ui/navigation/HomeNavHost.kt index 3a602a0..c842c3a 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/navigation/HomeNavHost.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/navigation/HomeNavHost.kt @@ -49,6 +49,9 @@ fun HomeNavHost( navHostController: NavHostController = rememberNavController(), bottomBarItems: List = rememberBottomBarItems(navHostController), startDestination: String = LEXICON_LIST_ROUTE, + lexiconListState: LazyListState, + questListState: LazyListState, + locationListState: LazyListState, ) { CompositionLocalProvider( LocalSnack provides remember { SnackbarHostState() }, @@ -105,9 +108,9 @@ fun HomeNavHost( navController = navHostController, startDestination = startDestination, ) { - composableLexicon() - composableQuests() - composableLocations() + composableLexicon(lazyListState = lexiconListState) + composableQuests(lazyListState = questListState) + composableLocations(lazyListState = locationListState) } } } diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/navigation/ScreenNavHost.kt b/app/src/main/java/com/pixelized/rplexicon/ui/navigation/ScreenNavHost.kt index 6de415d..57d4add 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/navigation/ScreenNavHost.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/navigation/ScreenNavHost.kt @@ -9,7 +9,6 @@ import androidx.navigation.NavHostController import androidx.navigation.NavOptionsBuilder import androidx.navigation.compose.NavHost import androidx.navigation.compose.rememberNavController -import com.pixelized.rplexicon.ui.navigation.screens.AUTHENTICATION_ROUTE import com.pixelized.rplexicon.ui.navigation.screens.HOME_ROUTE import com.pixelized.rplexicon.ui.navigation.screens.composableAuthentication import com.pixelized.rplexicon.ui.navigation.screens.composableCharacterSheet @@ -41,7 +40,11 @@ fun ScreenNavHost( startDestination = startDestination, ) { composableAuthentication() - composableHome() + composableHome( + lexiconListState = lexiconListState, + questListState = questListState, + locationListState = locationListState, + ) composableLexiconDetail() composableLexiconSearch() composableQuestDetail() diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/navigation/pages/ComposableLexicon.kt b/app/src/main/java/com/pixelized/rplexicon/ui/navigation/pages/ComposableLexicon.kt index a7c8a16..14d054b 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/navigation/pages/ComposableLexicon.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/navigation/pages/ComposableLexicon.kt @@ -12,12 +12,16 @@ private const val ROUTE = "lexicon" const val LEXICON_LIST_ROUTE = ROUTE -fun NavGraphBuilder.composableLexicon() { +fun NavGraphBuilder.composableLexicon( + lazyListState: LazyListState, +) { animatedComposable( route = LEXICON_LIST_ROUTE, animation = NavigationAnimation.Fade, ) { - LexiconScreen() + LexiconScreen( + lazyListState = lazyListState + ) } } diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/navigation/pages/ComposableLocation.kt b/app/src/main/java/com/pixelized/rplexicon/ui/navigation/pages/ComposableLocation.kt index a3dd713..4d660a2 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/navigation/pages/ComposableLocation.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/navigation/pages/ComposableLocation.kt @@ -12,12 +12,16 @@ private const val ROUTE = "locations" const val LOCATION_LIST_ROUTE = ROUTE -fun NavGraphBuilder.composableLocations() { +fun NavGraphBuilder.composableLocations( + lazyListState: LazyListState, +) { animatedComposable( route = LOCATION_LIST_ROUTE, animation = NavigationAnimation.Fade, ) { - LocationScreen() + LocationScreen( + lazyListState = lazyListState, + ) } } diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/navigation/pages/ComposableQuestList.kt b/app/src/main/java/com/pixelized/rplexicon/ui/navigation/pages/ComposableQuestList.kt index bb28be7..39af5e7 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/navigation/pages/ComposableQuestList.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/navigation/pages/ComposableQuestList.kt @@ -12,12 +12,16 @@ private const val ROUTE = "quests" const val QUEST_LIST_ROUTE = ROUTE -fun NavGraphBuilder.composableQuests() { +fun NavGraphBuilder.composableQuests( + lazyListState: LazyListState, +) { animatedComposable( route = QUEST_LIST_ROUTE, animation = NavigationAnimation.Fade, ) { - QuestListScreen() + QuestListScreen( + lazyListState = lazyListState, + ) } } diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/navigation/screens/ComposableHome.kt b/app/src/main/java/com/pixelized/rplexicon/ui/navigation/screens/ComposableHome.kt index e46a59d..c329268 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/navigation/screens/ComposableHome.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/navigation/screens/ComposableHome.kt @@ -1,5 +1,6 @@ package com.pixelized.rplexicon.ui.navigation.screens +import androidx.compose.foundation.lazy.LazyListState import androidx.navigation.NavGraphBuilder import androidx.navigation.NavHostController import androidx.navigation.NavOptionsBuilder @@ -11,12 +12,20 @@ private const val ROUTE = "home" const val HOME_ROUTE = ROUTE -fun NavGraphBuilder.composableHome() { +fun NavGraphBuilder.composableHome( + lexiconListState: LazyListState, + questListState: LazyListState, + locationListState: LazyListState, +) { animatedComposable( route = HOME_ROUTE, animation = NavigationAnimation.Push, ) { - HomeNavHost() + HomeNavHost( + lexiconListState = lexiconListState, + questListState = questListState, + locationListState = locationListState, + ) } } diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/lexicon/detail/LexiconDetailScreen.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/lexicon/detail/LexiconDetailScreen.kt index c402f30..3a8d3cb 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/lexicon/detail/LexiconDetailScreen.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/lexicon/detail/LexiconDetailScreen.kt @@ -18,6 +18,7 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.sizeIn +import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.items import androidx.compose.foundation.rememberScrollState diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/lexicon/list/LexiconScreen.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/lexicon/list/LexiconScreen.kt index 9a2f4db..4f00823 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/lexicon/list/LexiconScreen.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/lexicon/list/LexiconScreen.kt @@ -52,11 +52,11 @@ import kotlinx.coroutines.launch @OptIn(ExperimentalMaterialApi::class) @Composable fun LexiconScreen( - viewModel: LexiconViewModel = hiltViewModel() + viewModel: LexiconViewModel = hiltViewModel(), + lazyListState: LazyListState, ) { val scope = rememberCoroutineScope() val screen = LocalScreenNavHost.current - val lazyListState = rememberLazyListState() val refresh = rememberPullRefreshState( refreshing = false, diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/location/list/LocationScreen.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/location/list/LocationScreen.kt index 6817bf1..6cdc390 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/location/list/LocationScreen.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/location/list/LocationScreen.kt @@ -38,10 +38,10 @@ import kotlinx.coroutines.launch @Composable fun LocationScreen( viewModel: LocationViewModel = hiltViewModel(), + lazyListState: LazyListState, ) { - val scope = rememberCoroutineScope() - val lazyListState = rememberLazyListState() val screen = LocalScreenNavHost.current + val scope = rememberCoroutineScope() val refresh = rememberPullRefreshState( refreshing = false, diff --git a/app/src/main/java/com/pixelized/rplexicon/ui/screens/quest/list/QuestListScreen.kt b/app/src/main/java/com/pixelized/rplexicon/ui/screens/quest/list/QuestListScreen.kt index 51db41c..931569e 100644 --- a/app/src/main/java/com/pixelized/rplexicon/ui/screens/quest/list/QuestListScreen.kt +++ b/app/src/main/java/com/pixelized/rplexicon/ui/screens/quest/list/QuestListScreen.kt @@ -38,10 +38,10 @@ import kotlinx.coroutines.launch @Composable fun QuestListScreen( viewModel: QuestListViewModel = hiltViewModel(), + lazyListState: LazyListState, ) { val scope = rememberCoroutineScope() val screen = LocalScreenNavHost.current - val lazyListState = rememberLazyListState() val refresh = rememberPullRefreshState( refreshing = false,