Skip to content

Commit

Permalink
feature #866: separate navGraph
Browse files Browse the repository at this point in the history
  • Loading branch information
chattymin authored and l2hyunwoo committed Sep 24, 2024
1 parent 59b9b90 commit a9734b0
Show file tree
Hide file tree
Showing 7 changed files with 94 additions and 45 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -34,17 +34,15 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.navigation.NavHostController
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
import androidx.navigation.toRoute
import org.sopt.official.designsystem.SoptTheme
import org.sopt.official.feature.fortune.component.FortuneTopBar
import org.sopt.official.feature.fortune.feature.fortundDetail.FortuneDetail
import org.sopt.official.feature.fortune.feature.fortundDetail.FortuneDetailRoute
import org.sopt.official.feature.fortune.feature.fortuneAmulet.FortuneAmulet
import org.sopt.official.feature.fortune.feature.fortuneAmulet.FortuneAmuletRoute
import org.sopt.official.feature.fortune.feature.home.Home
import org.sopt.official.feature.fortune.feature.home.HomeRoute
import org.sopt.official.feature.fortune.feature.fortundDetail.navigation.FortuneDetail
import org.sopt.official.feature.fortune.feature.fortundDetail.navigation.fortuneDetailNavGraph
import org.sopt.official.feature.fortune.feature.fortuneAmulet.navigation.FortuneAmulet
import org.sopt.official.feature.fortune.feature.fortuneAmulet.navigation.fortuneAmuletNavGraph
import org.sopt.official.feature.fortune.feature.home.navigation.Home
import org.sopt.official.feature.fortune.feature.home.navigation.homeNavGraph

@Composable
fun MainScreen(
Expand All @@ -68,34 +66,26 @@ fun MainScreen(
navController = navController,
startDestination = Home
) {
composable<Home> {
HomeRoute(
paddingValue = paddingValue,
navigateToFortuneDetail = { date ->
navController.navigate(FortuneDetail(date))
}
)
}
homeNavGraph(
paddingValue = paddingValue,
navigateToFortuneDetail = { date ->
navController.navigate(FortuneDetail(date))
}
)

composable<FortuneDetail> { backStackEntry ->
val items = backStackEntry.toRoute<FortuneDetail>()
FortuneDetailRoute(
paddingValue = paddingValue,
date = items.date,
navigateToFortuneAmulet = {
navController.navigate(FortuneAmulet)
}
)
}
fortuneDetailNavGraph(
paddingValue = paddingValue,
navigateToFortuneAmulet = {
navController.navigate(FortuneAmulet)
}
)

composable<FortuneAmulet> {
FortuneAmuletRoute(
paddingValue = paddingValue,
navigateToHome = {
// TODO: Navigate to Home
}
)
}
fortuneAmuletNavGraph(
paddingValue = paddingValue,
navigateToHome = {
// TODO: Navigate to Home
}
)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,8 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import kotlinx.serialization.Serializable
import org.sopt.official.designsystem.SoptTheme

@Serializable
data class FortuneDetail(val date: String)

@Composable
fun FortuneDetailRoute(
paddingValue: PaddingValues,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package org.sopt.official.feature.fortune.feature.fortundDetail.navigation

import androidx.compose.foundation.layout.PaddingValues
import androidx.navigation.NavGraphBuilder
import androidx.navigation.compose.composable
import androidx.navigation.toRoute
import kotlinx.serialization.Serializable
import org.sopt.official.feature.fortune.feature.fortundDetail.FortuneDetailRoute

@Serializable
data class FortuneDetail(val date: String)

fun NavGraphBuilder.fortuneDetailNavGraph(
paddingValue: PaddingValues,
navigateToFortuneAmulet: () -> Unit,
) {
composable<FortuneDetail> { backStackEntry ->
val items = backStackEntry.toRoute<FortuneDetail>()
FortuneDetailRoute(
paddingValue = paddingValue,
date = items.date,
navigateToFortuneAmulet = navigateToFortuneAmulet
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,6 @@ import kotlinx.serialization.Serializable
import org.sopt.official.designsystem.SoptTheme
import org.sopt.official.feature.fortune.component.CircleShapeBorderButton

@Serializable
data object FortuneAmulet

@Composable
internal fun FortuneAmuletRoute(
paddingValue: PaddingValues,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package org.sopt.official.feature.fortune.feature.fortuneAmulet.navigation

import androidx.compose.foundation.layout.PaddingValues
import androidx.navigation.NavGraphBuilder
import androidx.navigation.compose.composable
import kotlinx.serialization.Serializable
import org.sopt.official.feature.fortune.feature.fortuneAmulet.FortuneAmuletRoute

@Serializable
data object FortuneAmulet

fun NavGraphBuilder.fortuneAmuletNavGraph(
paddingValue: PaddingValues,
navigateToHome: () -> Unit,
) {
composable<FortuneAmulet> {
FortuneAmuletRoute(
paddingValue = paddingValue,
navigateToHome = navigateToHome
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -46,17 +46,13 @@ import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import kotlinx.serialization.Serializable
import org.sopt.official.designsystem.SoptTheme
import org.sopt.official.feature.fortune.R
import java.time.LocalDate
import java.time.format.DateTimeFormatter
import java.time.format.TextStyle
import java.util.Locale

@Serializable
data object Home

@Composable
internal fun HomeRoute(
paddingValue: PaddingValues,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package org.sopt.official.feature.fortune.feature.home.navigation

import androidx.compose.foundation.layout.PaddingValues
import androidx.navigation.NavGraphBuilder
import androidx.navigation.compose.composable
import kotlinx.serialization.Serializable
import org.sopt.official.feature.fortune.feature.fortuneAmulet.navigation.FortuneAmulet
import org.sopt.official.feature.fortune.feature.home.HomeRoute

@Serializable
data object Home

fun NavGraphBuilder.homeNavGraph(
paddingValue: PaddingValues,
navigateToFortuneDetail: (String) -> Unit,
) {
composable<FortuneAmulet> {
HomeRoute(
paddingValue = paddingValue,
navigateToFortuneDetail = navigateToFortuneDetail
)
}
}

0 comments on commit a9734b0

Please sign in to comment.