Skip to content

Commit e408f9f

Browse files
committed
[feature/base] item 클릭 상태 hoisting 패턴 및 버튼 클릭 MVI 적용 (#30)
1 parent 7e5d148 commit e408f9f

File tree

2 files changed

+20
-5
lines changed

2 files changed

+20
-5
lines changed

presentation/src/main/java/com/everymeal/presentation/ui/signup/UnivSelectScreen.kt

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import androidx.compose.foundation.shape.RoundedCornerShape
2020
import androidx.compose.material3.Icon
2121
import androidx.compose.material3.Text
2222
import androidx.compose.runtime.Composable
23+
import androidx.compose.runtime.LaunchedEffect
2324
import androidx.compose.runtime.collectAsState
2425
import androidx.compose.runtime.getValue
2526
import androidx.compose.runtime.remember
@@ -37,7 +38,6 @@ import androidx.compose.ui.tooling.preview.Preview
3738
import androidx.compose.ui.unit.dp
3839
import androidx.compose.ui.unit.sp
3940
import androidx.hilt.navigation.compose.hiltViewModel
40-
import com.everymeal.presentation.ExampleViewModel
4141
import com.everymeal.presentation.R
4242
import com.everymeal.presentation.components.EveryMealMainButton
4343
import com.everymeal.presentation.ui.theme.EveryMeal_AndroidTheme
@@ -55,7 +55,7 @@ data class Item(
5555
@Composable
5656
fun UnivSelectScreen(
5757
viewModel: UnivSelectViewModel = hiltViewModel(),
58-
onSelectClick : () -> Unit
58+
onUnivSelectClick : () -> Unit,
5959
) {
6060
val viewState by viewModel.viewState.collectAsState()
6161

@@ -134,9 +134,19 @@ fun UnivSelectScreen(
134134
}
135135
EveryMealMainButton(
136136
text = stringResource(R.string.select),
137-
enabled = false,
137+
enabled = viewState.selectedUniv.isNotEmpty(),
138138
) {
139-
onSelectClick()
139+
viewModel.setEvent(UnivSelectContract.UnivSelectEvent.SelectButtonClicked)
140+
}
141+
}
142+
}
143+
144+
LaunchedEffect(key1 = viewModel.effect) {
145+
viewModel.effect.collect { effect ->
146+
when(effect) {
147+
UnivSelectContract.UnivSelectEffect.MoveToMain -> {
148+
onUnivSelectClick()
149+
}
140150
}
141151
}
142152
}
@@ -176,7 +186,9 @@ fun UnivSelectItem(item: Item, isSelected: Boolean, onSelectClick: (Item) -> Uni
176186
@Composable
177187
fun UnivSelectScreenPreview() {
178188
EveryMeal_AndroidTheme {
179-
UnivSelectScreen{ }
189+
UnivSelectScreen {
190+
191+
}
180192
}
181193
}
182194

presentation/src/main/java/com/everymeal/presentation/ui/signup/UnivSelectViewModel.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ class UnivSelectViewModel @Inject constructor(
1616

1717
override fun handleEvents(event: UnivSelectEvent) {
1818
when(event) {
19+
is UnivSelectEvent.SelectButtonClicked -> {
20+
sendEffect({ UnivSelectEffect.MoveToMain })
21+
}
1922
is UnivSelectEvent.SelectedUniv -> {
2023
updateState { copy(
2124
selectedUniv = event.selectedUniv

0 commit comments

Comments
 (0)