Skip to content

Commit 6a75d71

Browse files
lsakeeSangwook123
authored andcommitted
[feat] #62 set navigator
1 parent 8e759be commit 6a75d71

File tree

5 files changed

+23
-33
lines changed

5 files changed

+23
-33
lines changed

feature/home/src/main/java/com/record/home/HomeScreen.kt

+2-3
Original file line numberDiff line numberDiff line change
@@ -67,16 +67,15 @@ fun HomeRoute(
6767
modifier: Modifier = Modifier,
6868
viewModel: HomeViewModel = hiltViewModel(),
6969
navigateToVideoDetail: (VideoType, Long, String?, Long) -> Unit,
70+
navigateToUpload: () -> Unit = {},
7071
) {
7172
val state by viewModel.uiState.collectAsStateWithLifecycle()
7273

7374
LaunchedEffectWithLifecycle {
7475
viewModel.getVideos()
7576
viewModel.sideEffect.collectLatest { sideEffect ->
7677
when (sideEffect) {
77-
HomeSideEffect.navigateToUpload -> {
78-
}
79-
78+
HomeSideEffect.navigateToUpload -> navigateToUpload()
8079
is HomeSideEffect.navigateToVideo -> {
8180
navigateToVideoDetail(sideEffect.type, sideEffect.id, sideEffect.keyword, 0)
8281
}

feature/home/src/main/java/com/record/home/navigation/HomeNavigation.kt

+2
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,14 @@ fun NavGraphBuilder.homeNavGraph(
1717
padding: PaddingValues,
1818
modifier: Modifier = Modifier,
1919
navigateToVideoDetail: (VideoType, Long, String?, Long) -> Unit,
20+
navigateToUpload: () -> Unit = {},
2021
) {
2122
composable(route = HomeRoute.route) {
2223
HomeRoute(
2324
padding = padding,
2425
modifier = modifier,
2526
navigateToVideoDetail = navigateToVideoDetail,
27+
navigateToUpload = navigateToUpload
2628
)
2729
}
2830
}

feature/navigator/src/main/java/com/record/navigator/MainNavigator.kt

+15-27
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,11 @@ import com.record.login.navigation.LoginRoute
1313
import com.record.login.navigation.SignupRoute
1414
import com.record.model.VideoType
1515
import com.record.mypage.navigation.navigateMypage
16-
import com.record.profile.navigation.ProfileRoute
16+
import com.record.mypage.navigation.navigateToFollower
17+
import com.record.mypage.navigation.navigateToFollowing
1718
import com.record.profile.navigation.navigateProfile
19+
import com.record.setting.navigate.navigateSetting
20+
import com.record.upload.navigation.navigateToUpload
1821
import com.record.video.navigation.navigateVideo
1922
import com.record.video.navigation.navigateVideoDetail
2023

@@ -26,33 +29,20 @@ internal class MainNavigator(
2629
@Composable get() = navController
2730
.currentBackStackEntryAsState().value?.destination
2831

29-
private var _currentTab: MainNavTab? = null
30-
3132
val currentTab: MainNavTab?
32-
@Composable get() {
33-
val currentRoute = currentDestination?.route
34-
val mainTab = currentRoute?.let(MainNavTab::find)
35-
if (mainTab != null) {
36-
_currentTab = mainTab
37-
}
38-
return _currentTab
39-
}
33+
@Composable get() = currentDestination
34+
?.route
35+
?.let(MainNavTab::find)
4036

4137
fun navigate(tab: MainNavTab) {
4238
val navOptions = navOptions {
4339
popUpTo(HomeRoute.route) {
4440
saveState = true
4541
}
4642
launchSingleTop = true
47-
restoreState = when (tab) {
48-
MainNavTab.HOME -> false
49-
MainNavTab.VIDEO -> true
50-
MainNavTab.MYPAGE -> true
51-
}
43+
restoreState = true
5244
}
5345

54-
_currentTab = tab
55-
5646
when (tab) {
5747
MainNavTab.HOME -> navController.navigateHome(navOptions)
5848
MainNavTab.VIDEO -> navController.navigateVideo(navOptions)
@@ -78,7 +68,7 @@ internal class MainNavigator(
7868

7969
fun navigateSignUp() {
8070
navController.navigate(SignupRoute.route) {
81-
popUpTo(navController.graph.startDestinationId) {
71+
popUpTo(navController.graph.id) {
8272
inclusive = true
8373
}
8474
}
@@ -96,6 +86,9 @@ internal class MainNavigator(
9686
userId = userId,
9787
)
9888
}
89+
fun navigateToUpload() {
90+
navController.navigateToUpload()
91+
}
9992

10093
fun navigateToFollowing() {
10194
navController.navigateToFollowing()
@@ -114,11 +107,8 @@ internal class MainNavigator(
114107
}
115108

116109
fun popBackStackIfNotHome() {
117-
val homeRoute = HomeRoute.route
118-
if (navController.currentDestination?.route == homeRoute) {
110+
if (!isSameCurrentDestination(HomeRoute.route)) {
119111
navController.popBackStack()
120-
} else {
121-
navController.popBackStack(homeRoute, inclusive = false)
122112
}
123113
}
124114

@@ -128,9 +118,7 @@ internal class MainNavigator(
128118
@Composable
129119
fun shouldShowBottomBar(): Boolean {
130120
val currentRoute = currentDestination?.route ?: return false
131-
return currentRoute in MainNavTab || currentRoute in InMainNavTab || currentRoute.contains("detail") || currentRoute.contains(
132-
ProfileRoute.route,
133-
)
121+
return currentRoute in MainNavTab
134122
}
135123
}
136124

@@ -139,4 +127,4 @@ internal fun rememberMainNavigator(
139127
navController: NavHostController = rememberNavController(),
140128
): MainNavigator = remember(navController) {
141129
MainNavigator(navController)
142-
}
130+
}

feature/navigator/src/main/java/com/record/navigator/MainScreen.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import androidx.navigation.compose.NavHost
3838
import androidx.navigation.compose.currentBackStackEntryAsState
3939
import com.record.designsystem.component.snackbar.RecordySnackBar
4040
import com.record.designsystem.theme.RecordyTheme
41+
import com.record.home.HomeSideEffect.navigateToUpload
4142
import com.record.home.navigation.homeNavGraph
4243
import com.record.login.navigation.loginNavGraph
4344
import com.record.mypage.navigation.mypageNavGraph
@@ -83,6 +84,7 @@ internal fun MainScreen(
8384
homeNavGraph(
8485
padding = innerPadding,
8586
navigateToVideoDetail = navigator::navigateVideoDetail,
87+
navigateToUpload = navigator::navigateToUpload
8688
)
8789

8890
profileNavGraph(
@@ -98,7 +100,6 @@ internal fun MainScreen(
98100

99101
uploadNavGraph(
100102
padding = innerPadding,
101-
navigateSelectedVideo = navigator::navigateSelectedVideo,
102103
)
103104

104105
videoNavGraph(

feature/upload/src/main/java/com/record/upload/navigation/UploadNavigation.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ import androidx.navigation.compose.composable
1111
import com.record.upload.SelectedVideoRoute
1212
import com.record.upload.VideoPickerRoute
1313

14-
fun NavController.navigateUpload(navOptions: NavOptions) {
15-
navigate(UploadRoute.ROUTE, navOptions)
14+
fun NavController.navigateToUpload() {
15+
navigate(UploadRoute.ROUTE)
1616
}
1717

1818
@RequiresApi(Build.VERSION_CODES.TIRAMISU)

0 commit comments

Comments
 (0)