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,