mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-18 05:37:02 +05:30
Move our UrlLauncherAmbient to individual composables
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
This commit is contained in:
parent
906cfb5e43
commit
ca77d3cf2a
4 changed files with 12 additions and 9 deletions
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
package dev.msfjarvis.lobsters.urllauncher
|
||||||
|
|
||||||
|
import androidx.compose.runtime.ambientOf
|
||||||
|
|
||||||
|
val UrlLauncherAmbient = ambientOf<UrlLauncher> { error("Needs to be provided") }
|
Loading…
Add table
Add a link
Reference in a new issue