Skip to content

Commit 1545cbf

Browse files
committed
[BOOK-112] refactor: State의 mutableList 타입을 ImmutableList로 변경
1 parent 41bfdb3 commit 1545cbf

File tree

2 files changed

+13
-8
lines changed

2 files changed

+13
-8
lines changed

feature/login/src/main/kotlin/com/ninecraft/booket/feature/login/TermsAgreementPresenter.kt

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@ package com.ninecraft.booket.feature.login
33
import androidx.compose.runtime.Composable
44
import androidx.compose.runtime.derivedStateOf
55
import androidx.compose.runtime.getValue
6-
import androidx.compose.runtime.mutableStateListOf
6+
import androidx.compose.runtime.mutableStateOf
77
import androidx.compose.runtime.remember
8+
import androidx.compose.runtime.setValue
89
import com.ninecraft.booket.feature.home.HomeScreen
910
import com.slack.circuit.codegen.annotations.CircuitInject
1011
import com.slack.circuit.retained.rememberRetained
@@ -14,14 +15,18 @@ import dagger.assisted.Assisted
1415
import dagger.assisted.AssistedFactory
1516
import dagger.assisted.AssistedInject
1617
import dagger.hilt.android.components.ActivityRetainedComponent
18+
import kotlinx.collections.immutable.persistentListOf
19+
import kotlinx.collections.immutable.toPersistentList
1720

1821
class 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 -> {

feature/login/src/main/kotlin/com/ninecraft/booket/feature/login/TermsAgreementScreen.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,15 @@ import com.slack.circuit.runtime.CircuitUiEvent
3737
import com.slack.circuit.runtime.CircuitUiState
3838
import com.slack.circuit.runtime.screen.Screen
3939
import dagger.hilt.android.components.ActivityRetainedComponent
40+
import kotlinx.collections.immutable.ImmutableList
41+
import kotlinx.collections.immutable.persistentListOf
4042
import kotlinx.parcelize.Parcelize
4143

4244
@Parcelize
4345
data object TermsAgreementScreen : Screen {
4446
data class State(
4547
val isAllAgreed: Boolean,
46-
val agreedTerms: List<Boolean>,
48+
val agreedTerms: ImmutableList<Boolean>,
4749
val isStartButtonEnabled: Boolean,
4850
val eventSink: (Event) -> Unit,
4951
) : CircuitUiState
@@ -196,7 +198,7 @@ private fun TermsAgreementPreview() {
196198
TermsAgreement(
197199
state = TermsAgreementScreen.State(
198200
isAllAgreed = false,
199-
agreedTerms = listOf(false, false, false),
201+
agreedTerms = persistentListOf(false, false, false),
200202
isStartButtonEnabled = false,
201203
eventSink = {},
202204
),

0 commit comments

Comments
 (0)