diff --git a/core/designsystem/src/main/java/com/susu/core/designsystem/component/bottomsheet/datepicker/SusuDatePickerBottomSheet.kt b/core/designsystem/src/main/java/com/susu/core/designsystem/component/bottomsheet/datepicker/SusuDatePickerBottomSheet.kt index 46a59d61..f75fcf1b 100644 --- a/core/designsystem/src/main/java/com/susu/core/designsystem/component/bottomsheet/datepicker/SusuDatePickerBottomSheet.kt +++ b/core/designsystem/src/main/java/com/susu/core/designsystem/component/bottomsheet/datepicker/SusuDatePickerBottomSheet.kt @@ -179,6 +179,7 @@ fun SusuLimitDatePickerBottomSheet( initialMonth == criteriaMonth && initialDay > criteriaDay ) -> criteriaDay + else -> initialDay }, ) @@ -334,7 +335,8 @@ fun SusuYearPickerBottomSheet( ) { val currentYear = remember { LocalDate.now().year } var selectedYear by remember { mutableIntStateOf(initialYear ?: currentYear) } - val yearList = yearRange.map { stringResource(id = R.string.word_year_format, it) }.toImmutableList() + val yearList = + (yearRange.map { stringResource(id = R.string.word_year_format, it) } + listOf(stringResource(R.string.word_not_select))).toImmutableList() SusuBottomSheet( sheetState = sheetState, containerHeight = minOf(maximumContainerHeight, itemHeight * numberOfDisplayedItems + 32.dp), @@ -350,10 +352,10 @@ fun SusuYearPickerBottomSheet( itemHeight = itemHeight, numberOfDisplayedItems = numberOfDisplayedItems, onItemSelected = { _, item -> - selectedYear = item.dropLast(1).toIntOrNull() ?: currentYear + selectedYear = item.dropLast(1).toIntOrNull() ?: 0 onItemSelected(selectedYear) }, - onItemClicked = { onItemClicked(it.dropLast(1).toIntOrNull() ?: currentYear) }, + onItemClicked = { onItemClicked(it.dropLast(1).toIntOrNull() ?: 0) }, ) } } diff --git a/core/designsystem/src/main/res/values/strings.xml b/core/designsystem/src/main/res/values/strings.xml index dbfb8c01..c30916b9 100644 --- a/core/designsystem/src/main/res/values/strings.xml +++ b/core/designsystem/src/main/res/values/strings.xml @@ -11,4 +11,5 @@ 로고 이미지 알림 아이콘 필터 아이콘 + 미선택 diff --git a/core/ui/src/main/java/com/susu/core/ui/Consts.kt b/core/ui/src/main/java/com/susu/core/ui/Consts.kt index 3df5e883..bdfaa654 100644 --- a/core/ui/src/main/java/com/susu/core/ui/Consts.kt +++ b/core/ui/src/main/java/com/susu/core/ui/Consts.kt @@ -18,8 +18,10 @@ val alignList const val USER_NAME_MAX_LENGTH = 10 val nameRegex = Regex("[a-zA-Z가-힣]{0,10}") -const val INTENT_ACTION_DOWNLOAD_COMPLETE = "android.intent.action.DOWNLOAD_COMPLETE" +val USER_BIRTH_RANGE = 1930..2030 +const val INTENT_ACTION_DOWNLOAD_COMPLETE = "android.intent.action.DOWNLOAD_COMPLETE" +const val PRIVACY_POLICY_URL = "https://sites.google.com/view/team-oksusu/%ED%99%88" enum class SnsProviders( val path: String, @StringRes val nameId: Int, @@ -32,18 +34,6 @@ enum class SnsProviders( iconId = R.drawable.ic_kakao_login, backgroundColor = Color(0xFFFEE500), ), - Naver( - path = "", - nameId = R.string.sns_naver, - iconId = R.drawable.ic_kakao_login, - backgroundColor = Color.Unspecified, - ), - Google( - path = "", - nameId = R.string.sns_google, - iconId = R.drawable.ic_kakao_login, - backgroundColor = Color.Unspecified, - ), } enum class Gender(val content: String?) { diff --git a/core/ui/src/main/res/values/strings.xml b/core/ui/src/main/res/values/strings.xml index 748fd4e8..0cc767ac 100644 --- a/core/ui/src/main/res/values/strings.xml +++ b/core/ui/src/main/res/values/strings.xml @@ -22,6 +22,7 @@ 더하기 버튼 닫기 아이콘 직접 입력 + 이름 성별 남성 여성 diff --git a/feature/mypage/src/main/java/com/susu/feature/mypage/MyPagePrivacyPolicyScreen.kt b/feature/mypage/src/main/java/com/susu/feature/mypage/MyPagePrivacyPolicyScreen.kt new file mode 100644 index 00000000..b7962d0e --- /dev/null +++ b/feature/mypage/src/main/java/com/susu/feature/mypage/MyPagePrivacyPolicyScreen.kt @@ -0,0 +1,26 @@ +package com.susu.feature.mypage + +import android.webkit.WebView +import android.webkit.WebViewClient +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.viewinterop.AndroidView +import com.susu.core.ui.PRIVACY_POLICY_URL + +@Composable +fun MyPagePrivacyPolicyScreen( + modifier: Modifier = Modifier, +) { + AndroidView( + modifier = modifier.fillMaxSize(), + factory = { context -> + return@AndroidView WebView(context).apply { + webViewClient = WebViewClient() + } + }, + update = { + it.loadUrl(PRIVACY_POLICY_URL) + }, + ) +} diff --git a/feature/mypage/src/main/java/com/susu/feature/mypage/info/MyPageInfoContract.kt b/feature/mypage/src/main/java/com/susu/feature/mypage/info/MyPageInfoContract.kt index d5943907..b89a712a 100644 --- a/feature/mypage/src/main/java/com/susu/feature/mypage/info/MyPageInfoContract.kt +++ b/feature/mypage/src/main/java/com/susu/feature/mypage/info/MyPageInfoContract.kt @@ -7,6 +7,7 @@ import com.susu.core.ui.nameRegex sealed interface MyPageInfoEffect : SideEffect { data object PopBackStack : MyPageInfoEffect + data object ShowNameNotValidSnackBar : MyPageInfoEffect data class ShowSnackBar(val msg: String) : MyPageInfoEffect data class HandleException(val throwable: Throwable, val retry: () -> Unit) : MyPageInfoEffect } diff --git a/feature/mypage/src/main/java/com/susu/feature/mypage/info/MyPageInfoScreen.kt b/feature/mypage/src/main/java/com/susu/feature/mypage/info/MyPageInfoScreen.kt index 58b3ea01..3da43baa 100644 --- a/feature/mypage/src/main/java/com/susu/feature/mypage/info/MyPageInfoScreen.kt +++ b/feature/mypage/src/main/java/com/susu/feature/mypage/info/MyPageInfoScreen.kt @@ -17,10 +17,10 @@ import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue -import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip +import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign @@ -37,9 +37,11 @@ import com.susu.core.designsystem.component.button.SusuFilledButton import com.susu.core.designsystem.component.textfield.SusuBasicTextField import com.susu.core.designsystem.theme.Gray100 import com.susu.core.designsystem.theme.Gray40 +import com.susu.core.designsystem.theme.Gray50 import com.susu.core.designsystem.theme.SusuTheme import com.susu.core.ui.Gender import com.susu.core.ui.SnackbarToken +import com.susu.core.ui.USER_BIRTH_RANGE import com.susu.core.ui.extension.collectWithLifecycle import com.susu.core.ui.extension.susuClickable import com.susu.feature.mypage.R @@ -53,11 +55,16 @@ fun MyPageInfoRoute( onShowSnackbar: (SnackbarToken) -> Unit, handleException: (Throwable, () -> Unit) -> Unit, ) { + val context = LocalContext.current + viewModel.sideEffect.collectWithLifecycle { sideEffect -> when (sideEffect) { MyPageInfoEffect.PopBackStack -> popBackStack() is MyPageInfoEffect.ShowSnackBar -> onShowSnackbar(SnackbarToken(message = sideEffect.msg)) is MyPageInfoEffect.HandleException -> handleException(sideEffect.throwable, sideEffect.retry) + MyPageInfoEffect.ShowNameNotValidSnackBar -> onShowSnackbar( + SnackbarToken(message = context.getString(R.string.mypage_my_info_snackbar_invalid_name)), + ) } } @@ -123,20 +130,19 @@ fun MyPageInfoScreen( if (uiState.isEditing) { Text( modifier = Modifier + .padding(end = SusuTheme.spacing.spacing_m) .susuClickable( - runIf = uiState.isEditNameValid, onClick = onEditComplete, - ) - .padding(end = SusuTheme.spacing.spacing_m), + ), text = stringResource(id = com.susu.core.ui.R.string.word_enrollment), style = SusuTheme.typography.title_xxs, - color = Gray100, + color = if (uiState.isEditNameValid) Gray100 else Gray50, ) } else { Text( modifier = Modifier - .susuClickable(onClick = onEditStart) - .padding(end = SusuTheme.spacing.spacing_m), + .padding(end = SusuTheme.spacing.spacing_m) + .susuClickable(onClick = onEditStart), text = stringResource(id = com.susu.core.ui.R.string.word_edit), style = SusuTheme.typography.title_xxs, color = Gray100, @@ -154,7 +160,8 @@ fun MyPageInfoScreen( ) Spacer(modifier = Modifier.height(SusuTheme.spacing.spacing_m)) MyPageInfoItem( - title = "이름", + title = stringResource(id = com.susu.core.ui.R.string.word_name), + isWrong = uiState.isEditing && !uiState.isEditNameValid, ) { if (uiState.isEditing) { SusuBasicTextField( @@ -181,12 +188,24 @@ fun MyPageInfoScreen( modifier = Modifier.susuClickable( onClick = onBirthClick, ), - text = uiState.editBirth.toString(), + text = if (uiState.editBirth in USER_BIRTH_RANGE) { + uiState.editBirth.toString() + } else { + stringResource(id = com.susu.core.ui.R.string.word_not_select) + }, style = SusuTheme.typography.title_xs, color = if (uiState.birthEdited) Gray100 else Gray40, ) } else { - Text(text = uiState.userBirth.toString(), style = SusuTheme.typography.title_xs, color = Gray100) + Text( + text = if (uiState.userBirth in USER_BIRTH_RANGE) { + uiState.userBirth.toString() + } else { + stringResource(id = com.susu.core.ui.R.string.word_not_select) + }, + style = SusuTheme.typography.title_xs, + color = Gray100, + ) } } MyPageInfoItem( diff --git a/feature/mypage/src/main/java/com/susu/feature/mypage/info/MyPageInfoViewModel.kt b/feature/mypage/src/main/java/com/susu/feature/mypage/info/MyPageInfoViewModel.kt index 146697ea..bfd53849 100644 --- a/feature/mypage/src/main/java/com/susu/feature/mypage/info/MyPageInfoViewModel.kt +++ b/feature/mypage/src/main/java/com/susu/feature/mypage/info/MyPageInfoViewModel.kt @@ -50,7 +50,7 @@ class MyPageInfoViewModel @Inject constructor( intent { copy( isEditing = true, - editName = "", + editName = uiState.value.userName, editGender = uiState.value.userGender, editBirth = uiState.value.userBirth, ) @@ -78,6 +78,11 @@ class MyPageInfoViewModel @Inject constructor( } fun completeEdit() { + if (!uiState.value.isEditNameValid) { + postSideEffect(MyPageInfoEffect.ShowNameNotValidSnackBar) + return + } + viewModelScope.launch { intent { copy(isLoading = true) } patchUserUseCase(name = uiState.value.editName, gender = uiState.value.editGender.content, birth = uiState.value.editBirth) diff --git a/feature/mypage/src/main/java/com/susu/feature/mypage/info/component/MyPageInfoItem.kt b/feature/mypage/src/main/java/com/susu/feature/mypage/info/component/MyPageInfoItem.kt index ef0ddf2f..d6febb34 100644 --- a/feature/mypage/src/main/java/com/susu/feature/mypage/info/component/MyPageInfoItem.kt +++ b/feature/mypage/src/main/java/com/susu/feature/mypage/info/component/MyPageInfoItem.kt @@ -2,19 +2,30 @@ package com.susu.feature.mypage.info.component import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.material3.Text 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.graphics.Color +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp import com.susu.core.designsystem.theme.Gray60 +import com.susu.core.designsystem.theme.Red60 import com.susu.core.designsystem.theme.SusuTheme @Composable fun MyPageInfoItem( modifier: Modifier = Modifier, title: String = "", + isWrong: Boolean = false, content: @Composable () -> Unit, ) { Row( @@ -22,7 +33,44 @@ fun MyPageInfoItem( horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically, ) { - Text(text = title, style = SusuTheme.typography.title_xxs, color = Gray60) + Row { + Text(text = title, style = SusuTheme.typography.title_xxs, color = Gray60) + if (isWrong) { + Spacer(modifier = Modifier.width(SusuTheme.spacing.spacing_xxxxs)) + WrongDot() + } + } + content() } } + +@Composable +fun WrongDot( + modifier: Modifier = Modifier, + dotRadius: Dp = 2.dp, + color: Color = Red60, +) { + Spacer( + modifier = modifier.width(4.dp).wrapContentHeight() + .drawBehind { + drawCircle( + color = color, + radius = dotRadius.toPx(), + center = Offset(0f, 8.dp.toPx()), + ) + }, + ) +} + +@Preview +@Composable +fun MyPageInfoItemPreview() { + SusuTheme { + MyPageInfoItem( + title = "이름", + isWrong = true, + ) { + } + } +} diff --git a/feature/mypage/src/main/java/com/susu/feature/mypage/main/MyPageDefaultScreen.kt b/feature/mypage/src/main/java/com/susu/feature/mypage/main/MyPageDefaultScreen.kt index da34cbd4..5d9a251a 100644 --- a/feature/mypage/src/main/java/com/susu/feature/mypage/main/MyPageDefaultScreen.kt +++ b/feature/mypage/src/main/java/com/susu/feature/mypage/main/MyPageDefaultScreen.kt @@ -1,5 +1,6 @@ package com.susu.feature.mypage.main +import android.content.Context import android.os.Environment import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box @@ -16,6 +17,7 @@ import androidx.compose.material3.Icon import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color @@ -29,7 +31,6 @@ import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.susu.core.designsystem.component.appbar.SusuDefaultAppBar import com.susu.core.designsystem.component.appbar.icon.LogoIcon -import com.susu.core.designsystem.component.appbar.icon.NotificationIcon import com.susu.core.designsystem.component.button.GhostButtonColor import com.susu.core.designsystem.component.button.SmallButtonStyle import com.susu.core.designsystem.component.button.SusuGhostButton @@ -52,6 +53,7 @@ fun MyPageDefaultRoute( navigateToLogin: () -> Unit, navigateToInfo: () -> Unit, navigateToSocial: () -> Unit, + navigateToPrivacyPolicy: () -> Unit, onShowSnackbar: (SnackbarToken) -> Unit, onShowDialog: (DialogToken) -> Unit, handleException: (Throwable, () -> Unit) -> Unit, @@ -137,6 +139,7 @@ fun MyPageDefaultRoute( onExport = viewModel::showExportDialog, navigateToInfo = navigateToInfo, navigateToSocial = navigateToSocial, + navigateToPrivacyPolicy = navigateToPrivacyPolicy, ) } @@ -149,14 +152,19 @@ fun MyPageDefaultScreen( onExport: () -> Unit = {}, navigateToInfo: () -> Unit = {}, navigateToSocial: () -> Unit = {}, + navigateToPrivacyPolicy: () -> Unit = {}, ) { + val context = LocalContext.current + val currentAppVersion = remember { getAppVersion(context) } + Column( - modifier = Modifier.fillMaxSize().padding(padding), + modifier = Modifier + .fillMaxSize() + .padding(padding), ) { SusuDefaultAppBar( modifier = Modifier.padding(SusuTheme.spacing.spacing_xs), leftIcon = { LogoIcon() }, - actions = { NotificationIcon() }, ) MyPageMenuItem( @@ -196,6 +204,7 @@ fun MyPageDefaultScreen( ) MyPageMenuItem( titleText = stringResource(com.susu.feature.mypage.R.string.mypage_privacy_policy), + onMenuClick = navigateToPrivacyPolicy, ) MyPageDivider() @@ -203,7 +212,11 @@ fun MyPageDefaultScreen( MyPageMenuItem( titleText = stringResource(com.susu.feature.mypage.R.string.mypage_app_version), action = { - Text(text = stringResource(com.susu.feature.mypage.R.string.mypage_update), style = SusuTheme.typography.title_xxs, color = Gray60) + Text( + text = stringResource(com.susu.feature.mypage.R.string.mypage_update), + style = SusuTheme.typography.title_xxs, + color = Gray60, + ) }, ) @@ -218,14 +231,15 @@ fun MyPageDefaultScreen( onMenuClick = onWithdraw, ) Box( - modifier = Modifier.fillMaxWidth() + modifier = Modifier + .fillMaxWidth() .weight(1f) .background(color = Gray20) .padding(SusuTheme.spacing.spacing_m), ) { Text( modifier = Modifier.align(Alignment.TopStart), - text = stringResource(com.susu.feature.mypage.R.string.mypage_app_version) + uiState.appVersion, + text = stringResource(com.susu.feature.mypage.R.string.mypage_app_version) + " $currentAppVersion", style = SusuTheme.typography.title_xxxs, color = Gray50, ) @@ -239,6 +253,11 @@ fun MyPageDefaultScreen( } } +private fun getAppVersion(context: Context): String = runCatching { + val packageInfo = context.packageManager.getPackageInfo(context.packageName, 0) + packageInfo.versionName +}.getOrNull() ?: "" + @Composable fun MyPageDivider( modifier: Modifier = Modifier, diff --git a/feature/mypage/src/main/java/com/susu/feature/mypage/main/component/MyPageMenuItem.kt b/feature/mypage/src/main/java/com/susu/feature/mypage/main/component/MyPageMenuItem.kt index d928d968..9520aa05 100644 --- a/feature/mypage/src/main/java/com/susu/feature/mypage/main/component/MyPageMenuItem.kt +++ b/feature/mypage/src/main/java/com/susu/feature/mypage/main/component/MyPageMenuItem.kt @@ -40,7 +40,12 @@ fun MyPageMenuItem( .padding(padding), verticalAlignment = Alignment.CenterVertically, ) { - Text(modifier = Modifier.weight(1f), text = titleText, style = titleTextStyle, color = titleTextColor) + Text( + modifier = Modifier.weight(1f), + text = titleText, + style = titleTextStyle, + color = titleTextColor, + ) action?.let { Spacer(modifier = Modifier.width(actionItemPadding)) it() diff --git a/feature/mypage/src/main/java/com/susu/feature/mypage/navigation/MyPageNavigation.kt b/feature/mypage/src/main/java/com/susu/feature/mypage/navigation/MyPageNavigation.kt index ddf1aa80..874a6dd7 100644 --- a/feature/mypage/src/main/java/com/susu/feature/mypage/navigation/MyPageNavigation.kt +++ b/feature/mypage/src/main/java/com/susu/feature/mypage/navigation/MyPageNavigation.kt @@ -7,6 +7,7 @@ import androidx.navigation.NavOptions import androidx.navigation.compose.composable import com.susu.core.ui.DialogToken import com.susu.core.ui.SnackbarToken +import com.susu.feature.mypage.MyPagePrivacyPolicyScreen import com.susu.feature.mypage.info.MyPageInfoRoute import com.susu.feature.mypage.main.MyPageDefaultRoute import com.susu.feature.mypage.social.MyPageSocialRoute @@ -23,11 +24,16 @@ fun NavController.navigateMyPageSocial() { navigate(MyPageRoute.socialRoute) } +fun NavController.navigateMyPagePrivacyPolicy() { + navigate(MyPageRoute.privacyPolicyRoute) +} + fun NavGraphBuilder.myPageNavGraph( padding: PaddingValues, navigateToLogin: () -> Unit, navigateToInfo: () -> Unit, navigateToSocial: () -> Unit, + navigateToPrivacyPolicy: () -> Unit, popBackStack: () -> Unit, onShowSnackbar: (SnackbarToken) -> Unit, onShowDialog: (DialogToken) -> Unit, @@ -39,6 +45,7 @@ fun NavGraphBuilder.myPageNavGraph( navigateToLogin = navigateToLogin, navigateToInfo = navigateToInfo, navigateToSocial = navigateToSocial, + navigateToPrivacyPolicy = navigateToPrivacyPolicy, onShowSnackbar = onShowSnackbar, onShowDialog = onShowDialog, handleException = handleException, @@ -55,10 +62,14 @@ fun NavGraphBuilder.myPageNavGraph( composable(route = MyPageRoute.socialRoute) { MyPageSocialRoute(padding = padding, popBackStack = popBackStack) } + composable(route = MyPageRoute.privacyPolicyRoute) { + MyPagePrivacyPolicyScreen() + } } object MyPageRoute { const val defaultRoute = "my-page" const val infoRoute = "info" const val socialRoute = "social" + const val privacyPolicyRoute = "privacy-policy" } diff --git a/feature/mypage/src/main/java/com/susu/feature/mypage/social/MyPageSocialScreen.kt b/feature/mypage/src/main/java/com/susu/feature/mypage/social/MyPageSocialScreen.kt index 18173e31..aeb64fc2 100644 --- a/feature/mypage/src/main/java/com/susu/feature/mypage/social/MyPageSocialScreen.kt +++ b/feature/mypage/src/main/java/com/susu/feature/mypage/social/MyPageSocialScreen.kt @@ -69,8 +69,6 @@ fun MyPageSocialScreen( SocialProvider( isActive = when (it) { SnsProviders.Kakao -> AuthApiClient.instance.hasToken() - SnsProviders.Naver -> false - SnsProviders.Google -> false }, snsProviders = it, ) diff --git a/feature/mypage/src/main/res/values/strings.xml b/feature/mypage/src/main/res/values/strings.xml index ffc84c9c..7344015c 100644 --- a/feature/mypage/src/main/res/values/strings.xml +++ b/feature/mypage/src/main/res/values/strings.xml @@ -27,4 +27,5 @@ 로그인에 문제가 있다면 팀 옥수수에게 알려주세요 문의 남기기 프로필 이미지 + 이름은 한글 또는 영문 10글자로 입력해주세요 diff --git a/feature/navigator/src/main/java/com/susu/feature/navigator/MainNavigator.kt b/feature/navigator/src/main/java/com/susu/feature/navigator/MainNavigator.kt index 9bf079f1..9b5faa54 100644 --- a/feature/navigator/src/main/java/com/susu/feature/navigator/MainNavigator.kt +++ b/feature/navigator/src/main/java/com/susu/feature/navigator/MainNavigator.kt @@ -16,6 +16,7 @@ import com.susu.feature.community.navigation.navigateVoteAdd import com.susu.feature.loginsignup.navigation.LoginSignupRoute import com.susu.feature.mypage.navigation.navigateMyPage import com.susu.feature.mypage.navigation.navigateMyPageInfo +import com.susu.feature.mypage.navigation.navigateMyPagePrivacyPolicy import com.susu.feature.mypage.navigation.navigateMyPageSocial import com.susu.feature.received.navigation.ReceivedRoute import com.susu.feature.received.navigation.argument.FilterArgument @@ -153,6 +154,10 @@ internal class MainNavigator( navController.navigateMyPageSocial() } + fun navigateMyPagePrivacyPolicy() { + navController.navigateMyPagePrivacyPolicy() + } + fun navigateReceivedEnvelopeAdd() { navController.navigateReceivedEnvelopeAdd() } diff --git a/feature/navigator/src/main/java/com/susu/feature/navigator/MainScreen.kt b/feature/navigator/src/main/java/com/susu/feature/navigator/MainScreen.kt index de750911..eb9577a7 100644 --- a/feature/navigator/src/main/java/com/susu/feature/navigator/MainScreen.kt +++ b/feature/navigator/src/main/java/com/susu/feature/navigator/MainScreen.kt @@ -139,6 +139,7 @@ internal fun MainScreen( navigateToLogin = navigator::navigateLogin, navigateToInfo = navigator::navigateMyPageInfo, navigateToSocial = navigator::navigateMyPageSocial, + navigateToPrivacyPolicy = navigator::navigateMyPagePrivacyPolicy, popBackStack = navigator::popBackStackIfNotHome, onShowSnackbar = viewModel::onShowSnackbar, onShowDialog = viewModel::onShowDialog,