@@ -3,8 +3,9 @@ package com.ninecraft.booket.feature.login
33import androidx.compose.runtime.Composable
44import androidx.compose.runtime.derivedStateOf
55import androidx.compose.runtime.getValue
6- import androidx.compose.runtime.mutableStateListOf
6+ import androidx.compose.runtime.mutableStateOf
77import androidx.compose.runtime.remember
8+ import androidx.compose.runtime.setValue
89import com.ninecraft.booket.feature.home.HomeScreen
910import com.slack.circuit.codegen.annotations.CircuitInject
1011import com.slack.circuit.retained.rememberRetained
@@ -14,14 +15,18 @@ import dagger.assisted.Assisted
1415import dagger.assisted.AssistedFactory
1516import dagger.assisted.AssistedInject
1617import dagger.hilt.android.components.ActivityRetainedComponent
18+ import kotlinx.collections.immutable.persistentListOf
19+ import kotlinx.collections.immutable.toPersistentList
1720
1821class TermsAgreementPresenter @AssistedInject constructor(
1922 @Assisted private val navigator : Navigator ,
2023) : Presenter<TermsAgreementScreen.State> {
2124
2225 @Composable
2326 override fun present (): TermsAgreementScreen .State {
24- val agreedTerms = rememberRetained { mutableStateListOf(false , false , false ) }
27+ var agreedTerms by rememberRetained {
28+ mutableStateOf(persistentListOf(false , false , false ))
29+ }
2530
2631 val isAllAgreed by remember {
2732 derivedStateOf {
@@ -39,13 +44,11 @@ class TermsAgreementPresenter @AssistedInject constructor(
3944 when (event) {
4045 is TermsAgreementScreen .Event .OnAllTermsAgreedClick -> {
4146 val toggleAgreed = ! isAllAgreed
42- for (i in agreedTerms.indices) {
43- agreedTerms[i] = toggleAgreed
44- }
47+ agreedTerms = agreedTerms.map { toggleAgreed }.toPersistentList()
4548 }
4649
4750 is TermsAgreementScreen .Event .OnTermItemClick -> {
48- agreedTerms[ event.index] = ! agreedTerms[event.index]
51+ agreedTerms = agreedTerms.set( event.index, ! agreedTerms[event.index])
4952 }
5053
5154 is TermsAgreementScreen .Event .OnBackClick -> {
0 commit comments