Skip to content
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package com.ninecraft.booket.feature.login

import androidx.compose.runtime.Composable
import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateListOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
import androidx.compose.runtime.remember
import com.ninecraft.booket.feature.home.HomeScreen
import com.slack.circuit.codegen.annotations.CircuitInject
import com.slack.circuit.retained.rememberRetained
Expand All @@ -21,39 +21,41 @@ class TermsAgreementPresenter @AssistedInject constructor(

@Composable
override fun present(): TermsAgreementScreen.State {
var isAllAgreed by rememberRetained { mutableStateOf(false) }
val agreedTerms = rememberRetained { mutableStateListOf(false, false, false) }
var isStartButtonEnabled by rememberRetained { mutableStateOf(false) }

val isAllAgreed by remember {
derivedStateOf {
agreedTerms.all { it }
}
}

val isStartButtonEnabled by remember {
Comment thread
easyhooon marked this conversation as resolved.
Outdated
derivedStateOf {
isAllAgreed
}
}

fun handleEvent(event: TermsAgreementScreen.Event) {
when (event) {
is TermsAgreementScreen.Event.OnAllTermsAgreedClick -> {
isAllAgreed = !isAllAgreed
isStartButtonEnabled = isAllAgreed

val toggleAgreed = !isAllAgreed
for (i in agreedTerms.indices) {
agreedTerms[i] = isAllAgreed
agreedTerms[i] = toggleAgreed
}
}

is TermsAgreementScreen.Event.OnTermItemClick -> {
agreedTerms[event.index] = !agreedTerms[event.index]

val allIndividualAgreed = agreedTerms.all { it }

if (allIndividualAgreed) {
isAllAgreed = true
isStartButtonEnabled = true
} else {
isAllAgreed = false
isStartButtonEnabled = false
}
}

is TermsAgreementScreen.Event.OnBackClick -> {
navigator.pop()
}

is TermsAgreementScreen.Event.OnTermDetailClick -> {
// TODO: 웹뷰 화면으로 이동
}

is TermsAgreementScreen.Event.OnStartButtonClick -> {
navigator.resetRoot(HomeScreen)
}
Expand Down