11package com.threegap.bitnagil.presentation.terms
22
3- import androidx.compose.foundation.background
43import androidx.compose.foundation.layout.Column
54import androidx.compose.foundation.layout.Spacer
65import androidx.compose.foundation.layout.fillMaxSize
@@ -15,83 +14,55 @@ import androidx.compose.ui.Modifier
1514import androidx.compose.ui.tooling.preview.Preview
1615import androidx.compose.ui.unit.dp
1716import androidx.hilt.navigation.compose.hiltViewModel
18- import androidx.lifecycle.compose.collectAsStateWithLifecycle
1917import com.threegap.bitnagil.designsystem.BitnagilTheme
2018import com.threegap.bitnagil.designsystem.component.atom.BitnagilTextButton
2119import com.threegap.bitnagil.designsystem.component.block.BitnagilTopBar
2220import com.threegap.bitnagil.presentation.terms.component.TermsAgreementItem
2321import com.threegap.bitnagil.presentation.terms.component.ToggleAllAgreementsItem
24- import com.threegap.bitnagil.presentation.terms.model.TermsAgreementIntent
2522import com.threegap.bitnagil.presentation.terms.model.TermsAgreementSideEffect
2623import com.threegap.bitnagil.presentation.terms.model.TermsAgreementState
24+ import org.orbitmvi.orbit.compose.collectAsState
2725import org.orbitmvi.orbit.compose.collectSideEffect
2826
2927@Composable
3028fun TermsAgreementScreenContainer (
29+ viewModel : TermsAgreementViewModel = hiltViewModel(),
3130 navigateToTermsOfService : () -> Unit ,
3231 navigateToPrivacyPolicy : () -> Unit ,
3332 navigateToOnBoarding : () -> Unit ,
3433 navigateToBack : () -> Unit ,
35- viewmodel : TermsAgreementViewModel = hiltViewModel(),
3634) {
37- val uiState by viewmodel.stateFlow.collectAsStateWithLifecycle ()
35+ val uiState by viewModel.collectAsState ()
3836
39- viewmodel .collectSideEffect { sideEffect ->
37+ viewModel .collectSideEffect { sideEffect ->
4038 when (sideEffect) {
41- is TermsAgreementSideEffect .NavigateToPrivacyPolicy -> {
42- navigateToPrivacyPolicy()
43- }
44-
45- is TermsAgreementSideEffect .NavigateToTermsOfService -> {
46- navigateToTermsOfService()
47- }
48-
49- is TermsAgreementSideEffect .NavigateToOnBoarding -> {
50- navigateToOnBoarding()
51- }
52-
53- is TermsAgreementSideEffect .NavigateToBack -> {
54- navigateToBack()
55- }
39+ is TermsAgreementSideEffect .NavigateToPrivacyPolicy -> navigateToPrivacyPolicy()
40+ is TermsAgreementSideEffect .NavigateToTermsOfService -> navigateToTermsOfService()
41+ is TermsAgreementSideEffect .NavigateToOnBoarding -> navigateToOnBoarding()
42+ is TermsAgreementSideEffect .NavigateToBack -> navigateToBack()
5643 }
5744 }
5845
5946 TermsAgreementScreen (
6047 uiState = uiState,
61- onToggleAllAgreements = {
62- viewmodel.sendIntent(TermsAgreementIntent .ToggleAllAgreements (it))
63- },
64- onToggleTermsOfService = {
65- viewmodel.sendIntent(TermsAgreementIntent .ToggleTermsOfService (it))
66- },
67- onTogglePrivacyPolicy = {
68- viewmodel.sendIntent(TermsAgreementIntent .TogglePrivacyPolicy (it))
69- },
70- onToggleOverFourteen = {
71- viewmodel.sendIntent(TermsAgreementIntent .ToggleOverFourteen (it))
72- },
73- onShowTermsOfService = {
74- viewmodel.sendIntent(TermsAgreementIntent .ShowTermsOfService )
75- },
76- onShowPrivacyPolicy = {
77- viewmodel.sendIntent(TermsAgreementIntent .ShowPrivacyPolicy )
78- },
79- onStartButtonClick = {
80- viewmodel.submitTermsAgreement()
81- },
82- onBackButtonClick = {
83- viewmodel.sendIntent(TermsAgreementIntent .BackButtonClick )
84- },
48+ onToggleAllAgreements = viewModel::updateAllAgreements,
49+ onToggleTermsOfService = viewModel::updateTermsOfService,
50+ onTogglePrivacyPolicy = viewModel::updatePrivacyPolicy,
51+ onToggleOverFourteen = viewModel::updateOverFourteen,
52+ onShowTermsOfService = viewModel::navigateToTermsOfService,
53+ onShowPrivacyPolicy = viewModel::navigateToPrivacyPolicy,
54+ onStartButtonClick = viewModel::submitTermsAgreement,
55+ onBackButtonClick = viewModel::navigateToBack,
8556 )
8657}
8758
8859@Composable
8960private fun TermsAgreementScreen (
9061 uiState : TermsAgreementState ,
9162 onToggleAllAgreements : (Boolean ) -> Unit ,
92- onToggleTermsOfService : (Boolean ) -> Unit ,
93- onTogglePrivacyPolicy : (Boolean ) -> Unit ,
94- onToggleOverFourteen : (Boolean ) -> Unit ,
63+ onToggleTermsOfService : () -> Unit ,
64+ onTogglePrivacyPolicy : () -> Unit ,
65+ onToggleOverFourteen : () -> Unit ,
9566 onShowTermsOfService : () -> Unit ,
9667 onShowPrivacyPolicy : () -> Unit ,
9768 onStartButtonClick : () -> Unit ,
@@ -101,7 +72,6 @@ private fun TermsAgreementScreen(
10172 Column (
10273 modifier = modifier
10374 .fillMaxSize()
104- .background(BitnagilTheme .colors.white)
10575 .statusBarsPadding(),
10676 ) {
10777 BitnagilTopBar (
@@ -117,7 +87,7 @@ private fun TermsAgreementScreen(
11787 ) {
11888 Text (
11989 text = " 빛나길 이용을 위해\n 필수 약관에 동의해 주세요." ,
120- color = BitnagilTheme .colors.navy500 ,
90+ color = BitnagilTheme .colors.coolGray10 ,
12191 style = BitnagilTheme .typography.title2Bold,
12292 )
12393
@@ -132,23 +102,23 @@ private fun TermsAgreementScreen(
132102
133103 TermsAgreementItem (
134104 title = " (필수) 서비스 이용약관 동의" ,
135- onCheckedChange = { onToggleTermsOfService(! uiState.agreedTermsOfService ) },
105+ onCheckedChange = { onToggleTermsOfService() },
136106 isChecked = uiState.agreedTermsOfService,
137107 showMore = true ,
138108 onClickShowMore = onShowTermsOfService,
139109 )
140110
141111 TermsAgreementItem (
142112 title = " (필수) 개인정보 수집·이용 동의" ,
143- onCheckedChange = { onTogglePrivacyPolicy(! uiState.agreedPrivacyPolicy ) },
113+ onCheckedChange = { onTogglePrivacyPolicy() },
144114 isChecked = uiState.agreedPrivacyPolicy,
145115 showMore = true ,
146116 onClickShowMore = onShowPrivacyPolicy,
147117 )
148118
149119 TermsAgreementItem (
150120 title = " (필수) 만 14세 이상입니다." ,
151- onCheckedChange = { onToggleOverFourteen(! uiState.agreedOverFourteen ) },
121+ onCheckedChange = { onToggleOverFourteen() },
152122 isChecked = uiState.agreedOverFourteen,
153123 )
154124 }
@@ -167,11 +137,11 @@ private fun TermsAgreementScreen(
167137 }
168138}
169139
170- @Preview
140+ @Preview(showBackground = true )
171141@Composable
172142private fun TermsAgreementScreenPreview () {
173143 TermsAgreementScreen (
174- uiState = TermsAgreementState () ,
144+ uiState = TermsAgreementState . INIT ,
175145 onToggleAllAgreements = {},
176146 onToggleTermsOfService = {},
177147 onTogglePrivacyPolicy = {},
0 commit comments