@@ -13,8 +13,11 @@ import com.record.login.navigation.LoginRoute
13
13
import com.record.login.navigation.SignupRoute
14
14
import com.record.model.VideoType
15
15
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
17
18
import com.record.profile.navigation.navigateProfile
19
+ import com.record.setting.navigate.navigateSetting
20
+ import com.record.upload.navigation.navigateToUpload
18
21
import com.record.video.navigation.navigateVideo
19
22
import com.record.video.navigation.navigateVideoDetail
20
23
@@ -26,33 +29,20 @@ internal class MainNavigator(
26
29
@Composable get() = navController
27
30
.currentBackStackEntryAsState().value?.destination
28
31
29
- private var _currentTab : MainNavTab ? = null
30
-
31
32
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)
40
36
41
37
fun navigate (tab : MainNavTab ) {
42
38
val navOptions = navOptions {
43
39
popUpTo(HomeRoute .route) {
44
40
saveState = true
45
41
}
46
42
launchSingleTop = true
47
- restoreState = when (tab) {
48
- MainNavTab .HOME -> false
49
- MainNavTab .VIDEO -> true
50
- MainNavTab .MYPAGE -> true
51
- }
43
+ restoreState = true
52
44
}
53
45
54
- _currentTab = tab
55
-
56
46
when (tab) {
57
47
MainNavTab .HOME -> navController.navigateHome(navOptions)
58
48
MainNavTab .VIDEO -> navController.navigateVideo(navOptions)
@@ -78,7 +68,7 @@ internal class MainNavigator(
78
68
79
69
fun navigateSignUp () {
80
70
navController.navigate(SignupRoute .route) {
81
- popUpTo(navController.graph.startDestinationId ) {
71
+ popUpTo(navController.graph.id ) {
82
72
inclusive = true
83
73
}
84
74
}
@@ -96,6 +86,9 @@ internal class MainNavigator(
96
86
userId = userId,
97
87
)
98
88
}
89
+ fun navigateToUpload () {
90
+ navController.navigateToUpload()
91
+ }
99
92
100
93
fun navigateToFollowing () {
101
94
navController.navigateToFollowing()
@@ -114,11 +107,8 @@ internal class MainNavigator(
114
107
}
115
108
116
109
fun popBackStackIfNotHome () {
117
- val homeRoute = HomeRoute .route
118
- if (navController.currentDestination?.route == homeRoute) {
110
+ if (! isSameCurrentDestination(HomeRoute .route)) {
119
111
navController.popBackStack()
120
- } else {
121
- navController.popBackStack(homeRoute, inclusive = false )
122
112
}
123
113
}
124
114
@@ -128,9 +118,7 @@ internal class MainNavigator(
128
118
@Composable
129
119
fun shouldShowBottomBar (): Boolean {
130
120
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
134
122
}
135
123
}
136
124
@@ -139,4 +127,4 @@ internal fun rememberMainNavigator(
139
127
navController : NavHostController = rememberNavController(),
140
128
): MainNavigator = remember(navController) {
141
129
MainNavigator (navController)
142
- }
130
+ }
0 commit comments