Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package org.sopt.certi.presentation.model

object UrlConstants {
const val PRIVACY_POLICY = "https://tremendous-baryonyx-347.notion.site/3015e9d69a268066a9c2fcd0ed802c02?pvs=73"
const val TERMS_OF_SERVICE = "https://tremendous-baryonyx-347.notion.site/3015e9d69a2680a98ce4e96faf2ce06d?pvs=73"
const val INQUIRY_OPEN_CHAT = "https://open.kakao.com/o/sTZ4Jwfi"
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalUriHandler
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
Expand All @@ -23,6 +24,7 @@ import org.sopt.certi.core.util.screenHeightDp
import org.sopt.certi.core.util.screenWidthDp
import org.sopt.certi.domain.model.user.CertificationCount
import org.sopt.certi.domain.model.user.MyPageInfo
import org.sopt.certi.presentation.model.UrlConstants
import org.sopt.certi.presentation.ui.mypage.component.MyPageCertMenuItem
import org.sopt.certi.presentation.ui.mypage.component.MyPageMenuItem
import org.sopt.certi.presentation.ui.mypage.component.MyPageProfile
Expand All @@ -36,10 +38,10 @@ fun MyPageMainRoute(
navigateToSchoolInfo: () -> Unit,
navigateToCertManage: () -> Unit,
navigateToSetting: () -> Unit,
navigateToQuestion: () -> Unit,
viewModel: MyPageMainViewModel = hiltViewModel()
) {
val uiState by viewModel.uiState.collectAsStateWithLifecycle()
val uriHandler = LocalUriHandler.current

LifecycleEventEffect(Lifecycle.Event.ON_RESUME) {
viewModel.loadMyPageData()
Expand All @@ -51,7 +53,7 @@ fun MyPageMainRoute(
onSchoolInfoClick = navigateToSchoolInfo,
onCertManageClick = navigateToCertManage,
onSettingClick = navigateToSetting,
onQuestionsClick = navigateToQuestion,
onQuestionsClick = { uriHandler.openUri(UrlConstants.INQUIRY_OPEN_CHAT) },
modifier = Modifier.padding(padding)
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,7 @@ fun NavGraphBuilder.myPageNavGraph(
navigateToPersonalInfo = navController::navigateToPersonalInfo,
navigateToSchoolInfo = navController::navigateToAcademicInfo,
navigateToCertManage = navController::navigateToMyCertification,
navigateToSetting = navController::navigateToSetting,
navigateToQuestion = {}
navigateToSetting = navController::navigateToSetting
)
}
composable<MyPageRoute.Setting> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.platform.LocalUriHandler
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.tooling.preview.Preview
Expand All @@ -41,6 +42,7 @@ import org.sopt.certi.core.util.noRippleClickable
import org.sopt.certi.core.util.screenHeightDp
import org.sopt.certi.core.util.screenWidthDp
import org.sopt.certi.core.util.widthForScreenPercentage
import org.sopt.certi.presentation.model.UrlConstants
import org.sopt.certi.presentation.ui.setting.component.CustomCheckbox
import org.sopt.certi.presentation.ui.setting.component.CustomSwitch
import org.sopt.certi.presentation.ui.setting.component.MarketingConfirmSnackbar
Expand All @@ -58,6 +60,7 @@ fun SettingNotificationRoute(
val uiState by viewModel.uiState.collectAsStateWithLifecycle()
val lifecycleOwner = LocalLifecycleOwner.current
val snackbarHostState = remember { SnackbarHostState() }
val uriHandler = LocalUriHandler.current

LaunchedEffect(viewModel.sideEffect, lifecycleOwner) {
viewModel.sideEffect.flowWithLifecycle(lifecycleOwner.lifecycle).collect {
Expand Down Expand Up @@ -95,6 +98,7 @@ fun SettingNotificationRoute(
onCheckboxCheckChange = { checked ->
viewModel.onCheckboxCheckChange(checked)
},
onPrivacyAgreement = { uriHandler.openUri(UrlConstants.TERMS_OF_SERVICE) },
modifier = Modifier.padding(innerPadding)
)
}
Expand All @@ -108,6 +112,7 @@ private fun SettingNotificationScreen(
uiState: SettingNotificationUiState,
onSwitchCheckChange: (Boolean) -> Unit,
onCheckboxCheckChange: (Boolean) -> Unit,
onPrivacyAgreement: () -> Unit,
modifier: Modifier = Modifier
) {
Column(
Expand Down Expand Up @@ -176,7 +181,7 @@ private fun SettingNotificationScreen(
Icon(
imageVector = ImageVector.vectorResource(R.drawable.ic_arrowright_24),
contentDescription = null,
modifier = Modifier.noRippleClickable({})
modifier = Modifier.noRippleClickable(onPrivacyAgreement)
)
}

Expand Down Expand Up @@ -204,7 +209,8 @@ private fun SettingNotificationPreview() {
SettingNotificationScreen(
uiState = uiState,
onSwitchCheckChange = { },
onCheckboxCheckChange = {}
onCheckboxCheckChange = {},
onPrivacyAgreement = {}
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,12 @@ import org.sopt.certi.presentation.ui.setting.component.LogoutButton
import org.sopt.certi.ui.theme.CERTITheme
import org.sopt.certi.ui.theme.CertiTheme
import androidx.compose.runtime.getValue
import androidx.compose.ui.platform.LocalUriHandler
import androidx.lifecycle.compose.LocalLifecycleOwner
import androidx.lifecycle.flowWithLifecycle
import org.sopt.certi.BuildConfig
import org.sopt.certi.core.component.dialog.CertiDeleteDialog
import org.sopt.certi.presentation.model.UrlConstants
import org.sopt.certi.presentation.ui.setting.component.DeleteAccountDialog
import org.sopt.certi.presentation.ui.setting.sideEffect.SettingSideEffect

Expand All @@ -42,8 +44,8 @@ fun SettingRoute(
viewModel: SettingViewModel = hiltViewModel()
) {
val uiState by viewModel.uiState.collectAsStateWithLifecycle()

val lifecycleOwner = LocalLifecycleOwner.current
val uriHandler = LocalUriHandler.current

LaunchedEffect(viewModel.sideEffect, lifecycleOwner) {
viewModel.sideEffect.flowWithLifecycle(lifecycleOwner.lifecycle).collect {
Expand Down Expand Up @@ -71,6 +73,7 @@ fun SettingRoute(

SettingScreen(
onNavigateToSettingNotification = navigateToSettingNotification,
onPrivacyPolicyClick = { uriHandler.openUri(UrlConstants.PRIVACY_POLICY) },
onDeleteAccountClick = viewModel::onDeleteAccountClick,
onLogoutClick = viewModel::onLogoutClick,
modifier = Modifier.padding(padding)
Expand All @@ -80,6 +83,7 @@ fun SettingRoute(
@Composable
fun SettingScreen(
onNavigateToSettingNotification: () -> Unit,
onPrivacyPolicyClick: () -> Unit,
onDeleteAccountClick: () -> Unit,
onLogoutClick: () -> Unit,
modifier: Modifier = Modifier
Expand Down Expand Up @@ -113,7 +117,7 @@ fun SettingScreen(

MenuRow(
text = stringResource(R.string.setting_privacy_policy),
onClick = {}
onClick = onPrivacyPolicyClick
)

MenuRow(
Expand Down Expand Up @@ -146,6 +150,7 @@ private fun SettingPreview() {
CERTITheme {
SettingScreen(
onNavigateToSettingNotification = {},
onPrivacyPolicyClick = {},
onDeleteAccountClick = {},
onLogoutClick = {}
)
Expand Down