Move our UrlLauncherAmbient to individual composables

Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
This commit is contained in:
Harsh Shandilya 2020-10-29 16:25:12 +05:30
parent 906cfb5e43
commit ca77d3cf2a
No known key found for this signature in database
GPG key ID: 366D7BBAD1031E80
4 changed files with 12 additions and 9 deletions

View file

@ -9,7 +9,6 @@ import androidx.compose.material.BottomNavigationItem
import androidx.compose.material.Scaffold import androidx.compose.material.Scaffold
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.Providers import androidx.compose.runtime.Providers
import androidx.compose.runtime.ambientOf
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.ui.platform.setContent import androidx.compose.ui.platform.setContent
import androidx.navigation.compose.KEY_ROUTE 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.LobstersTheme
import dev.msfjarvis.lobsters.ui.SavedPosts import dev.msfjarvis.lobsters.ui.SavedPosts
import dev.msfjarvis.lobsters.urllauncher.UrlLauncher import dev.msfjarvis.lobsters.urllauncher.UrlLauncher
import dev.msfjarvis.lobsters.urllauncher.UrlLauncherAmbient
import javax.inject.Inject import javax.inject.Inject
val UrlLauncherAmbient = ambientOf<UrlLauncher> { error("Needs to be provided") }
@AndroidEntryPoint @AndroidEntryPoint
class MainActivity : AppCompatActivity() { class MainActivity : AppCompatActivity() {
@Inject lateinit var urlLauncher: UrlLauncher @Inject lateinit var urlLauncher: UrlLauncher
@ -89,10 +87,10 @@ fun LobstersApp(
) { ) {
NavHost(navController, startDestination = Destination.Hottest.route) { NavHost(navController, startDestination = Destination.Hottest.route) {
composable(Destination.Hottest.route) { composable(Destination.Hottest.route) {
HottestPosts(urlLauncher = urlLauncher, viewModel = viewModel) HottestPosts(viewModel = viewModel)
} }
composable(Destination.Saved.route) { composable(Destination.Saved.route) {
SavedPosts(urlLauncher = urlLauncher, viewModel = viewModel) SavedPosts(viewModel = viewModel)
} }
} }
} }

View file

@ -9,15 +9,15 @@ import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import dev.msfjarvis.lobsters.data.LobstersViewModel import dev.msfjarvis.lobsters.data.LobstersViewModel
import dev.msfjarvis.lobsters.urllauncher.UrlLauncher import dev.msfjarvis.lobsters.urllauncher.UrlLauncherAmbient
@Composable @Composable
fun HottestPosts( fun HottestPosts(
urlLauncher: UrlLauncher,
viewModel: LobstersViewModel, viewModel: LobstersViewModel,
) { ) {
val posts by viewModel.posts.collectAsState() val posts by viewModel.posts.collectAsState()
val listState = rememberLazyListState() val listState = rememberLazyListState()
val urlLauncher = UrlLauncherAmbient.current
if (posts.isEmpty()) { if (posts.isEmpty()) {
EmptyList(saved = false) EmptyList(saved = false)

View file

@ -9,15 +9,15 @@ import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import dev.msfjarvis.lobsters.data.LobstersViewModel import dev.msfjarvis.lobsters.data.LobstersViewModel
import dev.msfjarvis.lobsters.urllauncher.UrlLauncher import dev.msfjarvis.lobsters.urllauncher.UrlLauncherAmbient
@Composable @Composable
fun SavedPosts( fun SavedPosts(
urlLauncher: UrlLauncher,
viewModel: LobstersViewModel, viewModel: LobstersViewModel,
) { ) {
val posts by viewModel.savedPosts.collectAsState() val posts by viewModel.savedPosts.collectAsState()
val listState = rememberLazyListState() val listState = rememberLazyListState()
val urlLauncher = UrlLauncherAmbient.current
if (posts.isEmpty()) { if (posts.isEmpty()) {
EmptyList(saved = true) EmptyList(saved = true)

View file

@ -0,0 +1,5 @@
package dev.msfjarvis.lobsters.urllauncher
import androidx.compose.runtime.ambientOf
val UrlLauncherAmbient = ambientOf<UrlLauncher> { error("Needs to be provided") }