Skip to content

Commit 0a23b1f

Browse files
committed
[BOOK-121] refactor: 누락된 약관 동의 화면 변경 반영
1 parent c5be4ab commit 0a23b1f

File tree

5 files changed

+45
-41
lines changed

5 files changed

+45
-41
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import androidx.compose.runtime.rememberCoroutineScope
77
import androidx.compose.runtime.setValue
88
import com.ninecraft.booket.core.data.api.repository.AuthRepository
99
import com.ninecraft.booket.screens.LoginScreen
10+
import com.ninecraft.booket.screens.TermsAgreementScreen
1011
import com.orhanobut.logger.Logger
1112
import com.slack.circuit.codegen.annotations.CircuitInject
1213
import com.slack.circuit.retained.rememberRetained

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

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1-
package com.ninecraft.booket.feature.login
1+
package com.ninecraft.booket.feature.termsagreement
22

33
import androidx.compose.runtime.Composable
44
import androidx.compose.runtime.derivedStateOf
55
import androidx.compose.runtime.getValue
66
import androidx.compose.runtime.mutableStateOf
77
import androidx.compose.runtime.remember
88
import androidx.compose.runtime.setValue
9-
import com.ninecraft.booket.feature.home.HomeScreen
9+
import com.ninecraft.booket.screens.HomeScreen
10+
import com.ninecraft.booket.screens.TermsAgreementScreen
1011
import com.slack.circuit.codegen.annotations.CircuitInject
1112
import com.slack.circuit.retained.rememberRetained
1213
import com.slack.circuit.runtime.Navigator
@@ -20,10 +21,10 @@ import kotlinx.collections.immutable.toPersistentList
2021

2122
class TermsAgreementPresenter @AssistedInject constructor(
2223
@Assisted private val navigator: Navigator,
23-
) : Presenter<TermsAgreementScreen.State> {
24+
) : Presenter<TermsAgreementUiState> {
2425

2526
@Composable
26-
override fun present(): TermsAgreementScreen.State {
27+
override fun present(): TermsAgreementUiState {
2728
var agreedTerms by rememberRetained {
2829
mutableStateOf(persistentListOf(false, false, false))
2930
}
@@ -34,32 +35,32 @@ class TermsAgreementPresenter @AssistedInject constructor(
3435
}
3536
}
3637

37-
fun handleEvent(event: TermsAgreementScreen.Event) {
38+
fun handleEvent(event: TermsAgreementUiEvent) {
3839
when (event) {
39-
is TermsAgreementScreen.Event.OnAllTermsAgreedClick -> {
40+
is TermsAgreementUiEvent.OnAllTermsAgreedClick -> {
4041
val toggleAgreed = !isAllAgreed
4142
agreedTerms = agreedTerms.map { toggleAgreed }.toPersistentList()
4243
}
4344

44-
is TermsAgreementScreen.Event.OnTermItemClick -> {
45+
is TermsAgreementUiEvent.OnTermItemClick -> {
4546
agreedTerms = agreedTerms.set(event.index, !agreedTerms[event.index])
4647
}
4748

48-
is TermsAgreementScreen.Event.OnBackClick -> {
49+
is TermsAgreementUiEvent.OnBackClick -> {
4950
navigator.pop()
5051
}
5152

52-
is TermsAgreementScreen.Event.OnTermDetailClick -> {
53+
is TermsAgreementUiEvent.OnTermDetailClick -> {
5354
// TODO: 웹뷰 화면으로 이동
5455
}
5556

56-
is TermsAgreementScreen.Event.OnStartButtonClick -> {
57+
is TermsAgreementUiEvent.OnStartButtonClick -> {
5758
navigator.resetRoot(HomeScreen)
5859
}
5960
}
6061
}
6162

62-
return TermsAgreementScreen.State(
63+
return TermsAgreementUiState(
6364
isAllAgreed = isAllAgreed,
6465
agreedTerms = agreedTerms,
6566
eventSink = ::handleEvent,

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

Lines changed: 10 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.ninecraft.booket.feature.login
1+
package com.ninecraft.booket.feature.termsagreement
22

33
import androidx.compose.foundation.background
44
import androidx.compose.foundation.border
@@ -32,36 +32,16 @@ import com.ninecraft.booket.core.designsystem.component.checkbox.SquareCheckBox
3232
import com.ninecraft.booket.core.designsystem.component.checkbox.TickOnlyCheckBox
3333
import com.ninecraft.booket.core.designsystem.theme.ReedTheme
3434
import com.ninecraft.booket.core.designsystem.theme.White
35+
import com.ninecraft.booket.feature.login.R
36+
import com.ninecraft.booket.screens.TermsAgreementScreen
3537
import com.slack.circuit.codegen.annotations.CircuitInject
36-
import com.slack.circuit.runtime.CircuitUiEvent
37-
import com.slack.circuit.runtime.CircuitUiState
38-
import com.slack.circuit.runtime.screen.Screen
3938
import dagger.hilt.android.components.ActivityRetainedComponent
40-
import kotlinx.collections.immutable.ImmutableList
4139
import kotlinx.collections.immutable.persistentListOf
42-
import kotlinx.parcelize.Parcelize
43-
44-
@Parcelize
45-
data object TermsAgreementScreen : Screen {
46-
data class State(
47-
val isAllAgreed: Boolean,
48-
val agreedTerms: ImmutableList<Boolean>,
49-
val eventSink: (Event) -> Unit,
50-
) : CircuitUiState
51-
52-
sealed interface Event : CircuitUiEvent {
53-
data object OnAllTermsAgreedClick : Event
54-
data class OnTermItemClick(val index: Int) : Event
55-
data object OnBackClick : Event
56-
data class OnTermDetailClick(val url: String) : Event
57-
data object OnStartButtonClick : Event
58-
}
59-
}
6040

6141
@CircuitInject(TermsAgreementScreen::class, ActivityRetainedComponent::class)
6242
@Composable
6343
internal fun TermsAgreement(
64-
state: TermsAgreementScreen.State,
44+
state: TermsAgreementUiState,
6545
modifier: Modifier = Modifier,
6646
) {
6747
Column(
@@ -71,7 +51,7 @@ internal fun TermsAgreement(
7151
) {
7252
ReedBackTopAppBar(
7353
onNavigateBack = {
74-
state.eventSink(TermsAgreementScreen.Event.OnBackClick)
54+
state.eventSink(TermsAgreementUiEvent.OnBackClick)
7555
},
7656
)
7757
Spacer(modifier = Modifier.height(ReedTheme.spacing.spacing2))
@@ -103,7 +83,7 @@ internal fun TermsAgreement(
10383
SquareCheckBox(
10484
checked = state.isAllAgreed,
10585
onCheckedChange = {
106-
state.eventSink(TermsAgreementScreen.Event.OnAllTermsAgreedClick)
86+
state.eventSink(TermsAgreementUiEvent.OnAllTermsAgreedClick)
10787
},
10888
)
10989
Spacer(modifier = Modifier.width(ReedTheme.spacing.spacing4))
@@ -122,17 +102,17 @@ internal fun TermsAgreement(
122102
title = title,
123103
checked = state.agreedTerms[index],
124104
onCheckClick = {
125-
state.eventSink(TermsAgreementScreen.Event.OnTermItemClick(index))
105+
state.eventSink(TermsAgreementUiEvent.OnTermItemClick(index))
126106
},
127107
onDetailClick = {
128-
state.eventSink(TermsAgreementScreen.Event.OnTermDetailClick(""))
108+
state.eventSink(TermsAgreementUiEvent.OnTermDetailClick(""))
129109
},
130110
)
131111
}
132112
}
133113
ReedButton(
134114
onClick = {
135-
state.eventSink(TermsAgreementScreen.Event.OnStartButtonClick)
115+
state.eventSink(TermsAgreementUiEvent.OnStartButtonClick)
136116
},
137117
modifier = Modifier
138118
.fillMaxWidth()
@@ -195,7 +175,7 @@ private fun TermItem(
195175
private fun TermsAgreementPreview() {
196176
ReedTheme {
197177
TermsAgreement(
198-
state = TermsAgreementScreen.State(
178+
state = TermsAgreementUiState(
199179
isAllAgreed = false,
200180
agreedTerms = persistentListOf(false, false, false),
201181
eventSink = {},
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.ninecraft.booket.feature.termsagreement
2+
3+
import com.slack.circuit.runtime.CircuitUiEvent
4+
import com.slack.circuit.runtime.CircuitUiState
5+
import kotlinx.collections.immutable.ImmutableList
6+
7+
data class TermsAgreementUiState(
8+
val isAllAgreed: Boolean,
9+
val agreedTerms: ImmutableList<Boolean>,
10+
val eventSink: (TermsAgreementUiEvent) -> Unit,
11+
) : CircuitUiState
12+
13+
sealed interface TermsAgreementUiEvent : CircuitUiEvent {
14+
data object OnAllTermsAgreedClick : TermsAgreementUiEvent
15+
data class OnTermItemClick(val index: Int) : TermsAgreementUiEvent
16+
data object OnBackClick : TermsAgreementUiEvent
17+
data class OnTermDetailClick(val url: String) : TermsAgreementUiEvent
18+
data object OnStartButtonClick : TermsAgreementUiEvent
19+
}

screens/src/main/kotlin/com/ninecraft/booket/screens/Screens.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,6 @@ data object LoginScreen : ReedScreen(name = "Login()")
1818

1919
@Parcelize
2020
data object SearchScreen : ReedScreen(name = "Search()")
21+
22+
@Parcelize
23+
data object TermsAgreementScreen : ReedScreen(name = "TermsAgreement()")

0 commit comments

Comments
 (0)