From 906cfb5e43501a647aa1f816276aa1bc6afe074e Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Thu, 29 Oct 2020 16:22:10 +0530 Subject: [PATCH 1/3] Fix pagination Signed-off-by: Harsh Shandilya --- app/src/main/java/dev/msfjarvis/lobsters/MainActivity.kt | 5 +---- app/src/main/java/dev/msfjarvis/lobsters/ui/HottestPosts.kt | 3 +-- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/dev/msfjarvis/lobsters/MainActivity.kt b/app/src/main/java/dev/msfjarvis/lobsters/MainActivity.kt index 05003017..f8df0b1d 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/MainActivity.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/MainActivity.kt @@ -10,7 +10,6 @@ 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 @@ -53,8 +52,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,7 +89,7 @@ fun LobstersApp( ) { NavHost(navController, startDestination = Destination.Hottest.route) { composable(Destination.Hottest.route) { - HottestPosts(lastIndex = lastIndex, urlLauncher = urlLauncher , viewModel = viewModel) + HottestPosts(urlLauncher = urlLauncher, viewModel = viewModel) } composable(Destination.Saved.route) { SavedPosts(urlLauncher = urlLauncher, 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..48b754b1 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/ui/HottestPosts.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/ui/HottestPosts.kt @@ -13,7 +13,6 @@ import dev.msfjarvis.lobsters.urllauncher.UrlLauncher @Composable fun HottestPosts( - lastIndex: Int, urlLauncher: UrlLauncher, viewModel: LobstersViewModel, ) { @@ -28,7 +27,7 @@ fun HottestPosts( state = listState, modifier = Modifier.padding(horizontal = 8.dp) ) { index, item -> - if (lastIndex == index) { + if (posts.lastIndex == index) { viewModel.getMorePosts() } LobstersItem( From ca77d3cf2ad4b5ba295f842771ed3f992c4fd1a7 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Thu, 29 Oct 2020 16:25:12 +0530 Subject: [PATCH 2/3] Move our UrlLauncherAmbient to individual composables Signed-off-by: Harsh Shandilya --- app/src/main/java/dev/msfjarvis/lobsters/MainActivity.kt | 8 +++----- .../main/java/dev/msfjarvis/lobsters/ui/HottestPosts.kt | 4 ++-- app/src/main/java/dev/msfjarvis/lobsters/ui/SavedPosts.kt | 4 ++-- .../msfjarvis/lobsters/urllauncher/UrlLauncherAmbient.kt | 5 +++++ 4 files changed, 12 insertions(+), 9 deletions(-) create mode 100644 app/src/main/java/dev/msfjarvis/lobsters/urllauncher/UrlLauncherAmbient.kt diff --git a/app/src/main/java/dev/msfjarvis/lobsters/MainActivity.kt b/app/src/main/java/dev/msfjarvis/lobsters/MainActivity.kt index f8df0b1d..6b53657f 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/MainActivity.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/MainActivity.kt @@ -9,7 +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.getValue import androidx.compose.ui.platform.setContent import androidx.navigation.compose.KEY_ROUTE @@ -26,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 @@ -89,10 +87,10 @@ fun LobstersApp( ) { NavHost(navController, startDestination = Destination.Hottest.route) { composable(Destination.Hottest.route) { - HottestPosts(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 48b754b1..6e5708fb 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/ui/HottestPosts.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/ui/HottestPosts.kt @@ -9,15 +9,15 @@ 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( - urlLauncher: UrlLauncher, viewModel: LobstersViewModel, ) { val posts by viewModel.posts.collectAsState() val listState = rememberLazyListState() + val urlLauncher = UrlLauncherAmbient.current if (posts.isEmpty()) { EmptyList(saved = false) 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..4705f9ee 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,15 @@ 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, ) { val posts by viewModel.savedPosts.collectAsState() val listState = rememberLazyListState() + val urlLauncher = UrlLauncherAmbient.current if (posts.isEmpty()) { EmptyList(saved = true) 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") } From 43fb668c7dd01185b1387d9d82e33dcc20d36bcb Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Thu, 29 Oct 2020 16:27:12 +0530 Subject: [PATCH 3/3] ui: Add Modifier params to [Hottest|Saved]Posts composables Signed-off-by: Harsh Shandilya --- app/src/main/java/dev/msfjarvis/lobsters/ui/HottestPosts.kt | 3 ++- app/src/main/java/dev/msfjarvis/lobsters/ui/SavedPosts.kt | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) 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 6e5708fb..09f003c6 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/ui/HottestPosts.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/ui/HottestPosts.kt @@ -14,6 +14,7 @@ import dev.msfjarvis.lobsters.urllauncher.UrlLauncherAmbient @Composable fun HottestPosts( viewModel: LobstersViewModel, + modifier: Modifier = Modifier, ) { val posts by viewModel.posts.collectAsState() val listState = rememberLazyListState() @@ -25,7 +26,7 @@ fun HottestPosts( LazyColumnForIndexed( items = posts, state = listState, - modifier = Modifier.padding(horizontal = 8.dp) + modifier = Modifier.padding(horizontal = 8.dp).then(modifier) ) { index, item -> if (posts.lastIndex == index) { viewModel.getMorePosts() 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 4705f9ee..b1328f30 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/ui/SavedPosts.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/ui/SavedPosts.kt @@ -14,6 +14,7 @@ import dev.msfjarvis.lobsters.urllauncher.UrlLauncherAmbient @Composable fun SavedPosts( viewModel: LobstersViewModel, + modifier: Modifier = Modifier, ) { val posts by viewModel.savedPosts.collectAsState() val listState = rememberLazyListState() @@ -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,