From ae5c8c5064435da688c14d70faa6675abd9c1177 Mon Sep 17 00:00:00 2001 From: ikseong00 Date: Sun, 30 Mar 2025 16:47:37 +0900 Subject: [PATCH 01/24] =?UTF-8?q?[feat]:=20Onboarding=20NavGraph=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84(#56)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../navigation/OnboardingNavigation.kt | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt diff --git a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt new file mode 100644 index 00000000..174e80a7 --- /dev/null +++ b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt @@ -0,0 +1,40 @@ +package com.kuit.ourmenu.ui.onboarding.navigation + +import androidx.compose.foundation.layout.PaddingValues +import androidx.navigation.NavController +import androidx.navigation.NavGraphBuilder +import androidx.navigation.compose.composable +import com.kuit.ourmenu.ui.navigator.Routes +import com.kuit.ourmenu.ui.onboarding.screen.LandingScreen +import com.kuit.ourmenu.ui.onboarding.screen.LoginScreen +import com.kuit.ourmenu.ui.onboarding.screen.signup.SignupEmailScreen +import com.kuit.ourmenu.ui.onboarding.screen.signup.SignupMealTimeScreen +import com.kuit.ourmenu.ui.onboarding.screen.signup.SignupPasswordScreen +import com.kuit.ourmenu.ui.onboarding.screen.signup.SignupVerifyScreen +import com.kuit.ourmenu.ui.onboarding.viewmodel.SignupViewModel + +fun NavGraphBuilder.onboardingNavGraph( + padding: PaddingValues, + viewModel : SignupViewModel, + navController: NavController +) { + + composable { + LandingScreen(navController = navController) + } + composable { + LoginScreen(navController = navController) + } + composable { + SignupEmailScreen(navController = navController, viewModel = viewModel) + } + composable { + SignupPasswordScreen(navController = navController, viewModel = viewModel) + } + composable { + SignupMealTimeScreen(navController = navController, viewModel = viewModel) + } + composable { + SignupVerifyScreen(navController = navController, viewModel = viewModel) + } +} \ No newline at end of file From f0aa9c0fbc35f6782f2fdaae377b7a76b3fb8a8b Mon Sep 17 00:00:00 2001 From: ikseong00 Date: Sun, 30 Mar 2025 17:14:56 +0900 Subject: [PATCH 02/24] =?UTF-8?q?[feat]:=20Onboarding=20navigate=20?= =?UTF-8?q?=EC=9D=B4=EB=8F=99=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84=20?= =?UTF-8?q?(#56)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../navigation/OnboardingNavigation.kt | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt index 174e80a7..30a59b6a 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt @@ -13,6 +13,27 @@ import com.kuit.ourmenu.ui.onboarding.screen.signup.SignupPasswordScreen import com.kuit.ourmenu.ui.onboarding.screen.signup.SignupVerifyScreen import com.kuit.ourmenu.ui.onboarding.viewmodel.SignupViewModel +fun NavController.navigateToLogin() { + navigate(Routes.Login) +} + +fun NavController.navigateToSignupEmail() { + navigate(Routes.SignupEmail) +} + +fun NavController.navigateToSignupPassword() { + navigate(Routes.SignupPassword) +} + +fun NavController.navigateToSignupMealTime() { + navigate(Routes.SignupMealTime) +} + +fun NavController.navigateToSignupVerify() { + navigate(Routes.SignupVerify) +} + + fun NavGraphBuilder.onboardingNavGraph( padding: PaddingValues, viewModel : SignupViewModel, From b55224f6a65f78e95eccedb5e04b0480174467a1 Mon Sep 17 00:00:00 2001 From: ikseong00 Date: Sun, 30 Mar 2025 19:34:25 +0900 Subject: [PATCH 03/24] =?UTF-8?q?[refactor]:=20LandingScreen=20navigate=20?= =?UTF-8?q?=ED=95=A8=EC=88=98=20=EC=B6=94=EA=B0=80=20(#56)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kuit/ourmenu/ui/navigator/MainNavGraph.kt | 42 ++++++---------- .../navigation/OnboardingNavigation.kt | 22 ++++++++- .../ui/onboarding/screen/LandingScreen.kt | 49 ++++++++++--------- 3 files changed, 61 insertions(+), 52 deletions(-) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavGraph.kt b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavGraph.kt index 6b148220..0688f8da 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavGraph.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavGraph.kt @@ -1,18 +1,17 @@ package com.kuit.ourmenu.ui.navigator import androidx.compose.runtime.Composable +import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable -import androidx.navigation.compose.navigation import com.kuit.ourmenu.ui.home.screen.HomeScreen -import com.kuit.ourmenu.ui.onboarding.screen.LandingScreen -import com.kuit.ourmenu.ui.onboarding.screen.LoginScreen -import com.kuit.ourmenu.ui.onboarding.screen.signup.SignupEmailScreen -import com.kuit.ourmenu.ui.onboarding.screen.signup.SignupMealTimeScreen -import com.kuit.ourmenu.ui.onboarding.screen.signup.SignupPasswordScreen -import com.kuit.ourmenu.ui.onboarding.screen.signup.SignupVerifyScreen +import com.kuit.ourmenu.ui.onboarding.navigation.navigateOnboardingToHome +import com.kuit.ourmenu.ui.onboarding.navigation.navigateToLogin +import com.kuit.ourmenu.ui.onboarding.navigation.navigateToSignupEmail +import com.kuit.ourmenu.ui.onboarding.navigation.navigateToSignupMealTime +import com.kuit.ourmenu.ui.onboarding.navigation.onboardingNavGraph import com.kuit.ourmenu.ui.onboarding.viewmodel.SignupViewModel @Composable @@ -24,26 +23,13 @@ fun MainNavGraph(navController: NavHostController) { HomeScreen(navController = navController) } - navigation(startDestination = Routes.Landing) { - - composable { - LandingScreen(navController = navController) - } - composable { - LoginScreen(navController = navController) - } - composable { - SignupEmailScreen(navController = navController, viewModel = viewModel) - } - composable { - SignupPasswordScreen(navController = navController, viewModel = viewModel) - } - composable { - SignupMealTimeScreen(navController = navController, viewModel = viewModel) - } - composable { - SignupVerifyScreen(navController = navController, viewModel = viewModel) - } - } + onboardingNavGraph( + padding = androidx.compose.foundation.layout.PaddingValues(0.dp), + viewModel = viewModel, + navigateOnboardingToHome = navController::navigateOnboardingToHome, + navigateToLogin = navController::navigateToLogin, + navigateToSignupEmail = navController::navigateToSignupEmail, + navigateToSignupMealTime = navController::navigateToSignupMealTime, + ) } } \ No newline at end of file diff --git a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt index 30a59b6a..19d9ba87 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt @@ -11,6 +11,7 @@ import com.kuit.ourmenu.ui.onboarding.screen.signup.SignupEmailScreen import com.kuit.ourmenu.ui.onboarding.screen.signup.SignupMealTimeScreen import com.kuit.ourmenu.ui.onboarding.screen.signup.SignupPasswordScreen import com.kuit.ourmenu.ui.onboarding.screen.signup.SignupVerifyScreen +import com.kuit.ourmenu.ui.onboarding.viewmodel.LandingViewModel import com.kuit.ourmenu.ui.onboarding.viewmodel.SignupViewModel fun NavController.navigateToLogin() { @@ -33,15 +34,32 @@ fun NavController.navigateToSignupVerify() { navigate(Routes.SignupVerify) } +fun NavController.navigateOnboardingToHome() { + navigate(Routes.Home) { + popUpTo(Routes.Onboarding) { + inclusive = true + } + } +} + fun NavGraphBuilder.onboardingNavGraph( padding: PaddingValues, viewModel : SignupViewModel, - navController: NavController + navigateOnboardingToHome: () -> Unit, + navigateToLogin: () -> Unit, + navigateToSignupEmail: () -> Unit, + navigateToSignupMealTime: () -> Unit, ) { composable { - LandingScreen(navController = navController) + LandingScreen( + padding = padding, + navigateToHome = navigateOnboardingToHome, + navigateToLogin = navigateToLogin, + navigateToSignupEmail = navigateToSignupEmail, + navigateToSignupMealTime = navigateToSignupMealTime, + ) } composable { LoginScreen(navController = navController) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/screen/LandingScreen.kt b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/screen/LandingScreen.kt index 397fe3bf..f3bfc674 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/screen/LandingScreen.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/screen/LandingScreen.kt @@ -7,6 +7,7 @@ import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize @@ -37,11 +38,8 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle -import androidx.navigation.NavController -import androidx.navigation.compose.rememberNavController import com.kuit.ourmenu.R import com.kuit.ourmenu.ui.common.BottomFullWidthButton -import com.kuit.ourmenu.ui.navigator.Routes import com.kuit.ourmenu.ui.oauth.KakaoModule.getKakaoLogin import com.kuit.ourmenu.ui.onboarding.component.BottomFullWidthBorderButton import com.kuit.ourmenu.ui.onboarding.state.KakaoState @@ -57,7 +55,11 @@ import kotlinx.coroutines.launch @Composable fun LandingScreen( - navController: NavController, + padding: PaddingValues = PaddingValues(0.dp), + navigateToHome: () -> Unit, + navigateToLogin: () -> Unit, + navigateToSignupEmail: () -> Unit, + navigateToSignupMealTime: () -> Unit, viewModel: LandingViewModel = hiltViewModel() ) { val kakaoState by viewModel.kakaoState.collectAsStateWithLifecycle() @@ -69,13 +71,11 @@ fun LandingScreen( LaunchedEffect(kakaoState) { Log.d("KakaoModule", kakaoState.toString()) when (kakaoState) { - is KakaoState.Login -> navController.navigate(route = Routes.Home) { - popUpTo(Routes.Onboarding) { inclusive = true } - } + is KakaoState.Login -> navigateToHome() is KakaoState.Loading -> viewModel.signInWithKakao() - is KakaoState.Signup -> navController.navigate(route = Routes.SignupMealTime) + is KakaoState.Signup -> navigateToSignupMealTime() is KakaoState.Error -> { // 에러에 따라 snackbar 를 show 하면 됨 scope.launch { @@ -92,15 +92,16 @@ fun LandingScreen( Box( modifier = - Modifier - .fillMaxSize() - .padding(bottom = 18.dp), + Modifier + .fillMaxSize() + .padding(padding) + .padding(bottom = 18.dp), ) { Column( modifier = - Modifier - .fillMaxSize() - .padding(horizontal = 20.dp), + Modifier + .fillMaxSize() + .padding(horizontal = 20.dp), horizontalAlignment = Alignment.CenterHorizontally, ) { Image( @@ -139,13 +140,13 @@ fun LandingScreen( contentColor = NeutralWhite, text = stringResource(R.string.login) ) { - navController.navigate(route = Routes.Login) + navigateToLogin() } Spacer(modifier = Modifier.height(16.dp)) BottomFullWidthBorderButton { - navController.navigate(route = Routes.SignupEmail) + navigateToSignupEmail() } Box( @@ -198,9 +199,9 @@ fun LandingScreen( Box( modifier = - Modifier - .fillMaxSize() - .padding(bottom = 65.5.dp), + Modifier + .fillMaxSize() + .padding(bottom = 65.5.dp), contentAlignment = Alignment.BottomCenter, ) { Row { @@ -227,7 +228,11 @@ fun LandingScreen( @Composable @Preview(showBackground = true) private fun LandingScreenPreview() { - val navController = rememberNavController() - - LandingScreen(navController) + LandingScreen( + navigateToHome = {}, + navigateToLogin = {}, + navigateToSignupEmail = {}, + navigateToSignupMealTime = {}, + viewModel = hiltViewModel() + ) } \ No newline at end of file From 9890c59c631501c6bc156b72bdff3d52c34125f2 Mon Sep 17 00:00:00 2001 From: ikseong00 Date: Sun, 30 Mar 2025 19:41:11 +0900 Subject: [PATCH 04/24] =?UTF-8?q?[refactor]:=20LoginScreen=20navigate=20?= =?UTF-8?q?=ED=95=A8=EC=88=98=20=EC=B6=94=EA=B0=80=20(#56)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../navigation/OnboardingNavigation.kt | 8 ++++-- .../ui/onboarding/screen/LoginScreen.kt | 27 ++++++++----------- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt index 19d9ba87..a13062d9 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt @@ -45,7 +45,7 @@ fun NavController.navigateOnboardingToHome() { fun NavGraphBuilder.onboardingNavGraph( padding: PaddingValues, - viewModel : SignupViewModel, + viewModel: SignupViewModel, navigateOnboardingToHome: () -> Unit, navigateToLogin: () -> Unit, navigateToSignupEmail: () -> Unit, @@ -62,7 +62,11 @@ fun NavGraphBuilder.onboardingNavGraph( ) } composable { - LoginScreen(navController = navController) + LoginScreen( + navigateToHome = navigateOnboardingToHome, + navigateBack = navigateToLogin, + navigateToSignupEmail = navigateToSignupEmail, + ) } composable { SignupEmailScreen(navController = navController, viewModel = viewModel) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/screen/LoginScreen.kt b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/screen/LoginScreen.kt index 90c7d259..55b0c9dd 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/screen/LoginScreen.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/screen/LoginScreen.kt @@ -43,17 +43,13 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle -import androidx.navigation.NavController -import androidx.navigation.compose.rememberNavController import com.kuit.ourmenu.R import com.kuit.ourmenu.ui.common.BottomFullWidthButton import com.kuit.ourmenu.ui.common.OurSnackbarHost -import com.kuit.ourmenu.ui.navigator.Routes import com.kuit.ourmenu.ui.onboarding.component.BottomFullWidthBorderButton import com.kuit.ourmenu.ui.onboarding.component.LoginTextField import com.kuit.ourmenu.ui.onboarding.component.OnboardingTopAppBar import com.kuit.ourmenu.ui.onboarding.state.LoginState -import com.kuit.ourmenu.ui.onboarding.state.PasswordState import com.kuit.ourmenu.ui.onboarding.viewmodel.LoginViewModel import com.kuit.ourmenu.ui.theme.Neutral100 import com.kuit.ourmenu.ui.theme.Neutral300 @@ -68,7 +64,9 @@ import kotlin.math.roundToInt @Composable fun LoginScreen( - navController: NavController, + navigateToHome: () -> Unit, + navigateBack: () -> Unit, + navigateToSignupEmail: () -> Unit, viewModel: LoginViewModel = hiltViewModel() ) { val email by viewModel.email.collectAsStateWithLifecycle() @@ -85,12 +83,9 @@ fun LoginScreen( LaunchedEffect(loginState) { when (loginState) { - is LoginState.Success -> navController.navigate(route = Routes.Home) { - popUpTo(route = Routes.Onboarding) { inclusive = true } - } + is LoginState.Success -> navigateToHome() is LoginState.Error -> { - // 에러에 따라 snackbar 를 show 하면 됨 scope.launch { snackbarHostState.showSnackbar( message = viewModel.error.value ?: "", @@ -142,9 +137,7 @@ fun LoginScreen( Scaffold( topBar = { OnboardingTopAppBar( - onBackClick = { - navController.popBackStack() - }, + onBackClick = navigateBack, ) }, content = { innerPadding -> @@ -264,7 +257,7 @@ fun LoginScreen( Spacer(modifier = Modifier.height(24.dp)) BottomFullWidthBorderButton { - navController.navigate(route = Routes.SignupEmail) + navigateToSignupEmail() } } @@ -311,7 +304,9 @@ fun LoginScreen( @Preview(showBackground = true) @Composable private fun LoginScreenPreview() { - val navController = rememberNavController() - - LoginScreen(navController) + LoginScreen( + navigateToHome = {}, + navigateBack = {}, + navigateToSignupEmail = {} + ) } From 83162afe717f30ccb1aa3db396f73c66855ae236 Mon Sep 17 00:00:00 2001 From: ikseong00 Date: Sun, 30 Mar 2025 19:59:39 +0900 Subject: [PATCH 05/24] =?UTF-8?q?[refactor]:=20SignupEmailScreen=20navigat?= =?UTF-8?q?e=20=ED=95=A8=EC=88=98=20=EC=B6=94=EA=B0=80=20(#56)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kuit/ourmenu/ui/navigator/MainNavGraph.kt | 2 ++ .../navigation/OnboardingNavigation.kt | 7 ++++++- .../screen/signup/SignupEmailScreen.kt | 21 ++++++++----------- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavGraph.kt b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavGraph.kt index 0688f8da..9f8813f0 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavGraph.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavGraph.kt @@ -11,6 +11,7 @@ import com.kuit.ourmenu.ui.onboarding.navigation.navigateOnboardingToHome import com.kuit.ourmenu.ui.onboarding.navigation.navigateToLogin import com.kuit.ourmenu.ui.onboarding.navigation.navigateToSignupEmail import com.kuit.ourmenu.ui.onboarding.navigation.navigateToSignupMealTime +import com.kuit.ourmenu.ui.onboarding.navigation.navigateToSignupVerify import com.kuit.ourmenu.ui.onboarding.navigation.onboardingNavGraph import com.kuit.ourmenu.ui.onboarding.viewmodel.SignupViewModel @@ -29,6 +30,7 @@ fun MainNavGraph(navController: NavHostController) { navigateOnboardingToHome = navController::navigateOnboardingToHome, navigateToLogin = navController::navigateToLogin, navigateToSignupEmail = navController::navigateToSignupEmail, + navigateToSignupVerify = navController::navigateToSignupVerify, navigateToSignupMealTime = navController::navigateToSignupMealTime, ) } diff --git a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt index a13062d9..a11bf3a5 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt @@ -49,6 +49,7 @@ fun NavGraphBuilder.onboardingNavGraph( navigateOnboardingToHome: () -> Unit, navigateToLogin: () -> Unit, navigateToSignupEmail: () -> Unit, + navigateToSignupVerify: () -> Unit, navigateToSignupMealTime: () -> Unit, ) { @@ -69,7 +70,11 @@ fun NavGraphBuilder.onboardingNavGraph( ) } composable { - SignupEmailScreen(navController = navController, viewModel = viewModel) + SignupEmailScreen( + navigateToVerify = navigateToSignupVerify, + navigateBack = navigateToSignupEmail, + viewModel = viewModel + ) } composable { SignupPasswordScreen(navController = navController, viewModel = viewModel) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/screen/signup/SignupEmailScreen.kt b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/screen/signup/SignupEmailScreen.kt index 745a2959..40297217 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/screen/signup/SignupEmailScreen.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/screen/signup/SignupEmailScreen.kt @@ -23,12 +23,9 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle -import androidx.navigation.NavController -import androidx.navigation.compose.rememberNavController import com.kuit.ourmenu.R import com.kuit.ourmenu.ui.common.DisableBottomFullWidthButton import com.kuit.ourmenu.ui.common.OurSnackbarHost -import com.kuit.ourmenu.ui.navigator.Routes import com.kuit.ourmenu.ui.onboarding.component.EmailSpinner import com.kuit.ourmenu.ui.onboarding.component.LoginTextField import com.kuit.ourmenu.ui.onboarding.component.OnboardingTopAppBar @@ -41,13 +38,14 @@ import kotlinx.coroutines.launch @Composable fun SignupEmailScreen( - navController: NavController, + navigateToVerify: () -> Unit, + navigateBack: () -> Unit, viewModel: SignupViewModel = hiltViewModel() ) { val email by viewModel.email.collectAsStateWithLifecycle() val domain by viewModel.domain.collectAsStateWithLifecycle() - val enable = /*email.isNotEmpty() && domain.isNotEmpty()*/ true + val enable = email.isNotEmpty() && domain.isNotEmpty() val emailState by viewModel.emailState.collectAsStateWithLifecycle() val snackbarHostState = remember { SnackbarHostState() } @@ -56,7 +54,7 @@ fun SignupEmailScreen( LaunchedEffect(emailState) { when (emailState) { - is SignupState.Success -> navController.navigate(route = Routes.SignupVerify) + is SignupState.Success -> navigateToVerify() is SignupState.Error -> { scope.launch { snackbarHostState.showSnackbar( @@ -82,9 +80,7 @@ fun SignupEmailScreen( Scaffold( topBar = { OnboardingTopAppBar( - onBackClick = { - navController.navigateUp() - } + onBackClick = navigateBack ) }, modifier = Modifier @@ -193,7 +189,8 @@ fun EmailInputField( @Preview @Composable private fun SignupEmailScreenPreview() { - val navController = rememberNavController() - - SignupEmailScreen(navController) + SignupEmailScreen( + navigateToVerify = {}, + navigateBack = {} + ) } \ No newline at end of file From e2720ac6579e8127d14a701d6d37e8b4fdd3a5c7 Mon Sep 17 00:00:00 2001 From: ikseong00 Date: Sun, 30 Mar 2025 20:03:05 +0900 Subject: [PATCH 06/24] =?UTF-8?q?[refactor]:=20SignupPasswordScreen=20navi?= =?UTF-8?q?gate=20=ED=95=A8=EC=88=98=20=EC=B6=94=EA=B0=80=20(#56)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kuit/ourmenu/ui/navigator/MainNavGraph.kt | 1 + .../navigation/OnboardingNavigation.kt | 11 ++-- .../screen/signup/SignupPasswordScreen.kt | 52 +++++++++---------- 3 files changed, 33 insertions(+), 31 deletions(-) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavGraph.kt b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavGraph.kt index 9f8813f0..64e4212c 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavGraph.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavGraph.kt @@ -27,6 +27,7 @@ fun MainNavGraph(navController: NavHostController) { onboardingNavGraph( padding = androidx.compose.foundation.layout.PaddingValues(0.dp), viewModel = viewModel, + navigateBack = navController::navigateUp, navigateOnboardingToHome = navController::navigateOnboardingToHome, navigateToLogin = navController::navigateToLogin, navigateToSignupEmail = navController::navigateToSignupEmail, diff --git a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt index a11bf3a5..ecf24e5f 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt @@ -46,6 +46,7 @@ fun NavController.navigateOnboardingToHome() { fun NavGraphBuilder.onboardingNavGraph( padding: PaddingValues, viewModel: SignupViewModel, + navigateBack: () -> Unit, navigateOnboardingToHome: () -> Unit, navigateToLogin: () -> Unit, navigateToSignupEmail: () -> Unit, @@ -65,19 +66,23 @@ fun NavGraphBuilder.onboardingNavGraph( composable { LoginScreen( navigateToHome = navigateOnboardingToHome, - navigateBack = navigateToLogin, + navigateBack = navigateBack, navigateToSignupEmail = navigateToSignupEmail, ) } composable { SignupEmailScreen( navigateToVerify = navigateToSignupVerify, - navigateBack = navigateToSignupEmail, + navigateBack = navigateBack, viewModel = viewModel ) } composable { - SignupPasswordScreen(navController = navController, viewModel = viewModel) + SignupPasswordScreen( + navigateToMealTime = navigateToSignupMealTime, + navigateBack = navigateBack, + viewModel = viewModel + ) } composable { SignupMealTimeScreen(navController = navController, viewModel = viewModel) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/screen/signup/SignupPasswordScreen.kt b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/screen/signup/SignupPasswordScreen.kt index 887b855e..7146eee1 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/screen/signup/SignupPasswordScreen.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/screen/signup/SignupPasswordScreen.kt @@ -38,12 +38,9 @@ import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle -import androidx.navigation.NavController -import androidx.navigation.compose.rememberNavController import com.kuit.ourmenu.R import com.kuit.ourmenu.ui.common.DisableBottomFullWidthButton import com.kuit.ourmenu.ui.common.OurSnackbarHost -import com.kuit.ourmenu.ui.navigator.Routes import com.kuit.ourmenu.ui.onboarding.component.LoginTextField import com.kuit.ourmenu.ui.onboarding.component.OnboardingTopAppBar import com.kuit.ourmenu.ui.onboarding.state.PasswordState @@ -62,7 +59,8 @@ import kotlin.math.roundToInt @Composable fun SignupPasswordScreen( - navController: NavController, + navigateToMealTime: () -> Unit, + navigateBack: () -> Unit, viewModel: SignupViewModel = hiltViewModel() ) { val password by viewModel.password.collectAsStateWithLifecycle() @@ -117,7 +115,7 @@ fun SignupPasswordScreen( } PasswordState.Valid -> { - navController.navigate(route = Routes.SignupMealTime) + navigateToMealTime() } else -> {} @@ -129,19 +127,15 @@ fun SignupPasswordScreen( .fillMaxSize() .imePadding(), topBar = { - OnboardingTopAppBar( - onBackClick = { - navController.navigateUp() - } - ) + OnboardingTopAppBar(onBackClick = navigateBack) }, content = { innerPadding -> Column( modifier = - Modifier - .fillMaxSize() - .padding(innerPadding) - .padding(horizontal = 20.dp), + Modifier + .fillMaxSize() + .padding(innerPadding) + .padding(horizontal = 20.dp), ) { Text( text = stringResource(R.string.enter_password), @@ -174,7 +168,7 @@ fun SignupPasswordScreen( input = password, onTextChange = { viewModel.updatePassword(it) }, visualTransformation = - if (isPasswordVisible) VisualTransformation.None else PasswordVisualTransformation(), + if (isPasswordVisible) VisualTransformation.None else PasswordVisualTransformation(), ) Spacer(modifier = Modifier.height(8.dp)) @@ -205,14 +199,14 @@ fun SignupPasswordScreen( checked = isPasswordVisible, onCheckedChange = { isPasswordVisible = it }, modifier = - Modifier - .size(24.dp), + Modifier + .size(24.dp), colors = - CheckboxDefaults.colors( - checkmarkColor = NeutralWhite, - checkedColor = Primary500Main, - uncheckedColor = Neutral300, - ), + CheckboxDefaults.colors( + checkmarkColor = NeutralWhite, + checkedColor = Primary500Main, + uncheckedColor = Neutral300, + ), ) Text( @@ -238,9 +232,9 @@ fun SignupPasswordScreen( bottomBar = { Column( modifier = - Modifier - .fillMaxWidth() - .padding(20.dp), + Modifier + .fillMaxWidth() + .padding(20.dp), horizontalAlignment = Alignment.CenterHorizontally, ) { Box( @@ -265,6 +259,8 @@ fun SignupPasswordScreen( @Preview(showBackground = true) @Composable private fun SignupPasswordScreenPreview() { - val navController = rememberNavController() - SignupPasswordScreen(navController) -} + SignupPasswordScreen( + navigateToMealTime = {}, + navigateBack = {} + ) +} \ No newline at end of file From 2dcf0923feed3c09a09c461c7ac0a801c93099ea Mon Sep 17 00:00:00 2001 From: ikseong00 Date: Sun, 30 Mar 2025 20:05:33 +0900 Subject: [PATCH 07/24] =?UTF-8?q?[refactor]:=20SignupMealTimeScreen=20navi?= =?UTF-8?q?gate=20=ED=95=A8=EC=88=98=20=EC=B6=94=EA=B0=80=20(#56)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../navigation/OnboardingNavigation.kt | 6 +++- .../screen/signup/SignupMealTimeScreen.kt | 28 +++++++------------ 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt index ecf24e5f..6163f2e0 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt @@ -85,7 +85,11 @@ fun NavGraphBuilder.onboardingNavGraph( ) } composable { - SignupMealTimeScreen(navController = navController, viewModel = viewModel) + SignupMealTimeScreen( + navigateToHome = navigateToSignupVerify, + navigateBack = navigateBack, + viewModel = viewModel + ) } composable { SignupVerifyScreen(navController = navController, viewModel = viewModel) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/screen/signup/SignupMealTimeScreen.kt b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/screen/signup/SignupMealTimeScreen.kt index e0634247..e92fa44a 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/screen/signup/SignupMealTimeScreen.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/screen/signup/SignupMealTimeScreen.kt @@ -18,11 +18,8 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle -import androidx.navigation.NavController -import androidx.navigation.compose.rememberNavController import com.kuit.ourmenu.R import com.kuit.ourmenu.ui.common.DisableBottomFullWidthButton -import com.kuit.ourmenu.ui.navigator.Routes import com.kuit.ourmenu.ui.onboarding.component.MealTimeGrid import com.kuit.ourmenu.ui.onboarding.component.OnboardingTopAppBar import com.kuit.ourmenu.ui.onboarding.state.SignupState @@ -33,7 +30,8 @@ import com.kuit.ourmenu.ui.theme.ourMenuTypography @Composable fun SignupMealTimeScreen( - navController: NavController, + navigateToHome: () -> Unit, + navigateBack: () -> Unit, viewModel: SignupViewModel = hiltViewModel() ) { @@ -44,12 +42,8 @@ fun SignupMealTimeScreen( LaunchedEffect(signupState) { when (signupState) { - is SignupState.Success ->{ - navController.navigate(route = Routes.Home) { - popUpTo(Routes.Onboarding) { - inclusive = true - } - } + is SignupState.Success -> { + navigateToHome() } is SignupState.Error -> @@ -62,9 +56,7 @@ fun SignupMealTimeScreen( Scaffold( topBar = { OnboardingTopAppBar( - onBackClick = { - navController.navigateUp() - } + onBackClick = navigateBack ) }, modifier = Modifier @@ -128,9 +120,9 @@ fun SignupMealTimeScreen( widthDp = 360 ) @Composable -private fun SignupNicknameScreenPreview() { - val navController = rememberNavController() - - SignupMealTimeScreen(navController) - +private fun SignupMealTimeScreenPreview() { + SignupMealTimeScreen( + navigateToHome = {}, + navigateBack = {} + ) } \ No newline at end of file From 1cf793b6efb2889373130179d9154d3393b2c220 Mon Sep 17 00:00:00 2001 From: ikseong00 Date: Sun, 30 Mar 2025 20:08:19 +0900 Subject: [PATCH 08/24] =?UTF-8?q?[refactor]:=20SignupVerifyScreen=20naviga?= =?UTF-8?q?te=20=ED=95=A8=EC=88=98=20=EC=B6=94=EA=B0=80=20(#56)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kuit/ourmenu/ui/navigator/MainNavGraph.kt | 4 +++- .../navigation/OnboardingNavigation.kt | 12 ++++++---- .../screen/signup/SignupVerifyScreen.kt | 23 ++++++++----------- 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavGraph.kt b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavGraph.kt index 64e4212c..16d42601 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavGraph.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavGraph.kt @@ -11,6 +11,7 @@ import com.kuit.ourmenu.ui.onboarding.navigation.navigateOnboardingToHome import com.kuit.ourmenu.ui.onboarding.navigation.navigateToLogin import com.kuit.ourmenu.ui.onboarding.navigation.navigateToSignupEmail import com.kuit.ourmenu.ui.onboarding.navigation.navigateToSignupMealTime +import com.kuit.ourmenu.ui.onboarding.navigation.navigateToSignupPassword import com.kuit.ourmenu.ui.onboarding.navigation.navigateToSignupVerify import com.kuit.ourmenu.ui.onboarding.navigation.onboardingNavGraph import com.kuit.ourmenu.ui.onboarding.viewmodel.SignupViewModel @@ -32,7 +33,8 @@ fun MainNavGraph(navController: NavHostController) { navigateToLogin = navController::navigateToLogin, navigateToSignupEmail = navController::navigateToSignupEmail, navigateToSignupVerify = navController::navigateToSignupVerify, - navigateToSignupMealTime = navController::navigateToSignupMealTime, + navigateToSignupPassword = navController::navigateToSignupPassword, + navigateToSignupMealTime = navController::navigateToSignupMealTime ) } } \ No newline at end of file diff --git a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt index 6163f2e0..36850dbe 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt @@ -11,7 +11,6 @@ import com.kuit.ourmenu.ui.onboarding.screen.signup.SignupEmailScreen import com.kuit.ourmenu.ui.onboarding.screen.signup.SignupMealTimeScreen import com.kuit.ourmenu.ui.onboarding.screen.signup.SignupPasswordScreen import com.kuit.ourmenu.ui.onboarding.screen.signup.SignupVerifyScreen -import com.kuit.ourmenu.ui.onboarding.viewmodel.LandingViewModel import com.kuit.ourmenu.ui.onboarding.viewmodel.SignupViewModel fun NavController.navigateToLogin() { @@ -52,6 +51,7 @@ fun NavGraphBuilder.onboardingNavGraph( navigateToSignupEmail: () -> Unit, navigateToSignupVerify: () -> Unit, navigateToSignupMealTime: () -> Unit, + navigateToSignupPassword: () -> Unit, ) { composable { @@ -77,6 +77,13 @@ fun NavGraphBuilder.onboardingNavGraph( viewModel = viewModel ) } + composable { + SignupVerifyScreen( + navigateToPassword = navigateToSignupPassword, + navigateBack = navigateBack, + viewModel = viewModel + ) + } composable { SignupPasswordScreen( navigateToMealTime = navigateToSignupMealTime, @@ -91,7 +98,4 @@ fun NavGraphBuilder.onboardingNavGraph( viewModel = viewModel ) } - composable { - SignupVerifyScreen(navController = navController, viewModel = viewModel) - } } \ No newline at end of file diff --git a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/screen/signup/SignupVerifyScreen.kt b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/screen/signup/SignupVerifyScreen.kt index 80b00ff2..5af888b4 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/screen/signup/SignupVerifyScreen.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/screen/signup/SignupVerifyScreen.kt @@ -35,15 +35,11 @@ import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle -import androidx.navigation.NavController -import androidx.navigation.compose.rememberNavController import com.kuit.ourmenu.R import com.kuit.ourmenu.ui.common.DisableBottomFullWidthButton import com.kuit.ourmenu.ui.common.OurSnackbarHost -import com.kuit.ourmenu.ui.navigator.Routes import com.kuit.ourmenu.ui.onboarding.component.OnboardingTopAppBar import com.kuit.ourmenu.ui.onboarding.component.VerifyCodeTextField -import com.kuit.ourmenu.ui.onboarding.state.PasswordState import com.kuit.ourmenu.ui.onboarding.state.SignupState import com.kuit.ourmenu.ui.onboarding.viewmodel.SignupViewModel import com.kuit.ourmenu.ui.theme.Neutral300 @@ -53,13 +49,13 @@ import com.kuit.ourmenu.ui.theme.NeutralWhite import com.kuit.ourmenu.ui.theme.Primary500Main import com.kuit.ourmenu.ui.theme.ourMenuTypography import com.kuit.ourmenu.utils.AnimationUtil.shakeAnimation -import kotlinx.coroutines.delay import kotlinx.coroutines.launch import kotlin.math.roundToInt @Composable fun SignupVerifyScreen( - navController: NavController, + navigateToPassword: () -> Unit, + navigateBack: () -> Unit, viewModel: SignupViewModel = hiltViewModel() ) { val focusRequesters = List(6) { FocusRequester() } @@ -78,7 +74,7 @@ fun SignupVerifyScreen( LaunchedEffect(verifyState) { when (verifyState) { is SignupState.Success -> - navController.navigate(route = Routes.SignupPassword) + navigateToPassword() is SignupState.Error -> { shakeAnimation( @@ -103,9 +99,7 @@ fun SignupVerifyScreen( .imePadding(), topBar = { OnboardingTopAppBar( - onBackClick = { - navController.navigateUp() - } + onBackClick = navigateBack ) }, content = { innerPadding -> @@ -253,7 +247,8 @@ fun SignupVerifyScreen( @Preview(showBackground = true) @Composable private fun SignupVerifyScreenPreview() { - val navController = rememberNavController() - - SignupVerifyScreen(navController) -} + SignupVerifyScreen( + navigateToPassword = {}, + navigateBack = {} + ) +} \ No newline at end of file From ab0b72c6aeb49f5af29a5928d4d357c99c60dcc6 Mon Sep 17 00:00:00 2001 From: ikseong00 Date: Sun, 30 Mar 2025 20:30:11 +0900 Subject: [PATCH 09/24] =?UTF-8?q?[refactor]:=20startDestination=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20(#56)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavGraph.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavGraph.kt b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavGraph.kt index 16d42601..41b0cb26 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavGraph.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavGraph.kt @@ -20,7 +20,7 @@ import com.kuit.ourmenu.ui.onboarding.viewmodel.SignupViewModel fun MainNavGraph(navController: NavHostController) { val viewModel = hiltViewModel() - NavHost(navController, startDestination = Routes.Onboarding) { + NavHost(navController, startDestination = Routes.Landing) { composable { HomeScreen(navController = navController) } From 277eecce8407e4da5ca57b4c8ccc0489114e2f37 Mon Sep 17 00:00:00 2001 From: ikseong00 Date: Sun, 30 Mar 2025 20:44:46 +0900 Subject: [PATCH 10/24] =?UTF-8?q?[feat]:=20=EB=B0=94=ED=85=80=EB=84=A4?= =?UTF-8?q?=EB=B9=84=EA=B2=8C=EC=9D=B4=EC=85=98=20=ED=83=AD=20Enum=20class?= =?UTF-8?q?=20=EA=B5=AC=ED=98=84=20(#56)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle.kts | 2 + .../ui/main/component/MainBottomBar.kt | 66 +++++++++++++++++++ .../com/kuit/ourmenu/ui/navigator/MainTab.kt | 54 +++++++++++++++ .../kuit/ourmenu/ui/navigator/MainTabRoute.kt | 14 ++++ .../res/drawable/ic_navigation_bar_folder.xml | 19 ++++++ .../ic_navigation_bar_folder_selected.xml | 19 ++++++ .../res/drawable/ic_navigation_bar_home.xml | 16 +++++ .../ic_navigation_bar_home_selected.xml | 16 +++++ .../res/drawable/ic_navigation_bar_map.xml | 17 +++++ .../ic_navigation_bar_map_selected.xml | 17 +++++ .../res/drawable/ic_navigation_bar_my.xml | 17 +++++ .../ic_navigation_bar_my_selected.xml | 17 +++++ gradle/libs.versions.toml | 2 + 13 files changed, 276 insertions(+) create mode 100644 app/src/main/java/com/kuit/ourmenu/ui/main/component/MainBottomBar.kt create mode 100644 app/src/main/java/com/kuit/ourmenu/ui/navigator/MainTab.kt create mode 100644 app/src/main/java/com/kuit/ourmenu/ui/navigator/MainTabRoute.kt create mode 100644 app/src/main/res/drawable/ic_navigation_bar_folder.xml create mode 100644 app/src/main/res/drawable/ic_navigation_bar_folder_selected.xml create mode 100644 app/src/main/res/drawable/ic_navigation_bar_home.xml create mode 100644 app/src/main/res/drawable/ic_navigation_bar_home_selected.xml create mode 100644 app/src/main/res/drawable/ic_navigation_bar_map.xml create mode 100644 app/src/main/res/drawable/ic_navigation_bar_map_selected.xml create mode 100644 app/src/main/res/drawable/ic_navigation_bar_my.xml create mode 100644 app/src/main/res/drawable/ic_navigation_bar_my_selected.xml diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 70f3cff9..8be2803b 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -68,6 +68,7 @@ dependencies { implementation(libs.androidx.lifecycle.runtime.compose.android) implementation(libs.androidx.navigation.compose) implementation(libs.androidx.datastore.preferences) + implementation(libs.androidx.espresso.core) testImplementation(libs.junit) androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) @@ -75,6 +76,7 @@ dependencies { androidTestImplementation(libs.androidx.ui.test.junit4) debugImplementation(libs.androidx.ui.tooling) debugImplementation(libs.androidx.ui.test.manifest) + implementation(libs.kotlinx.collections.immutable) // Dots Indicator implementation("com.tbuonomo:dotsindicator:5.1.0") diff --git a/app/src/main/java/com/kuit/ourmenu/ui/main/component/MainBottomBar.kt b/app/src/main/java/com/kuit/ourmenu/ui/main/component/MainBottomBar.kt new file mode 100644 index 00000000..1c651803 --- /dev/null +++ b/app/src/main/java/com/kuit/ourmenu/ui/main/component/MainBottomBar.kt @@ -0,0 +1,66 @@ +package com.kuit.ourmenu.ui.main.component + +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.animation.slideIn +import androidx.compose.animation.slideOut +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.drawBehind +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.IntOffset +import androidx.compose.ui.unit.dp + +@Composable +fun MainBottomBar( + modifier: Modifier = Modifier, + visible: Boolean, + tabs: ImmutableList, + currentTab: MainTab?, + onTabSelected: (MainTab) -> Unit, +) { + AnimatedVisibility( + visible = visible, + enter = fadeIn() + slideIn { IntOffset(0, it.height) }, + exit = fadeOut() + slideOut { IntOffset(0, it.height) } + ) { + Row( + modifier = modifier + .fillMaxWidth() + .height(68.dp) + .drawBehind { + val borderThickness = 1.dp.toPx() + + drawLine( + color = borderColor, + start = Offset(0f, 0f), + end = Offset(size.width, 0f), + strokeWidth = borderThickness + ) + } + .background( + color = colors.White, + ), + ) { + tabs.forEach { tab -> + MainBottomBarItem( + tab = tab, + selected = tab == currentTab, + onClick = { onTabSelected(tab) }, + ) + } + } + } +} + +@Preview +@Composable +private fun MainBottomBarPreview() { + MainBottomBar() +} \ No newline at end of file diff --git a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainTab.kt b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainTab.kt new file mode 100644 index 00000000..90800f96 --- /dev/null +++ b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainTab.kt @@ -0,0 +1,54 @@ +package com.kuit.ourmenu.ui.navigator + +import androidx.compose.runtime.Composable +import com.kuit.ourmenu.R + +enum class MainTab( + val iconResId: Int, + val selectedIconResId: Int, + internal val contentDescription: String, + val label: String, + val route: MainTabRoute, +) { + HOME( + iconResId = R.drawable.ic_navigation_bar_home, + selectedIconResId = R.drawable.ic_navigation_bar_home_selected, + contentDescription = "Home Icon", + label = "홈", + route = MainTabRoute.Home, + ), + MAP( + iconResId = R.drawable.ic_navigation_bar_map, + selectedIconResId = R.drawable.ic_navigation_bar_map_selected, + contentDescription = "Map Icon", + label = "지도", + route = MainTabRoute.Map, + ), + MENU_FOLDER( + iconResId = R.drawable.ic_navigation_bar_folder, + selectedIconResId = R.drawable.ic_navigation_bar_folder_selected, + contentDescription = "Menu Folder Icon", + label = "메뉴판", + route = MainTabRoute.MenuFolder, + ), + MY( + iconResId = R.drawable.ic_navigation_bar_my, + selectedIconResId = R.drawable.ic_navigation_bar_my_selected, + contentDescription = "My Icon", + label = "마이", + route = MainTabRoute.My, + ) + ; + + companion object { + @Composable + fun find(predicate: @Composable (MainTabRoute) -> Boolean): MainTab? { + return entries.find { predicate(it.route) } + } + + @Composable + fun contains(predicate: @Composable (Routes) -> Boolean): Boolean { + return entries.map { it.route }.any { predicate(it) } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainTabRoute.kt b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainTabRoute.kt new file mode 100644 index 00000000..0e0639fa --- /dev/null +++ b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainTabRoute.kt @@ -0,0 +1,14 @@ +package com.kuit.ourmenu.ui.navigator + +import kotlinx.serialization.Serializable + +sealed interface MainTabRoute : Routes { + @Serializable + data object Home : MainTabRoute + @Serializable + data object Map : MainTabRoute + @Serializable + data object MenuFolder : MainTabRoute + @Serializable + data object My : MainTabRoute +} \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_navigation_bar_folder.xml b/app/src/main/res/drawable/ic_navigation_bar_folder.xml new file mode 100644 index 00000000..17b52515 --- /dev/null +++ b/app/src/main/res/drawable/ic_navigation_bar_folder.xml @@ -0,0 +1,19 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_navigation_bar_folder_selected.xml b/app/src/main/res/drawable/ic_navigation_bar_folder_selected.xml new file mode 100644 index 00000000..454e670c --- /dev/null +++ b/app/src/main/res/drawable/ic_navigation_bar_folder_selected.xml @@ -0,0 +1,19 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_navigation_bar_home.xml b/app/src/main/res/drawable/ic_navigation_bar_home.xml new file mode 100644 index 00000000..f48c5ec2 --- /dev/null +++ b/app/src/main/res/drawable/ic_navigation_bar_home.xml @@ -0,0 +1,16 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_navigation_bar_home_selected.xml b/app/src/main/res/drawable/ic_navigation_bar_home_selected.xml new file mode 100644 index 00000000..fea6e40b --- /dev/null +++ b/app/src/main/res/drawable/ic_navigation_bar_home_selected.xml @@ -0,0 +1,16 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_navigation_bar_map.xml b/app/src/main/res/drawable/ic_navigation_bar_map.xml new file mode 100644 index 00000000..7696d134 --- /dev/null +++ b/app/src/main/res/drawable/ic_navigation_bar_map.xml @@ -0,0 +1,17 @@ + + + + diff --git a/app/src/main/res/drawable/ic_navigation_bar_map_selected.xml b/app/src/main/res/drawable/ic_navigation_bar_map_selected.xml new file mode 100644 index 00000000..0888be05 --- /dev/null +++ b/app/src/main/res/drawable/ic_navigation_bar_map_selected.xml @@ -0,0 +1,17 @@ + + + + diff --git a/app/src/main/res/drawable/ic_navigation_bar_my.xml b/app/src/main/res/drawable/ic_navigation_bar_my.xml new file mode 100644 index 00000000..6ca51b24 --- /dev/null +++ b/app/src/main/res/drawable/ic_navigation_bar_my.xml @@ -0,0 +1,17 @@ + + + + diff --git a/app/src/main/res/drawable/ic_navigation_bar_my_selected.xml b/app/src/main/res/drawable/ic_navigation_bar_my_selected.xml new file mode 100644 index 00000000..ad1d5412 --- /dev/null +++ b/app/src/main/res/drawable/ic_navigation_bar_my_selected.xml @@ -0,0 +1,17 @@ + + + + diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 7469bb5d..ab755e76 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -8,6 +8,7 @@ coreKtx = "1.10.1" junit = "4.13.2" junitVersion = "1.1.5" espressoCore = "3.5.1" +kotlinxCollectionsImmutable = "0.3.5" kotlinxSerializationJson = "1.6.0" lifecycleRuntimeKtx = "2.6.1" activityCompose = "1.8.0" @@ -40,6 +41,7 @@ androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-toolin androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" } androidx-material3 = { group = "androidx.compose.material3", name = "material3" } +kotlinx-collections-immutable = { module = "org.jetbrains.kotlinx:kotlinx-collections-immutable", version.ref = "kotlinxCollectionsImmutable" } androidx-lifecycle-viewmodel = { group = "androidx.lifecycle", name = "lifecycle-viewmodel", version.ref = "lifecycleViewmodel" } androidx-lifecycle-viewmodel-compose = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-compose", version.ref = "lifecycleViewmodelCompose" } androidx-lifecycle-runtime-compose-android = { group = "androidx.lifecycle", name = "lifecycle-runtime-compose-android", version.ref = "lifecycleRuntimeComposeAndroid" } From 1994be49777a973fcf75472972f3c907744d663b Mon Sep 17 00:00:00 2001 From: ikseong00 Date: Sun, 30 Mar 2025 21:27:32 +0900 Subject: [PATCH 11/24] =?UTF-8?q?[feat]:=20=EB=B0=94=ED=85=80=EB=84=A4?= =?UTF-8?q?=EB=B9=84=EA=B2=8C=EC=9D=B4=EC=85=98=20=EC=BB=B4=ED=8F=AC?= =?UTF-8?q?=EB=84=8C=ED=8A=B8=20=EA=B5=AC=ED=98=84=20(#56)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../component/MainBottomBar.kt | 52 ++++++++-------- .../navigator/component/MainBottomBarItem.kt | 60 +++++++++++++++++++ 2 files changed, 87 insertions(+), 25 deletions(-) rename app/src/main/java/com/kuit/ourmenu/ui/{main => navigator}/component/MainBottomBar.kt (51%) create mode 100644 app/src/main/java/com/kuit/ourmenu/ui/navigator/component/MainBottomBarItem.kt diff --git a/app/src/main/java/com/kuit/ourmenu/ui/main/component/MainBottomBar.kt b/app/src/main/java/com/kuit/ourmenu/ui/navigator/component/MainBottomBar.kt similarity index 51% rename from app/src/main/java/com/kuit/ourmenu/ui/main/component/MainBottomBar.kt rename to app/src/main/java/com/kuit/ourmenu/ui/navigator/component/MainBottomBar.kt index 1c651803..14582bf7 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/main/component/MainBottomBar.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/navigator/component/MainBottomBar.kt @@ -1,25 +1,28 @@ -package com.kuit.ourmenu.ui.main.component +package com.kuit.ourmenu.ui.navigator.component import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut import androidx.compose.animation.slideIn import androidx.compose.animation.slideOut -import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.drawBehind -import androidx.compose.ui.geometry.Offset import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.dp +import com.kuit.ourmenu.ui.navigator.MainTab +import com.kuit.ourmenu.ui.theme.OurMenuTheme +import kotlinx.collections.immutable.ImmutableList +import kotlinx.collections.immutable.toImmutableList @Composable -fun MainBottomBar( - modifier: Modifier = Modifier, +internal fun MainBottomBar( visible: Boolean, tabs: ImmutableList, currentTab: MainTab?, @@ -28,39 +31,38 @@ fun MainBottomBar( AnimatedVisibility( visible = visible, enter = fadeIn() + slideIn { IntOffset(0, it.height) }, - exit = fadeOut() + slideOut { IntOffset(0, it.height) } + exit = fadeOut() + slideOut { IntOffset(0, it.height) }, ) { Row( - modifier = modifier + modifier = Modifier .fillMaxWidth() - .height(68.dp) - .drawBehind { - val borderThickness = 1.dp.toPx() - - drawLine( - color = borderColor, - start = Offset(0f, 0f), - end = Offset(size.width, 0f), - strokeWidth = borderThickness - ) - } - .background( - color = colors.White, - ), + .padding(horizontal = 20.dp) + .height(76.dp), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.SpaceEvenly ) { tabs.forEach { tab -> MainBottomBarItem( tab = tab, selected = tab == currentTab, - onClick = { onTabSelected(tab) }, + onClick = { + if (tab != currentTab) onTabSelected(tab) + } ) } } } } -@Preview +@Preview(showBackground = true) @Composable private fun MainBottomBarPreview() { - MainBottomBar() + OurMenuTheme { + MainBottomBar( + visible = true, + tabs = MainTab.entries.toImmutableList(), + currentTab = MainTab.HOME, + onTabSelected = {} + ) + } } \ No newline at end of file diff --git a/app/src/main/java/com/kuit/ourmenu/ui/navigator/component/MainBottomBarItem.kt b/app/src/main/java/com/kuit/ourmenu/ui/navigator/component/MainBottomBarItem.kt new file mode 100644 index 00000000..c7006768 --- /dev/null +++ b/app/src/main/java/com/kuit/ourmenu/ui/navigator/component/MainBottomBarItem.kt @@ -0,0 +1,60 @@ +package com.kuit.ourmenu.ui.navigator.component + +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.selection.selectable +import androidx.compose.material3.Icon +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.res.vectorResource +import androidx.compose.ui.semantics.Role +import androidx.compose.ui.unit.dp +import com.kuit.ourmenu.ui.navigator.MainTab +import com.kuit.ourmenu.ui.theme.Neutral500 +import com.kuit.ourmenu.ui.theme.Primary500Main +import com.kuit.ourmenu.ui.theme.ourMenuTypography + +@Composable +fun RowScope.MainBottomBarItem( + modifier: Modifier = Modifier, + tab: MainTab, + selected: Boolean = false, + onClick: () -> Unit = {} +) { + Column( + modifier = modifier + .padding(vertical = 10.dp) + .weight(1f) + .fillMaxHeight() + .selectable( + selected = selected, + indication = null, + role = Role.Tab, + interactionSource = remember { MutableInteractionSource() }, + onClick = onClick, + ), + verticalArrangement = Arrangement.spacedBy(6.dp, Alignment.CenterVertically), + horizontalAlignment = Alignment.CenterHorizontally + ) { + Icon( + imageVector = ImageVector.vectorResource(if (selected) tab.selectedIconResId else tab.iconResId), + contentDescription = tab.contentDescription, + tint = Color.Unspecified + ) + Text( + text = tab.label, + style = ourMenuTypography().pretendard_400_12.copy( + color = if (selected) Primary500Main else Neutral500 + ) + ) + } +} From 07a4f45485214245a9503648e5e832b7f85fc38e Mon Sep 17 00:00:00 2001 From: ikseong00 Date: Sun, 30 Mar 2025 21:44:31 +0900 Subject: [PATCH 12/24] =?UTF-8?q?[feat]:=20MainNavController=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20(#56)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ourmenu/ui/navigator/MainNavController.kt | 104 ++++++++++++++++++ .../com/kuit/ourmenu/ui/navigator/MainTab.kt | 4 - .../com/kuit/ourmenu/ui/navigator/Routes.kt | 6 + 3 files changed, 110 insertions(+), 4 deletions(-) create mode 100644 app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavController.kt diff --git a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavController.kt b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavController.kt new file mode 100644 index 00000000..77b7b375 --- /dev/null +++ b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavController.kt @@ -0,0 +1,104 @@ +package com.kuit.ourmenu.ui.navigator + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import androidx.navigation.NavDestination +import androidx.navigation.NavHostController +import androidx.navigation.NavOptions +import androidx.navigation.compose.currentBackStackEntryAsState +import androidx.navigation.compose.rememberNavController +import androidx.navigation.navOptions +import com.kuit.ourmenu.ui.onboarding.navigation.navigateOnboardingToHome +import com.kuit.ourmenu.ui.onboarding.navigation.navigateToLogin +import com.kuit.ourmenu.ui.onboarding.navigation.navigateToSignupEmail +import com.kuit.ourmenu.ui.onboarding.navigation.navigateToSignupMealTime +import com.kuit.ourmenu.ui.onboarding.navigation.navigateToSignupPassword +import com.kuit.ourmenu.ui.onboarding.navigation.navigateToSignupVerify + +class MainNavController( + val navController: NavHostController, +) { + private val currentDestination: NavDestination? + @Composable get() = navController + .currentBackStackEntryAsState().value?.destination + + val startDestination = Routes.Landing + + val currentTab: MainTab? + @Composable get() = MainTab.entries.find { tab -> + currentDestination?.route == tab.route::class.qualifiedName + } + + fun navigate(tab: MainTab) { + val navOptions = navOptions { + popUpTo(MainTab.HOME.route) { + inclusive = false + } + launchSingleTop = true + restoreState = true + } + + when (tab) { + MainTab.HOME -> navController.navigate(Routes.Home) + MainTab.MAP -> navController.navigate(Routes.Map) + MainTab.MENU_FOLDER -> navController.navigate(Routes.MenuFolder) + MainTab.MY -> navController.navigate(Routes.My) + } + } + + fun navigateToHome(navOptions: NavOptions) { + navController.navigate(Routes.Home, navOptions) + } + + fun navigateToMap(navOptions: NavOptions) { + navController.navigate(Routes.Map, navOptions) + } + + fun navigateToMenuFolder(navOptions: NavOptions) { + navController.navigate(Routes.MenuFolder, navOptions) + } + + fun navigateToMy(navOptions: NavOptions) { + navController.navigate(Routes.My, navOptions) + } + + // Onboarding + fun navigateToLogin() { + navController.navigateToLogin() + } + + fun navigateToSignupEmail() { + navController.navigateToSignupEmail() + } + + fun navigateToSignupPassword() { + navController.navigateToSignupPassword() + } + + fun navigateToSignupMealTime() { + navController.navigateToSignupMealTime() + } + + fun navigateToSignupVerify() { + navController.navigateToSignupVerify() + } + + fun navigateOnboardingToHome() { + navController.navigateOnboardingToHome() + } + fun popBackStack() { + navController.popBackStack() + } + + @Composable + fun shouldShowBottomBar(): Boolean = MainTab.contains { + currentDestination?.route?.startsWith(it::class.qualifiedName!!) == true + } +} + +@Composable +fun rememberMainNavigator( + navController: NavHostController = rememberNavController(), +): MainNavController = remember(navController) { + MainNavController(navController) +} \ No newline at end of file diff --git a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainTab.kt b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainTab.kt index 90800f96..da459053 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainTab.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainTab.kt @@ -41,10 +41,6 @@ enum class MainTab( ; companion object { - @Composable - fun find(predicate: @Composable (MainTabRoute) -> Boolean): MainTab? { - return entries.find { predicate(it.route) } - } @Composable fun contains(predicate: @Composable (Routes) -> Boolean): Boolean { diff --git a/app/src/main/java/com/kuit/ourmenu/ui/navigator/Routes.kt b/app/src/main/java/com/kuit/ourmenu/ui/navigator/Routes.kt index 21cf374d..58e8497b 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/navigator/Routes.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/navigator/Routes.kt @@ -8,10 +8,16 @@ sealed interface Routes{ data object Home: Routes // 지도 + @Serializable + data object Map: Routes // 메뉴판 + @Serializable + data object MenuFolder: Routes // Mypage + @Serializable + data object My: Routes // Onboarding @Serializable From ea28d28fe77846bcf0df93a28f37be91a67b6c0d Mon Sep 17 00:00:00 2001 From: ikseong00 Date: Sun, 30 Mar 2025 21:55:31 +0900 Subject: [PATCH 13/24] =?UTF-8?q?[feat]:=20MainNavHost=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20(#56)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/kuit/ourmenu/MainActivity.kt | 8 ++++---- .../kuit/ourmenu/ui/home/screen/HomeScreen.kt | 5 ++--- .../ourmenu/ui/navigator/MainNavController.kt | 4 ++++ .../{MainNavGraph.kt => MainNavHost.kt} | 20 +++++++++---------- 4 files changed, 20 insertions(+), 17 deletions(-) rename app/src/main/java/com/kuit/ourmenu/ui/navigator/{MainNavGraph.kt => MainNavHost.kt} (65%) diff --git a/app/src/main/java/com/kuit/ourmenu/MainActivity.kt b/app/src/main/java/com/kuit/ourmenu/MainActivity.kt index 5914c5cc..3f5fc8d2 100644 --- a/app/src/main/java/com/kuit/ourmenu/MainActivity.kt +++ b/app/src/main/java/com/kuit/ourmenu/MainActivity.kt @@ -8,8 +8,8 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue -import androidx.navigation.compose.rememberNavController -import com.kuit.ourmenu.ui.navigator.MainNavGraph +import com.kuit.ourmenu.ui.navigator.MainNavHost +import com.kuit.ourmenu.ui.navigator.rememberMainNavigator import com.kuit.ourmenu.ui.onboarding.screen.SplashScreen import com.kuit.ourmenu.ui.theme.OurMenuTheme import dagger.hilt.android.AndroidEntryPoint @@ -21,7 +21,7 @@ class MainActivity : ComponentActivity() { enableEdgeToEdge() setContent { var showSplash by remember { mutableStateOf(true) } - val navController = rememberNavController() + val navController = rememberMainNavigator() OurMenuTheme { if (showSplash) { @@ -30,7 +30,7 @@ class MainActivity : ComponentActivity() { } } else { // TODO: MainNavigation 추가하기 - MainNavGraph(navController = navController) + MainNavHost(navController = navController) } } } diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt index 64adadc1..13b803d0 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/screen/HomeScreen.kt @@ -12,7 +12,6 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import androidx.navigation.NavHostController import androidx.navigation.compose.rememberNavController import com.kuit.ourmenu.ui.common.topappbar.OurMenuAddButtonTopAppBar import com.kuit.ourmenu.ui.home.component.recommendation.main.HomeMainRecommendation @@ -20,7 +19,7 @@ import com.kuit.ourmenu.ui.home.component.recommendation.sub.HomeSubRecommendati import com.kuit.ourmenu.ui.home.dummy.HomeDummyData @Composable -fun HomeScreen(modifier: Modifier = Modifier, navController: NavHostController) { +fun HomeScreen(modifier: Modifier = Modifier) { val scrollState = rememberScrollState() @@ -69,5 +68,5 @@ fun HomeScreen(modifier: Modifier = Modifier, navController: NavHostController) @Composable private fun HomeScreenPreview() { val navController = rememberNavController() - HomeScreen(navController = navController) + HomeScreen() } \ No newline at end of file diff --git a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavController.kt b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavController.kt index 77b7b375..8884956c 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavController.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavController.kt @@ -46,6 +46,10 @@ class MainNavController( } } + fun navigateUp() { + navController.navigateUp() + } + fun navigateToHome(navOptions: NavOptions) { navController.navigate(Routes.Home, navOptions) } diff --git a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavGraph.kt b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt similarity index 65% rename from app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavGraph.kt rename to app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt index 41b0cb26..610491d4 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavGraph.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt @@ -1,28 +1,28 @@ package com.kuit.ourmenu.ui.navigator import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel -import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import com.kuit.ourmenu.ui.home.screen.HomeScreen -import com.kuit.ourmenu.ui.onboarding.navigation.navigateOnboardingToHome -import com.kuit.ourmenu.ui.onboarding.navigation.navigateToLogin -import com.kuit.ourmenu.ui.onboarding.navigation.navigateToSignupEmail -import com.kuit.ourmenu.ui.onboarding.navigation.navigateToSignupMealTime -import com.kuit.ourmenu.ui.onboarding.navigation.navigateToSignupPassword -import com.kuit.ourmenu.ui.onboarding.navigation.navigateToSignupVerify import com.kuit.ourmenu.ui.onboarding.navigation.onboardingNavGraph import com.kuit.ourmenu.ui.onboarding.viewmodel.SignupViewModel @Composable -fun MainNavGraph(navController: NavHostController) { +fun MainNavHost( + modifier: Modifier = Modifier, + navController: MainNavController, +) { val viewModel = hiltViewModel() - NavHost(navController, startDestination = Routes.Landing) { + NavHost( + navController = navController.navController, + startDestination = Routes.Landing + ) { composable { - HomeScreen(navController = navController) + HomeScreen() } onboardingNavGraph( From a41d764eaacf8a799b4ffd958b556e28a269db2e Mon Sep 17 00:00:00 2001 From: ikseong00 Date: Sun, 30 Mar 2025 21:59:16 +0900 Subject: [PATCH 14/24] =?UTF-8?q?[feat]:=20=EA=B0=81=20=EB=B0=94=ED=85=80?= =?UTF-8?q?=20=ED=83=AD=20=ED=81=B4=EB=A6=AD=20=EC=8B=9C=20navigate=20?= =?UTF-8?q?=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80=20(#56)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/home/navigation/HomeNavigation.kt | 22 ++++++++++++++ .../navigation/MenuFolderNavigation.kt | 22 ++++++++++++++ .../ourmenu/ui/my/navigation/MyNavigation.kt | 19 ++++++++++++ .../ourmenu/ui/navigator/MainNavController.kt | 30 ++++++------------- .../navigation/SearchMenuNavigation.kt | 20 +++++++++++++ 5 files changed, 92 insertions(+), 21 deletions(-) create mode 100644 app/src/main/java/com/kuit/ourmenu/ui/home/navigation/HomeNavigation.kt create mode 100644 app/src/main/java/com/kuit/ourmenu/ui/menuFolder/navigation/MenuFolderNavigation.kt create mode 100644 app/src/main/java/com/kuit/ourmenu/ui/my/navigation/MyNavigation.kt create mode 100644 app/src/main/java/com/kuit/ourmenu/ui/searchmenu/navigation/SearchMenuNavigation.kt diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/navigation/HomeNavigation.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/navigation/HomeNavigation.kt new file mode 100644 index 00000000..d18d196e --- /dev/null +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/navigation/HomeNavigation.kt @@ -0,0 +1,22 @@ +package com.kuit.ourmenu.ui.home.navigation + +import androidx.navigation.NavController +import androidx.navigation.NavGraphBuilder +import androidx.navigation.NavOptions +import androidx.navigation.compose.composable +import com.kuit.ourmenu.ui.home.screen.HomeScreen +import com.kuit.ourmenu.ui.navigator.MainTabRoute + +fun NavController.navigateToHome(navOptions: NavOptions) { + navigate(MainTabRoute.Home, navOptions) +} + +fun NavGraphBuilder.homeNavGraph( + // navigate 이벤트 +) { + composable { + HomeScreen( + // navigate 이벤트 + 기타 이벤트 + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/kuit/ourmenu/ui/menuFolder/navigation/MenuFolderNavigation.kt b/app/src/main/java/com/kuit/ourmenu/ui/menuFolder/navigation/MenuFolderNavigation.kt new file mode 100644 index 00000000..d248b4b1 --- /dev/null +++ b/app/src/main/java/com/kuit/ourmenu/ui/menuFolder/navigation/MenuFolderNavigation.kt @@ -0,0 +1,22 @@ +package com.kuit.ourmenu.ui.menuFolder.navigation + +import androidx.navigation.NavController +import androidx.navigation.NavGraphBuilder +import androidx.navigation.NavOptions +import androidx.navigation.compose.composable +import com.kuit.ourmenu.ui.menuFolder.screen.MenuFolderScreen +import com.kuit.ourmenu.ui.navigator.MainTabRoute + +fun NavController.navigateToMenuFolder(navOptions: NavOptions) { + navigate(MainTabRoute.MenuFolder, navOptions) +} + +fun NavGraphBuilder.menuFolderNavGraph( + // navigate 이벤트 +) { + composable { + MenuFolderScreen( + // navigate 이벤트 + 기타 이벤트 + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/kuit/ourmenu/ui/my/navigation/MyNavigation.kt b/app/src/main/java/com/kuit/ourmenu/ui/my/navigation/MyNavigation.kt new file mode 100644 index 00000000..76cc5a00 --- /dev/null +++ b/app/src/main/java/com/kuit/ourmenu/ui/my/navigation/MyNavigation.kt @@ -0,0 +1,19 @@ +package com.kuit.ourmenu.ui.my.navigation + +import androidx.navigation.NavController +import androidx.navigation.NavGraphBuilder +import androidx.navigation.NavOptions +import androidx.navigation.compose.composable +import com.kuit.ourmenu.ui.navigator.MainTabRoute + +fun NavController.navigateToMy(navOptions: NavOptions) { + navigate(MainTabRoute.My, navOptions) +} + +fun NavGraphBuilder.myNavGraph( + // navigate 이벤트 +) { + composable { + // MyScreen.kt + } +} \ No newline at end of file diff --git a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavController.kt b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavController.kt index 8884956c..acca0b4f 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavController.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavController.kt @@ -4,16 +4,18 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.navigation.NavDestination import androidx.navigation.NavHostController -import androidx.navigation.NavOptions import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.compose.rememberNavController import androidx.navigation.navOptions +import com.kuit.ourmenu.ui.home.navigation.navigateToHome +import com.kuit.ourmenu.ui.menuFolder.navigation.navigateToMenuFolder import com.kuit.ourmenu.ui.onboarding.navigation.navigateOnboardingToHome import com.kuit.ourmenu.ui.onboarding.navigation.navigateToLogin import com.kuit.ourmenu.ui.onboarding.navigation.navigateToSignupEmail import com.kuit.ourmenu.ui.onboarding.navigation.navigateToSignupMealTime import com.kuit.ourmenu.ui.onboarding.navigation.navigateToSignupPassword import com.kuit.ourmenu.ui.onboarding.navigation.navigateToSignupVerify +import com.kuit.ourmenu.ui.searchmenu.navigation.navigateToSearchMenu class MainNavController( val navController: NavHostController, @@ -39,33 +41,18 @@ class MainNavController( } when (tab) { - MainTab.HOME -> navController.navigate(Routes.Home) - MainTab.MAP -> navController.navigate(Routes.Map) - MainTab.MENU_FOLDER -> navController.navigate(Routes.MenuFolder) - MainTab.MY -> navController.navigate(Routes.My) + MainTab.HOME -> navController.navigateToHome(navOptions) + MainTab.MAP -> navController.navigateToSearchMenu(navOptions) + MainTab.MENU_FOLDER -> navController.navigateToMenuFolder(navOptions) + MainTab.MY -> navController.navigateToMenuFolder(navOptions) } } + // Back Pressed fun navigateUp() { navController.navigateUp() } - fun navigateToHome(navOptions: NavOptions) { - navController.navigate(Routes.Home, navOptions) - } - - fun navigateToMap(navOptions: NavOptions) { - navController.navigate(Routes.Map, navOptions) - } - - fun navigateToMenuFolder(navOptions: NavOptions) { - navController.navigate(Routes.MenuFolder, navOptions) - } - - fun navigateToMy(navOptions: NavOptions) { - navController.navigate(Routes.My, navOptions) - } - // Onboarding fun navigateToLogin() { navController.navigateToLogin() @@ -90,6 +77,7 @@ class MainNavController( fun navigateOnboardingToHome() { navController.navigateOnboardingToHome() } + fun popBackStack() { navController.popBackStack() } diff --git a/app/src/main/java/com/kuit/ourmenu/ui/searchmenu/navigation/SearchMenuNavigation.kt b/app/src/main/java/com/kuit/ourmenu/ui/searchmenu/navigation/SearchMenuNavigation.kt new file mode 100644 index 00000000..520f801b --- /dev/null +++ b/app/src/main/java/com/kuit/ourmenu/ui/searchmenu/navigation/SearchMenuNavigation.kt @@ -0,0 +1,20 @@ +package com.kuit.ourmenu.ui.searchmenu.navigation + +import androidx.navigation.NavController +import androidx.navigation.NavGraphBuilder +import androidx.navigation.NavOptions +import androidx.navigation.compose.composable +import com.kuit.ourmenu.ui.navigator.MainTabRoute +import com.kuit.ourmenu.ui.searchmenu.screen.SearchMenuScreen + +fun NavController.navigateToSearchMenu(navOptions: NavOptions) { + navigate(MainTabRoute.Map, navOptions) +} + +fun NavGraphBuilder.searchMenuNavGraph( + // navigate 이벤트 +) { + composable { + SearchMenuScreen() + } +} \ No newline at end of file From f393cf395f8b9351964329973f7b9f3a8a158d14 Mon Sep 17 00:00:00 2001 From: ikseong00 Date: Sun, 30 Mar 2025 21:59:51 +0900 Subject: [PATCH 15/24] =?UTF-8?q?[feat]:=20NavHost=20=EC=97=90=20=EA=B0=81?= =?UTF-8?q?=20NavGraph=20=EC=B6=94=EA=B0=80=20(#56)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/kuit/ourmenu/ui/navigator/MainNavHost.kt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt index 610491d4..1d0af39b 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt @@ -6,9 +6,13 @@ import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable +import com.kuit.ourmenu.ui.home.navigation.homeNavGraph import com.kuit.ourmenu.ui.home.screen.HomeScreen +import com.kuit.ourmenu.ui.menuFolder.navigation.menuFolderNavGraph +import com.kuit.ourmenu.ui.my.navigation.myNavGraph import com.kuit.ourmenu.ui.onboarding.navigation.onboardingNavGraph import com.kuit.ourmenu.ui.onboarding.viewmodel.SignupViewModel +import com.kuit.ourmenu.ui.searchmenu.navigation.searchMenuNavGraph @Composable fun MainNavHost( @@ -36,5 +40,13 @@ fun MainNavHost( navigateToSignupPassword = navController::navigateToSignupPassword, navigateToSignupMealTime = navController::navigateToSignupMealTime ) + + homeNavGraph() + + menuFolderNavGraph() + + searchMenuNavGraph() + + myNavGraph() } } \ No newline at end of file From 083b409452ceb4e2f081e7241da214f64f963e72 Mon Sep 17 00:00:00 2001 From: ikseong00 Date: Sun, 30 Mar 2025 22:09:05 +0900 Subject: [PATCH 16/24] =?UTF-8?q?[refactor]:=20SignunViewModel=20=EC=9D=84?= =?UTF-8?q?=20backStackEntry=20=EC=97=90=20=EC=A0=91=EA=B7=BC=ED=95=B4=20?= =?UTF-8?q?=EA=B0=80=EC=A0=B8=EC=98=A4=EB=8F=84=EB=A1=9D=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=20(#56)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/kuit/ourmenu/ui/navigator/MainNavHost.kt | 9 ++++++--- .../ui/onboarding/navigation/OnboardingNavigation.kt | 12 +++++++----- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt index 1d0af39b..f182314c 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt @@ -31,15 +31,18 @@ fun MainNavHost( onboardingNavGraph( padding = androidx.compose.foundation.layout.PaddingValues(0.dp), - viewModel = viewModel, navigateBack = navController::navigateUp, navigateOnboardingToHome = navController::navigateOnboardingToHome, navigateToLogin = navController::navigateToLogin, navigateToSignupEmail = navController::navigateToSignupEmail, navigateToSignupVerify = navController::navigateToSignupVerify, navigateToSignupPassword = navController::navigateToSignupPassword, - navigateToSignupMealTime = navController::navigateToSignupMealTime - ) + navigateToSignupMealTime = navController::navigateToSignupMealTime, + getBackStackSignupViewModel = { navBackStackEntry -> + navController.navController.previousBackStackEntry?.let { previousEntry -> + hiltViewModel(previousEntry) + } ?: hiltViewModel(navBackStackEntry) + }) homeNavGraph() diff --git a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt index 36850dbe..cefaeee5 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt @@ -1,6 +1,8 @@ package com.kuit.ourmenu.ui.onboarding.navigation import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.runtime.Composable +import androidx.navigation.NavBackStackEntry import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.compose.composable @@ -44,7 +46,6 @@ fun NavController.navigateOnboardingToHome() { fun NavGraphBuilder.onboardingNavGraph( padding: PaddingValues, - viewModel: SignupViewModel, navigateBack: () -> Unit, navigateOnboardingToHome: () -> Unit, navigateToLogin: () -> Unit, @@ -52,6 +53,7 @@ fun NavGraphBuilder.onboardingNavGraph( navigateToSignupVerify: () -> Unit, navigateToSignupMealTime: () -> Unit, navigateToSignupPassword: () -> Unit, + getBackStackSignupViewModel : @Composable (NavBackStackEntry) -> SignupViewModel ) { composable { @@ -74,28 +76,28 @@ fun NavGraphBuilder.onboardingNavGraph( SignupEmailScreen( navigateToVerify = navigateToSignupVerify, navigateBack = navigateBack, - viewModel = viewModel + viewModel = getBackStackSignupViewModel(it) ) } composable { SignupVerifyScreen( navigateToPassword = navigateToSignupPassword, navigateBack = navigateBack, - viewModel = viewModel + viewModel = getBackStackSignupViewModel(it) ) } composable { SignupPasswordScreen( navigateToMealTime = navigateToSignupMealTime, navigateBack = navigateBack, - viewModel = viewModel + viewModel = getBackStackSignupViewModel(it) ) } composable { SignupMealTimeScreen( navigateToHome = navigateToSignupVerify, navigateBack = navigateBack, - viewModel = viewModel + viewModel = getBackStackSignupViewModel(it) ) } } \ No newline at end of file From f56e7def55e26d0ae8114ef3c87fdedd5e2bccee Mon Sep 17 00:00:00 2001 From: ikseong00 Date: Sun, 30 Mar 2025 22:09:05 +0900 Subject: [PATCH 17/24] =?UTF-8?q?[refactor]:=20SignunViewModel=20=EC=9D=84?= =?UTF-8?q?=20backStackEntry=20=EC=97=90=20=EC=A0=91=EA=B7=BC=ED=95=B4=20?= =?UTF-8?q?=EA=B0=80=EC=A0=B8=EC=98=A4=EB=8F=84=EB=A1=9D=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=20(#56)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/kuit/ourmenu/ui/navigator/MainNavHost.kt | 9 ++++++--- .../onboarding/navigation/OnboardingNavigation.kt | 13 ++++++++----- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt index 1d0af39b..f182314c 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt @@ -31,15 +31,18 @@ fun MainNavHost( onboardingNavGraph( padding = androidx.compose.foundation.layout.PaddingValues(0.dp), - viewModel = viewModel, navigateBack = navController::navigateUp, navigateOnboardingToHome = navController::navigateOnboardingToHome, navigateToLogin = navController::navigateToLogin, navigateToSignupEmail = navController::navigateToSignupEmail, navigateToSignupVerify = navController::navigateToSignupVerify, navigateToSignupPassword = navController::navigateToSignupPassword, - navigateToSignupMealTime = navController::navigateToSignupMealTime - ) + navigateToSignupMealTime = navController::navigateToSignupMealTime, + getBackStackSignupViewModel = { navBackStackEntry -> + navController.navController.previousBackStackEntry?.let { previousEntry -> + hiltViewModel(previousEntry) + } ?: hiltViewModel(navBackStackEntry) + }) homeNavGraph() diff --git a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt index 36850dbe..97c4393c 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt @@ -1,6 +1,9 @@ package com.kuit.ourmenu.ui.onboarding.navigation import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.runtime.Composable +import androidx.hilt.navigation.compose.hiltViewModel +import androidx.navigation.NavBackStackEntry import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.compose.composable @@ -44,7 +47,6 @@ fun NavController.navigateOnboardingToHome() { fun NavGraphBuilder.onboardingNavGraph( padding: PaddingValues, - viewModel: SignupViewModel, navigateBack: () -> Unit, navigateOnboardingToHome: () -> Unit, navigateToLogin: () -> Unit, @@ -52,6 +54,7 @@ fun NavGraphBuilder.onboardingNavGraph( navigateToSignupVerify: () -> Unit, navigateToSignupMealTime: () -> Unit, navigateToSignupPassword: () -> Unit, + getBackStackSignupViewModel : @Composable (NavBackStackEntry) -> SignupViewModel ) { composable { @@ -74,28 +77,28 @@ fun NavGraphBuilder.onboardingNavGraph( SignupEmailScreen( navigateToVerify = navigateToSignupVerify, navigateBack = navigateBack, - viewModel = viewModel + viewModel = hiltViewModel() ) } composable { SignupVerifyScreen( navigateToPassword = navigateToSignupPassword, navigateBack = navigateBack, - viewModel = viewModel + viewModel = getBackStackSignupViewModel(it) ) } composable { SignupPasswordScreen( navigateToMealTime = navigateToSignupMealTime, navigateBack = navigateBack, - viewModel = viewModel + viewModel = getBackStackSignupViewModel(it) ) } composable { SignupMealTimeScreen( navigateToHome = navigateToSignupVerify, navigateBack = navigateBack, - viewModel = viewModel + viewModel = getBackStackSignupViewModel(it) ) } } \ No newline at end of file From 6ec15df3c1a81bbe9d4bc19a786eda6eb8066a39 Mon Sep 17 00:00:00 2001 From: ikseong00 Date: Sun, 30 Mar 2025 22:42:28 +0900 Subject: [PATCH 18/24] =?UTF-8?q?[refactor]:=20=EC=83=81=EC=9C=84=20?= =?UTF-8?q?=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=EC=97=90=EC=84=9C=20viewMo?= =?UTF-8?q?del=20=EC=84=A0=EC=96=B8=20=ED=9B=84=20=EC=9E=AC=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=ED=95=98=EB=8A=94=20=EB=A1=9C=EC=A7=81=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD=20(#56)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt | 9 +++------ .../ui/onboarding/navigation/OnboardingNavigation.kt | 10 ++++------ 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt index f182314c..7b0089cf 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt @@ -19,7 +19,7 @@ fun MainNavHost( modifier: Modifier = Modifier, navController: MainNavController, ) { - val viewModel = hiltViewModel() + val signupViewModel = hiltViewModel() NavHost( navController = navController.navController, @@ -31,6 +31,7 @@ fun MainNavHost( onboardingNavGraph( padding = androidx.compose.foundation.layout.PaddingValues(0.dp), + viewModel = signupViewModel, navigateBack = navController::navigateUp, navigateOnboardingToHome = navController::navigateOnboardingToHome, navigateToLogin = navController::navigateToLogin, @@ -38,11 +39,7 @@ fun MainNavHost( navigateToSignupVerify = navController::navigateToSignupVerify, navigateToSignupPassword = navController::navigateToSignupPassword, navigateToSignupMealTime = navController::navigateToSignupMealTime, - getBackStackSignupViewModel = { navBackStackEntry -> - navController.navController.previousBackStackEntry?.let { previousEntry -> - hiltViewModel(previousEntry) - } ?: hiltViewModel(navBackStackEntry) - }) + ) homeNavGraph() diff --git a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt index 97c4393c..6bb0c331 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt @@ -1,9 +1,7 @@ package com.kuit.ourmenu.ui.onboarding.navigation import androidx.compose.foundation.layout.PaddingValues -import androidx.compose.runtime.Composable import androidx.hilt.navigation.compose.hiltViewModel -import androidx.navigation.NavBackStackEntry import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.compose.composable @@ -54,7 +52,7 @@ fun NavGraphBuilder.onboardingNavGraph( navigateToSignupVerify: () -> Unit, navigateToSignupMealTime: () -> Unit, navigateToSignupPassword: () -> Unit, - getBackStackSignupViewModel : @Composable (NavBackStackEntry) -> SignupViewModel + viewModel: SignupViewModel, ) { composable { @@ -84,21 +82,21 @@ fun NavGraphBuilder.onboardingNavGraph( SignupVerifyScreen( navigateToPassword = navigateToSignupPassword, navigateBack = navigateBack, - viewModel = getBackStackSignupViewModel(it) + viewModel = viewModel ) } composable { SignupPasswordScreen( navigateToMealTime = navigateToSignupMealTime, navigateBack = navigateBack, - viewModel = getBackStackSignupViewModel(it) + viewModel = viewModel ) } composable { SignupMealTimeScreen( navigateToHome = navigateToSignupVerify, navigateBack = navigateBack, - viewModel = getBackStackSignupViewModel(it) + viewModel = viewModel ) } } \ No newline at end of file From bea9ba442befaba29082664507b2e42c0790042d Mon Sep 17 00:00:00 2001 From: ikseong00 Date: Sun, 30 Mar 2025 22:46:17 +0900 Subject: [PATCH 19/24] =?UTF-8?q?[fix]:=20=EC=98=A4=ED=83=80=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20(#56)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/onboarding/navigation/OnboardingNavigation.kt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt index 6bb0c331..60becf16 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt @@ -1,7 +1,6 @@ package com.kuit.ourmenu.ui.onboarding.navigation import androidx.compose.foundation.layout.PaddingValues -import androidx.hilt.navigation.compose.hiltViewModel import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.compose.composable @@ -36,7 +35,7 @@ fun NavController.navigateToSignupVerify() { fun NavController.navigateOnboardingToHome() { navigate(Routes.Home) { - popUpTo(Routes.Onboarding) { + popUpTo(Routes.Landing) { inclusive = true } } @@ -75,7 +74,7 @@ fun NavGraphBuilder.onboardingNavGraph( SignupEmailScreen( navigateToVerify = navigateToSignupVerify, navigateBack = navigateBack, - viewModel = hiltViewModel() + viewModel = viewModel ) } composable { @@ -94,7 +93,7 @@ fun NavGraphBuilder.onboardingNavGraph( } composable { SignupMealTimeScreen( - navigateToHome = navigateToSignupVerify, + navigateToHome = navigateOnboardingToHome, navigateBack = navigateBack, viewModel = viewModel ) From bea0527c8a7aafaec0577ab249a44ff9312c45b8 Mon Sep 17 00:00:00 2001 From: ikseong00 Date: Sun, 30 Mar 2025 22:55:50 +0900 Subject: [PATCH 20/24] =?UTF-8?q?[feat]:=20MainActivity=20=EC=97=90=20Bott?= =?UTF-8?q?omBar=20=EC=B6=94=EA=B0=80=20(#56)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/kuit/ourmenu/MainActivity.kt | 29 +++++++++++++++++-- .../ui/navigator/component/MainBottomBar.kt | 3 +- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/kuit/ourmenu/MainActivity.kt b/app/src/main/java/com/kuit/ourmenu/MainActivity.kt index 3f5fc8d2..2775fd2e 100644 --- a/app/src/main/java/com/kuit/ourmenu/MainActivity.kt +++ b/app/src/main/java/com/kuit/ourmenu/MainActivity.kt @@ -4,15 +4,23 @@ import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.navigationBarsPadding +import androidx.compose.material3.Scaffold import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier import com.kuit.ourmenu.ui.navigator.MainNavHost +import com.kuit.ourmenu.ui.navigator.MainTab +import com.kuit.ourmenu.ui.navigator.component.MainBottomBar import com.kuit.ourmenu.ui.navigator.rememberMainNavigator import com.kuit.ourmenu.ui.onboarding.screen.SplashScreen +import com.kuit.ourmenu.ui.theme.NeutralWhite import com.kuit.ourmenu.ui.theme.OurMenuTheme import dagger.hilt.android.AndroidEntryPoint +import kotlinx.collections.immutable.toPersistentList @AndroidEntryPoint class MainActivity : ComponentActivity() { @@ -29,8 +37,25 @@ class MainActivity : ComponentActivity() { showSplash = false } } else { - // TODO: MainNavigation 추가하기 - MainNavHost(navController = navController) + Scaffold( + bottomBar = { + MainBottomBar( + modifier = Modifier + .background(NeutralWhite) + .navigationBarsPadding(), + visible = navController.shouldShowBottomBar(), + tabs = MainTab.entries.toPersistentList(), + currentTab = navController.currentTab, + onTabSelected = { navController.navigate(it) } + ) + }, + content = { innerPadding -> + MainNavHost( + navController = navController, + padding = innerPadding + ) + } + ) } } } diff --git a/app/src/main/java/com/kuit/ourmenu/ui/navigator/component/MainBottomBar.kt b/app/src/main/java/com/kuit/ourmenu/ui/navigator/component/MainBottomBar.kt index 14582bf7..65ac8440 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/navigator/component/MainBottomBar.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/navigator/component/MainBottomBar.kt @@ -23,6 +23,7 @@ import kotlinx.collections.immutable.toImmutableList @Composable internal fun MainBottomBar( + modifier: Modifier = Modifier, visible: Boolean, tabs: ImmutableList, currentTab: MainTab?, @@ -34,7 +35,7 @@ internal fun MainBottomBar( exit = fadeOut() + slideOut { IntOffset(0, it.height) }, ) { Row( - modifier = Modifier + modifier = modifier .fillMaxWidth() .padding(horizontal = 20.dp) .height(76.dp), From 48bbb970475c78a9404f36d6151856ffb2ac33eb Mon Sep 17 00:00:00 2001 From: ikseong00 Date: Sun, 30 Mar 2025 22:57:31 +0900 Subject: [PATCH 21/24] =?UTF-8?q?[feat]:=20=EB=AA=A8=EB=93=A0=20NavGraph?= =?UTF-8?q?=20=EC=97=90=20=ED=8C=A8=EB=94=A9=20=EC=B6=94=EA=B0=80=20(#56)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/home/navigation/HomeNavigation.kt | 2 ++ .../navigation/MenuFolderNavigation.kt | 2 ++ .../ourmenu/ui/my/navigation/MyNavigation.kt | 2 ++ .../kuit/ourmenu/ui/navigator/MainNavHost.kt | 20 +++++++++++++------ .../navigation/OnboardingNavigation.kt | 3 --- .../ui/onboarding/screen/LandingScreen.kt | 3 --- .../navigation/SearchMenuNavigation.kt | 2 ++ 7 files changed, 22 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/home/navigation/HomeNavigation.kt b/app/src/main/java/com/kuit/ourmenu/ui/home/navigation/HomeNavigation.kt index d18d196e..2fecea7e 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/home/navigation/HomeNavigation.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/home/navigation/HomeNavigation.kt @@ -1,5 +1,6 @@ package com.kuit.ourmenu.ui.home.navigation +import androidx.compose.foundation.layout.PaddingValues import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions @@ -12,6 +13,7 @@ fun NavController.navigateToHome(navOptions: NavOptions) { } fun NavGraphBuilder.homeNavGraph( + padding: PaddingValues, // navigate 이벤트 ) { composable { diff --git a/app/src/main/java/com/kuit/ourmenu/ui/menuFolder/navigation/MenuFolderNavigation.kt b/app/src/main/java/com/kuit/ourmenu/ui/menuFolder/navigation/MenuFolderNavigation.kt index d248b4b1..8f540256 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/menuFolder/navigation/MenuFolderNavigation.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/menuFolder/navigation/MenuFolderNavigation.kt @@ -1,5 +1,6 @@ package com.kuit.ourmenu.ui.menuFolder.navigation +import androidx.compose.foundation.layout.PaddingValues import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions @@ -12,6 +13,7 @@ fun NavController.navigateToMenuFolder(navOptions: NavOptions) { } fun NavGraphBuilder.menuFolderNavGraph( + padding: PaddingValues, // navigate 이벤트 ) { composable { diff --git a/app/src/main/java/com/kuit/ourmenu/ui/my/navigation/MyNavigation.kt b/app/src/main/java/com/kuit/ourmenu/ui/my/navigation/MyNavigation.kt index 76cc5a00..c90a24b8 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/my/navigation/MyNavigation.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/my/navigation/MyNavigation.kt @@ -1,5 +1,6 @@ package com.kuit.ourmenu.ui.my.navigation +import androidx.compose.foundation.layout.PaddingValues import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions @@ -11,6 +12,7 @@ fun NavController.navigateToMy(navOptions: NavOptions) { } fun NavGraphBuilder.myNavGraph( + padding: PaddingValues, // navigate 이벤트 ) { composable { diff --git a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt index 7b0089cf..2a3f46aa 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt @@ -1,8 +1,8 @@ package com.kuit.ourmenu.ui.navigator +import androidx.compose.foundation.layout.PaddingValues import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable @@ -18,6 +18,7 @@ import com.kuit.ourmenu.ui.searchmenu.navigation.searchMenuNavGraph fun MainNavHost( modifier: Modifier = Modifier, navController: MainNavController, + padding : PaddingValues ) { val signupViewModel = hiltViewModel() @@ -30,7 +31,6 @@ fun MainNavHost( } onboardingNavGraph( - padding = androidx.compose.foundation.layout.PaddingValues(0.dp), viewModel = signupViewModel, navigateBack = navController::navigateUp, navigateOnboardingToHome = navController::navigateOnboardingToHome, @@ -41,12 +41,20 @@ fun MainNavHost( navigateToSignupMealTime = navController::navigateToSignupMealTime, ) - homeNavGraph() + homeNavGraph( + padding = padding, + ) - menuFolderNavGraph() + menuFolderNavGraph( + padding = padding, + ) - searchMenuNavGraph() + searchMenuNavGraph( + padding = padding, + ) - myNavGraph() + myNavGraph( + padding = padding, + ) } } \ No newline at end of file diff --git a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt index 60becf16..b77ff965 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt @@ -1,6 +1,5 @@ package com.kuit.ourmenu.ui.onboarding.navigation -import androidx.compose.foundation.layout.PaddingValues import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.compose.composable @@ -43,7 +42,6 @@ fun NavController.navigateOnboardingToHome() { fun NavGraphBuilder.onboardingNavGraph( - padding: PaddingValues, navigateBack: () -> Unit, navigateOnboardingToHome: () -> Unit, navigateToLogin: () -> Unit, @@ -56,7 +54,6 @@ fun NavGraphBuilder.onboardingNavGraph( composable { LandingScreen( - padding = padding, navigateToHome = navigateOnboardingToHome, navigateToLogin = navigateToLogin, navigateToSignupEmail = navigateToSignupEmail, diff --git a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/screen/LandingScreen.kt b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/screen/LandingScreen.kt index f3bfc674..3d42457b 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/screen/LandingScreen.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/screen/LandingScreen.kt @@ -7,7 +7,6 @@ import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize @@ -55,7 +54,6 @@ import kotlinx.coroutines.launch @Composable fun LandingScreen( - padding: PaddingValues = PaddingValues(0.dp), navigateToHome: () -> Unit, navigateToLogin: () -> Unit, navigateToSignupEmail: () -> Unit, @@ -94,7 +92,6 @@ fun LandingScreen( modifier = Modifier .fillMaxSize() - .padding(padding) .padding(bottom = 18.dp), ) { Column( diff --git a/app/src/main/java/com/kuit/ourmenu/ui/searchmenu/navigation/SearchMenuNavigation.kt b/app/src/main/java/com/kuit/ourmenu/ui/searchmenu/navigation/SearchMenuNavigation.kt index 520f801b..57130b11 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/searchmenu/navigation/SearchMenuNavigation.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/searchmenu/navigation/SearchMenuNavigation.kt @@ -1,5 +1,6 @@ package com.kuit.ourmenu.ui.searchmenu.navigation +import androidx.compose.foundation.layout.PaddingValues import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions @@ -12,6 +13,7 @@ fun NavController.navigateToSearchMenu(navOptions: NavOptions) { } fun NavGraphBuilder.searchMenuNavGraph( + padding: PaddingValues, // navigate 이벤트 ) { composable { From f5aa3046288c0a234dc6218296a4c15e5afc6dec Mon Sep 17 00:00:00 2001 From: ikseong00 Date: Sun, 30 Mar 2025 23:09:06 +0900 Subject: [PATCH 22/24] =?UTF-8?q?[chore]:=20=EB=B0=94=ED=85=80=20=ED=83=AD?= =?UTF-8?q?=EC=97=90=20=ED=95=B4=EB=8B=B9=ED=95=98=EB=8A=94=20Routes=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0=20(#56)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/kuit/ourmenu/ui/navigator/MainNavHost.kt | 7 +------ .../java/com/kuit/ourmenu/ui/navigator/Routes.kt | 16 ---------------- .../navigation/OnboardingNavigation.kt | 3 ++- 3 files changed, 3 insertions(+), 23 deletions(-) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt index 2a3f46aa..e052501d 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt @@ -5,9 +5,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.hilt.navigation.compose.hiltViewModel import androidx.navigation.compose.NavHost -import androidx.navigation.compose.composable import com.kuit.ourmenu.ui.home.navigation.homeNavGraph -import com.kuit.ourmenu.ui.home.screen.HomeScreen import com.kuit.ourmenu.ui.menuFolder.navigation.menuFolderNavGraph import com.kuit.ourmenu.ui.my.navigation.myNavGraph import com.kuit.ourmenu.ui.onboarding.navigation.onboardingNavGraph @@ -24,11 +22,8 @@ fun MainNavHost( NavHost( navController = navController.navController, - startDestination = Routes.Landing + startDestination = MainTabRoute.Home ) { - composable { - HomeScreen() - } onboardingNavGraph( viewModel = signupViewModel, diff --git a/app/src/main/java/com/kuit/ourmenu/ui/navigator/Routes.kt b/app/src/main/java/com/kuit/ourmenu/ui/navigator/Routes.kt index 58e8497b..64e7a76e 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/navigator/Routes.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/navigator/Routes.kt @@ -3,22 +3,6 @@ package com.kuit.ourmenu.ui.navigator import kotlinx.serialization.Serializable sealed interface Routes{ - // Home - @Serializable - data object Home: Routes - - // 지도 - @Serializable - data object Map: Routes - - // 메뉴판 - @Serializable - data object MenuFolder: Routes - - // Mypage - @Serializable - data object My: Routes - // Onboarding @Serializable data object Onboarding: Routes diff --git a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt index b77ff965..82a6e2cd 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/onboarding/navigation/OnboardingNavigation.kt @@ -3,6 +3,7 @@ package com.kuit.ourmenu.ui.onboarding.navigation import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.compose.composable +import com.kuit.ourmenu.ui.navigator.MainTabRoute import com.kuit.ourmenu.ui.navigator.Routes import com.kuit.ourmenu.ui.onboarding.screen.LandingScreen import com.kuit.ourmenu.ui.onboarding.screen.LoginScreen @@ -33,7 +34,7 @@ fun NavController.navigateToSignupVerify() { } fun NavController.navigateOnboardingToHome() { - navigate(Routes.Home) { + navigate(MainTabRoute.Home) { popUpTo(Routes.Landing) { inclusive = true } From bc386dc10896827552ea5d69b2f8b51058d7cede Mon Sep 17 00:00:00 2001 From: ikseong00 Date: Sun, 30 Mar 2025 23:10:47 +0900 Subject: [PATCH 23/24] =?UTF-8?q?[fix]:=20=EC=98=A4=ED=83=80=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20(#56)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/kuit/ourmenu/ui/navigator/MainNavController.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavController.kt b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavController.kt index acca0b4f..aba88643 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavController.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavController.kt @@ -9,6 +9,7 @@ import androidx.navigation.compose.rememberNavController import androidx.navigation.navOptions import com.kuit.ourmenu.ui.home.navigation.navigateToHome import com.kuit.ourmenu.ui.menuFolder.navigation.navigateToMenuFolder +import com.kuit.ourmenu.ui.my.navigation.navigateToMy import com.kuit.ourmenu.ui.onboarding.navigation.navigateOnboardingToHome import com.kuit.ourmenu.ui.onboarding.navigation.navigateToLogin import com.kuit.ourmenu.ui.onboarding.navigation.navigateToSignupEmail @@ -44,7 +45,7 @@ class MainNavController( MainTab.HOME -> navController.navigateToHome(navOptions) MainTab.MAP -> navController.navigateToSearchMenu(navOptions) MainTab.MENU_FOLDER -> navController.navigateToMenuFolder(navOptions) - MainTab.MY -> navController.navigateToMenuFolder(navOptions) + MainTab.MY -> navController.navigateToMy(navOptions) } } From d6637c2f10860a8ef35dacab80098ce475f38fe9 Mon Sep 17 00:00:00 2001 From: ikseong00 Date: Sun, 30 Mar 2025 23:13:55 +0900 Subject: [PATCH 24/24] =?UTF-8?q?[feat]:=20=EB=84=A4=EB=B9=84=EA=B2=8C?= =?UTF-8?q?=EC=9D=B4=EC=85=98=20=EB=B0=94=20=EA=B7=B8=EB=A6=BC=EC=9E=90=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20=EB=B0=8F=20startDestination=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=20(#56)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt | 2 +- .../ourmenu/ui/navigator/component/MainBottomBar.kt | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt index e052501d..4308acfe 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/navigator/MainNavHost.kt @@ -22,7 +22,7 @@ fun MainNavHost( NavHost( navController = navController.navController, - startDestination = MainTabRoute.Home + startDestination = navController.startDestination ) { onboardingNavGraph( diff --git a/app/src/main/java/com/kuit/ourmenu/ui/navigator/component/MainBottomBar.kt b/app/src/main/java/com/kuit/ourmenu/ui/navigator/component/MainBottomBar.kt index 65ac8440..dda6736a 100644 --- a/app/src/main/java/com/kuit/ourmenu/ui/navigator/component/MainBottomBar.kt +++ b/app/src/main/java/com/kuit/ourmenu/ui/navigator/component/MainBottomBar.kt @@ -5,6 +5,7 @@ import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut import androidx.compose.animation.slideIn import androidx.compose.animation.slideOut +import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth @@ -13,10 +14,13 @@ import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.shadow +import androidx.compose.ui.graphics.Color import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.dp import com.kuit.ourmenu.ui.navigator.MainTab +import com.kuit.ourmenu.ui.theme.NeutralWhite import com.kuit.ourmenu.ui.theme.OurMenuTheme import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.toImmutableList @@ -36,6 +40,12 @@ internal fun MainBottomBar( ) { Row( modifier = modifier + .shadow( + elevation = 4.dp, + spotColor = Color(0x1F000000), + ambientColor = Color(0x1F000000) + ) + .background(color = NeutralWhite) .fillMaxWidth() .padding(horizontal = 20.dp) .height(76.dp),