Skip to content

Commit 442b83e

Browse files
committed
[BOOK-168] refactor: isNextButtonEnabled 로직 derivedStateOf로 리팩토링
1 parent bd73208 commit 442b83e

File tree

1 file changed

+17
-28
lines changed

1 file changed

+17
-28
lines changed

feature/record/src/main/kotlin/com/ninecraft/booket/feature/record/register/RecordRegisterPresenter.kt

Lines changed: 17 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ package com.ninecraft.booket.feature.record.register
33
import androidx.compose.foundation.text.input.clearText
44
import androidx.compose.foundation.text.input.rememberTextFieldState
55
import androidx.compose.runtime.Composable
6-
import androidx.compose.runtime.LaunchedEffect
6+
import androidx.compose.runtime.derivedStateOf
77
import androidx.compose.runtime.getValue
88
import androidx.compose.runtime.mutableStateOf
9+
import androidx.compose.runtime.remember
910
import androidx.compose.runtime.rememberCoroutineScope
1011
import androidx.compose.runtime.setValue
1112
import com.ninecraft.booket.core.common.utils.handleException
@@ -62,7 +63,21 @@ class RecordRegisterPresenter @AssistedInject constructor(
6263
var isImpressionGuideBottomSheetVisible by rememberRetained { mutableStateOf(false) }
6364
var isExitDialogVisible by rememberRetained { mutableStateOf(false) }
6465
var isRecordSavedDialogVisible by rememberRetained { mutableStateOf(false) }
65-
var isNextButtonEnabled by rememberRetained { mutableStateOf(false) }
66+
val isNextButtonEnabled by remember {
67+
derivedStateOf {
68+
when (currentStep) {
69+
RecordStep.QUOTE -> {
70+
recordPageState.text.isNotEmpty() && recordSentenceState.text.isNotEmpty()
71+
}
72+
RecordStep.EMOTION -> {
73+
selectedEmotion != null
74+
}
75+
RecordStep.IMPRESSION -> {
76+
impressionState.text.isNotEmpty()
77+
}
78+
}
79+
}
80+
}
6681

6782
val ocrNavigator = rememberAnsweringNavigator<OcrScreen.OcrResult>(navigator) { result ->
6883
recordSentenceState.edit {
@@ -104,22 +119,6 @@ class RecordRegisterPresenter @AssistedInject constructor(
104119
}
105120
}
106121

107-
fun updateIsNextButtonEnabled() {
108-
isNextButtonEnabled = when (currentStep) {
109-
RecordStep.QUOTE -> {
110-
recordPageState.text.isNotEmpty() && recordSentenceState.text.isNotEmpty()
111-
}
112-
113-
RecordStep.EMOTION -> {
114-
selectedEmotion != null
115-
}
116-
117-
RecordStep.IMPRESSION -> {
118-
impressionState.text.isNotEmpty()
119-
}
120-
}
121-
}
122-
123122
fun handleEvent(event: RecordRegisterUiEvent) {
124123
when (event) {
125124
is RecordRegisterUiEvent.OnBackButtonClick -> {
@@ -219,16 +218,6 @@ class RecordRegisterPresenter @AssistedInject constructor(
219218
}
220219
}
221220

222-
LaunchedEffect(
223-
currentStep,
224-
recordPageState.text,
225-
recordSentenceState.text,
226-
selectedEmotion,
227-
impressionState.text,
228-
) {
229-
updateIsNextButtonEnabled()
230-
}
231-
232221
return RecordRegisterUiState(
233222
currentStep = currentStep,
234223
recordPageState = recordPageState,

0 commit comments

Comments
 (0)