diff --git a/app/src/main/java/dev/msfjarvis/lobsters/MainActivity.kt b/app/src/main/java/dev/msfjarvis/lobsters/MainActivity.kt index 05003017..6b53657f 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/MainActivity.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/MainActivity.kt @@ -9,8 +9,6 @@ import androidx.compose.material.BottomNavigationItem import androidx.compose.material.Scaffold import androidx.compose.runtime.Composable import androidx.compose.runtime.Providers -import androidx.compose.runtime.ambientOf -import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.ui.platform.setContent import androidx.navigation.compose.KEY_ROUTE @@ -27,10 +25,9 @@ import dev.msfjarvis.lobsters.ui.HottestPosts import dev.msfjarvis.lobsters.ui.LobstersTheme import dev.msfjarvis.lobsters.ui.SavedPosts import dev.msfjarvis.lobsters.urllauncher.UrlLauncher +import dev.msfjarvis.lobsters.urllauncher.UrlLauncherAmbient import javax.inject.Inject -val UrlLauncherAmbient = ambientOf { error("Needs to be provided") } - @AndroidEntryPoint class MainActivity : AppCompatActivity() { @Inject lateinit var urlLauncher: UrlLauncher @@ -53,8 +50,6 @@ fun LobstersApp( viewModel: LobstersViewModel ) { val urlLauncher = UrlLauncherAmbient.current - val posts = viewModel.posts.collectAsState() - val lastIndex = posts.value.lastIndex val navController = rememberNavController() val destinations = arrayOf(Destination.Hottest, Destination.Saved) @@ -92,10 +87,10 @@ fun LobstersApp( ) { NavHost(navController, startDestination = Destination.Hottest.route) { composable(Destination.Hottest.route) { - HottestPosts(lastIndex = lastIndex, urlLauncher = urlLauncher , viewModel = viewModel) + HottestPosts(viewModel = viewModel) } composable(Destination.Saved.route) { - SavedPosts(urlLauncher = urlLauncher, viewModel = viewModel) + SavedPosts(viewModel = viewModel) } } } diff --git a/app/src/main/java/dev/msfjarvis/lobsters/ui/HottestPosts.kt b/app/src/main/java/dev/msfjarvis/lobsters/ui/HottestPosts.kt index f3ad7f26..09f003c6 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/ui/HottestPosts.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/ui/HottestPosts.kt @@ -9,16 +9,16 @@ import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import dev.msfjarvis.lobsters.data.LobstersViewModel -import dev.msfjarvis.lobsters.urllauncher.UrlLauncher +import dev.msfjarvis.lobsters.urllauncher.UrlLauncherAmbient @Composable fun HottestPosts( - lastIndex: Int, - urlLauncher: UrlLauncher, viewModel: LobstersViewModel, + modifier: Modifier = Modifier, ) { val posts by viewModel.posts.collectAsState() val listState = rememberLazyListState() + val urlLauncher = UrlLauncherAmbient.current if (posts.isEmpty()) { EmptyList(saved = false) @@ -26,9 +26,9 @@ fun HottestPosts( LazyColumnForIndexed( items = posts, state = listState, - modifier = Modifier.padding(horizontal = 8.dp) + modifier = Modifier.padding(horizontal = 8.dp).then(modifier) ) { index, item -> - if (lastIndex == index) { + if (posts.lastIndex == index) { viewModel.getMorePosts() } LobstersItem( diff --git a/app/src/main/java/dev/msfjarvis/lobsters/ui/SavedPosts.kt b/app/src/main/java/dev/msfjarvis/lobsters/ui/SavedPosts.kt index 3998a8f4..b1328f30 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/ui/SavedPosts.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/ui/SavedPosts.kt @@ -9,15 +9,16 @@ import androidx.compose.runtime.getValue import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import dev.msfjarvis.lobsters.data.LobstersViewModel -import dev.msfjarvis.lobsters.urllauncher.UrlLauncher +import dev.msfjarvis.lobsters.urllauncher.UrlLauncherAmbient @Composable fun SavedPosts( - urlLauncher: UrlLauncher, viewModel: LobstersViewModel, + modifier: Modifier = Modifier, ) { val posts by viewModel.savedPosts.collectAsState() val listState = rememberLazyListState() + val urlLauncher = UrlLauncherAmbient.current if (posts.isEmpty()) { EmptyList(saved = true) @@ -25,7 +26,7 @@ fun SavedPosts( LazyColumnFor( items = posts, state = listState, - modifier = Modifier.padding(horizontal = 8.dp) + modifier = Modifier.padding(horizontal = 8.dp).then(modifier) ) { item -> LobstersItem( post = item, diff --git a/app/src/main/java/dev/msfjarvis/lobsters/urllauncher/UrlLauncherAmbient.kt b/app/src/main/java/dev/msfjarvis/lobsters/urllauncher/UrlLauncherAmbient.kt new file mode 100644 index 00000000..e17df796 --- /dev/null +++ b/app/src/main/java/dev/msfjarvis/lobsters/urllauncher/UrlLauncherAmbient.kt @@ -0,0 +1,5 @@ +package dev.msfjarvis.lobsters.urllauncher + +import androidx.compose.runtime.ambientOf + +val UrlLauncherAmbient = ambientOf { error("Needs to be provided") }