diff --git a/feature/home/src/main/java/com/record/home/HomeScreen.kt b/feature/home/src/main/java/com/record/home/HomeScreen.kt index 96daa60a..3b30e125 100644 --- a/feature/home/src/main/java/com/record/home/HomeScreen.kt +++ b/feature/home/src/main/java/com/record/home/HomeScreen.kt @@ -67,6 +67,7 @@ fun HomeRoute( modifier: Modifier = Modifier, viewModel: HomeViewModel = hiltViewModel(), navigateToVideoDetail: (VideoType, Long, String?, Long) -> Unit, + navigateToUpload: () -> Unit = {}, ) { val state by viewModel.uiState.collectAsStateWithLifecycle() @@ -74,9 +75,7 @@ fun HomeRoute( viewModel.getVideos() viewModel.sideEffect.collectLatest { sideEffect -> when (sideEffect) { - HomeSideEffect.navigateToUpload -> { - } - + HomeSideEffect.navigateToUpload -> navigateToUpload() is HomeSideEffect.navigateToVideo -> { navigateToVideoDetail(sideEffect.type, sideEffect.id, sideEffect.keyword, 0) } diff --git a/feature/home/src/main/java/com/record/home/navigation/HomeNavigation.kt b/feature/home/src/main/java/com/record/home/navigation/HomeNavigation.kt index ab0ebdc0..80af0764 100644 --- a/feature/home/src/main/java/com/record/home/navigation/HomeNavigation.kt +++ b/feature/home/src/main/java/com/record/home/navigation/HomeNavigation.kt @@ -17,12 +17,14 @@ fun NavGraphBuilder.homeNavGraph( padding: PaddingValues, modifier: Modifier = Modifier, navigateToVideoDetail: (VideoType, Long, String?, Long) -> Unit, + navigateToUpload: () -> Unit = {}, ) { composable(route = HomeRoute.route) { HomeRoute( padding = padding, modifier = modifier, navigateToVideoDetail = navigateToVideoDetail, + navigateToUpload = navigateToUpload ) } } diff --git a/feature/navigator/src/main/java/com/record/navigator/MainNavigator.kt b/feature/navigator/src/main/java/com/record/navigator/MainNavigator.kt index f891b7bd..7efa6745 100644 --- a/feature/navigator/src/main/java/com/record/navigator/MainNavigator.kt +++ b/feature/navigator/src/main/java/com/record/navigator/MainNavigator.kt @@ -13,8 +13,11 @@ import com.record.login.navigation.LoginRoute import com.record.login.navigation.SignupRoute import com.record.model.VideoType import com.record.mypage.navigation.navigateMypage -import com.record.profile.navigation.ProfileRoute +import com.record.mypage.navigation.navigateToFollower +import com.record.mypage.navigation.navigateToFollowing import com.record.profile.navigation.navigateProfile +import com.record.setting.navigate.navigateSetting +import com.record.upload.navigation.navigateToUpload import com.record.video.navigation.navigateVideo import com.record.video.navigation.navigateVideoDetail @@ -26,17 +29,10 @@ internal class MainNavigator( @Composable get() = navController .currentBackStackEntryAsState().value?.destination - private var _currentTab: MainNavTab? = null - val currentTab: MainNavTab? - @Composable get() { - val currentRoute = currentDestination?.route - val mainTab = currentRoute?.let(MainNavTab::find) - if (mainTab != null) { - _currentTab = mainTab - } - return _currentTab - } + @Composable get() = currentDestination + ?.route + ?.let(MainNavTab::find) fun navigate(tab: MainNavTab) { val navOptions = navOptions { @@ -44,15 +40,9 @@ internal class MainNavigator( saveState = true } launchSingleTop = true - restoreState = when (tab) { - MainNavTab.HOME -> false - MainNavTab.VIDEO -> true - MainNavTab.MYPAGE -> true - } + restoreState = true } - _currentTab = tab - when (tab) { MainNavTab.HOME -> navController.navigateHome(navOptions) MainNavTab.VIDEO -> navController.navigateVideo(navOptions) @@ -78,7 +68,7 @@ internal class MainNavigator( fun navigateSignUp() { navController.navigate(SignupRoute.route) { - popUpTo(navController.graph.startDestinationId) { + popUpTo(navController.graph.id) { inclusive = true } } @@ -96,6 +86,9 @@ internal class MainNavigator( userId = userId, ) } + fun navigateToUpload() { + navController.navigateToUpload() + } fun navigateToFollowing() { navController.navigateToFollowing() @@ -114,11 +107,8 @@ internal class MainNavigator( } fun popBackStackIfNotHome() { - val homeRoute = HomeRoute.route - if (navController.currentDestination?.route == homeRoute) { + if (!isSameCurrentDestination(HomeRoute.route)) { navController.popBackStack() - } else { - navController.popBackStack(homeRoute, inclusive = false) } } @@ -128,9 +118,7 @@ internal class MainNavigator( @Composable fun shouldShowBottomBar(): Boolean { val currentRoute = currentDestination?.route ?: return false - return currentRoute in MainNavTab || currentRoute in InMainNavTab || currentRoute.contains("detail") || currentRoute.contains( - ProfileRoute.route, - ) + return currentRoute in MainNavTab } } @@ -139,4 +127,4 @@ internal fun rememberMainNavigator( navController: NavHostController = rememberNavController(), ): MainNavigator = remember(navController) { MainNavigator(navController) -} +} \ No newline at end of file diff --git a/feature/navigator/src/main/java/com/record/navigator/MainScreen.kt b/feature/navigator/src/main/java/com/record/navigator/MainScreen.kt index 7c7924fa..81d56107 100644 --- a/feature/navigator/src/main/java/com/record/navigator/MainScreen.kt +++ b/feature/navigator/src/main/java/com/record/navigator/MainScreen.kt @@ -38,6 +38,7 @@ import androidx.navigation.compose.NavHost import androidx.navigation.compose.currentBackStackEntryAsState import com.record.designsystem.component.snackbar.RecordySnackBar import com.record.designsystem.theme.RecordyTheme +import com.record.home.HomeSideEffect.navigateToUpload import com.record.home.navigation.homeNavGraph import com.record.login.navigation.loginNavGraph import com.record.mypage.navigation.mypageNavGraph @@ -83,6 +84,7 @@ internal fun MainScreen( homeNavGraph( padding = innerPadding, navigateToVideoDetail = navigator::navigateVideoDetail, + navigateToUpload = navigator::navigateToUpload ) profileNavGraph( @@ -98,7 +100,6 @@ internal fun MainScreen( uploadNavGraph( padding = innerPadding, - navigateSelectedVideo = navigator::navigateSelectedVideo, ) videoNavGraph( diff --git a/feature/upload/src/main/java/com/record/upload/navigation/UploadNavigation.kt b/feature/upload/src/main/java/com/record/upload/navigation/UploadNavigation.kt index a4d7962f..51f018ae 100644 --- a/feature/upload/src/main/java/com/record/upload/navigation/UploadNavigation.kt +++ b/feature/upload/src/main/java/com/record/upload/navigation/UploadNavigation.kt @@ -11,8 +11,8 @@ import androidx.navigation.compose.composable import com.record.upload.SelectedVideoRoute import com.record.upload.VideoPickerRoute -fun NavController.navigateUpload(navOptions: NavOptions) { - navigate(UploadRoute.ROUTE, navOptions) +fun NavController.navigateToUpload() { + navigate(UploadRoute.ROUTE) } @RequiresApi(Build.VERSION_CODES.TIRAMISU)