11package com.ninecraft.booket.feature.login
22
33import androidx.compose.runtime.Composable
4+ import androidx.compose.runtime.derivedStateOf
45import androidx.compose.runtime.getValue
56import androidx.compose.runtime.mutableStateListOf
6- import androidx.compose.runtime.mutableStateOf
7- import androidx.compose.runtime.setValue
7+ import androidx.compose.runtime.remember
88import com.ninecraft.booket.feature.home.HomeScreen
99import com.slack.circuit.codegen.annotations.CircuitInject
1010import com.slack.circuit.retained.rememberRetained
@@ -21,39 +21,41 @@ class TermsAgreementPresenter @AssistedInject constructor(
2121
2222 @Composable
2323 override fun present (): TermsAgreementScreen .State {
24- var isAllAgreed by rememberRetained { mutableStateOf(false ) }
2524 val agreedTerms = rememberRetained { mutableStateListOf(false , false , false ) }
26- var isStartButtonEnabled by rememberRetained { mutableStateOf(false ) }
25+
26+ val isAllAgreed by remember {
27+ derivedStateOf {
28+ agreedTerms.all { it }
29+ }
30+ }
31+
32+ val isStartButtonEnabled by remember {
33+ derivedStateOf {
34+ isAllAgreed
35+ }
36+ }
2737
2838 fun handleEvent (event : TermsAgreementScreen .Event ) {
2939 when (event) {
3040 is TermsAgreementScreen .Event .OnAllTermsAgreedClick -> {
31- isAllAgreed = ! isAllAgreed
32- isStartButtonEnabled = isAllAgreed
33-
41+ val toggleAgreed = ! isAllAgreed
3442 for (i in agreedTerms.indices) {
35- agreedTerms[i] = isAllAgreed
43+ agreedTerms[i] = toggleAgreed
3644 }
3745 }
46+
3847 is TermsAgreementScreen .Event .OnTermItemClick -> {
3948 agreedTerms[event.index] = ! agreedTerms[event.index]
40-
41- val allIndividualAgreed = agreedTerms.all { it }
42-
43- if (allIndividualAgreed) {
44- isAllAgreed = true
45- isStartButtonEnabled = true
46- } else {
47- isAllAgreed = false
48- isStartButtonEnabled = false
49- }
5049 }
50+
5151 is TermsAgreementScreen .Event .OnBackClick -> {
5252 navigator.pop()
5353 }
54+
5455 is TermsAgreementScreen .Event .OnTermDetailClick -> {
5556 // TODO: 웹뷰 화면으로 이동
5657 }
58+
5759 is TermsAgreementScreen .Event .OnStartButtonClick -> {
5860 navigator.resetRoot(HomeScreen )
5961 }
0 commit comments