Skip to content

Commit a1f85ac

Browse files
authored
Merge pull request #4 from jarroyoesp/feature/network
TASK- Network&Detail: Added:
2 parents c31d55f + 550531e commit a1f85ac

File tree

67 files changed

+3373
-181
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+3373
-181
lines changed

.idea/codeStyles/Project.xml

Lines changed: 117 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/codeStyles/codeStyleConfig.xml

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/gradle.xml

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/inspectionProfiles/Project_Default.xml

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ android {
2525
dependencies {
2626
// Modules
2727
implementation projects.modules.featureHome
28+
implementation projects.modules.libraryNavigation
29+
implementation projects.modules.libraryNetwork
2830
implementation projects.modules.libraryUi
2931

3032
implementation libs.androidx.core.ktx

app/src/main/java/com/jarroyo/composeapp/MainActivity.kt

Lines changed: 47 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,37 +6,69 @@ import androidx.activity.compose.setContent
66
import androidx.compose.foundation.layout.fillMaxSize
77
import androidx.compose.material3.MaterialTheme
88
import androidx.compose.material3.Surface
9+
import androidx.compose.runtime.Composable
10+
import androidx.compose.runtime.LaunchedEffect
911
import androidx.compose.ui.Modifier
1012
import androidx.navigation.compose.rememberNavController
1113
import com.google.accompanist.navigation.material.ExperimentalMaterialNavigationApi
1214
import com.google.accompanist.navigation.material.ModalBottomSheetLayout
1315
import com.google.accompanist.navigation.material.rememberBottomSheetNavigator
1416
import com.jarroyo.composeapp.ui.navigation.NavGraph
1517
import com.jarroyo.composeapp.ui.theme.ComposeAppTheme
18+
import com.jarroyo.library.navigation.api.navigator.AppNavigator
19+
import com.jarroyo.library.navigation.api.navigator.NavigatorEvent
1620
import dagger.hilt.android.AndroidEntryPoint
21+
import kotlinx.coroutines.flow.launchIn
22+
import kotlinx.coroutines.flow.onEach
23+
import timber.log.Timber
24+
import javax.inject.Inject
1725

1826
@AndroidEntryPoint
1927
class MainActivity : ComponentActivity() {
20-
@OptIn(ExperimentalMaterialNavigationApi::class)
28+
@Inject
29+
lateinit var appNavigator: AppNavigator
30+
2131
override fun onCreate(savedInstanceState: Bundle?) {
2232
super.onCreate(savedInstanceState)
2333
setContent {
2434
ComposeAppTheme {
25-
// A surface container using the 'background' color from the theme
26-
Surface(
27-
modifier = Modifier.fillMaxSize(),
28-
color = MaterialTheme.colorScheme.background,
29-
) {
30-
val bottomSheetNavigator = rememberBottomSheetNavigator()
31-
val navController = rememberNavController(bottomSheetNavigator)
32-
ModalBottomSheetLayout(
33-
bottomSheetNavigator = bottomSheetNavigator,
34-
sheetBackgroundColor = MaterialTheme.colorScheme.background,
35-
) {
36-
NavGraph(navController = navController)
37-
}
38-
}
35+
MainScreen(appNavigator)
3936
}
4037
}
4138
}
4239
}
40+
41+
@OptIn(ExperimentalMaterialNavigationApi::class)
42+
@Composable
43+
private fun MainScreen(
44+
appNavigator: AppNavigator,
45+
) {
46+
val bottomSheetNavigator = rememberBottomSheetNavigator()
47+
val navHostController = rememberNavController(bottomSheetNavigator)
48+
LaunchedEffect(navHostController) {
49+
appNavigator.destinations.onEach { event ->
50+
Timber.d("backQueue = ${navHostController.backQueue.map { "route = ${it.destination.route}" }}")
51+
when (event) {
52+
is NavigatorEvent.Directions -> navHostController.navigate(
53+
event.destination,
54+
event.builder,
55+
).also { Timber.d("Navigate to ${event.destination}") }
56+
is NavigatorEvent.HandleDeepLink -> TODO()
57+
is NavigatorEvent.NavigateBack -> TODO()
58+
is NavigatorEvent.NavigateUp -> TODO()
59+
}
60+
}.launchIn(this)
61+
}
62+
// A surface container using the 'background' color from the theme
63+
Surface(
64+
modifier = Modifier.fillMaxSize(),
65+
color = MaterialTheme.colorScheme.background,
66+
) {
67+
ModalBottomSheetLayout(
68+
bottomSheetNavigator = bottomSheetNavigator,
69+
sheetBackgroundColor = MaterialTheme.colorScheme.background,
70+
) {
71+
NavGraph(navController = navHostController)
72+
}
73+
}
74+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.jarroyo.composeapp.di
2+
3+
import dagger.Module
4+
import dagger.hilt.InstallIn
5+
import dagger.hilt.components.SingletonComponent
6+
7+
@Module
8+
@InstallIn(SingletonComponent::class)
9+
object AppModule

app/src/main/java/com/jarroyo/composeapp/ui/navigation/NavGraph.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ import androidx.navigation.NavGraphBuilder
55
import androidx.navigation.NavHostController
66
import androidx.navigation.compose.NavHost
77
import androidx.navigation.compose.composable
8-
import com.jarroyo.feature.home.HomeScreen
8+
import com.jarroyo.feature.home.ui.HomeScreen
9+
import com.jarroyo.feature.home.ui.rocketdetail.RocketDetailScreen
10+
import com.jarroyo.library.navigation.api.destination.Screens
911

1012
@Composable
1113
fun NavGraph(navController: NavHostController) {
@@ -19,6 +21,8 @@ fun NavGraph(navController: NavHostController) {
1921
}
2022

2123
fun NavGraphBuilder.addComposableDestinations() {
22-
val destination = Screens.HomeScreen.route
23-
composable(destination) { HomeScreen() }
24+
val homeDestination = Screens.HomeScreen.route
25+
val rocketDetailDestination = Screens.RocketDetailScreen.route
26+
composable(homeDestination) { HomeScreen() }
27+
composable(rocketDetailDestination) { RocketDetailScreen() }
2428
}

app/src/main/java/com/jarroyo/composeapp/ui/navigation/Screens.kt

Lines changed: 0 additions & 5 deletions
This file was deleted.

0 commit comments

Comments
 (0)