Skip to content

Commit b5c0190

Browse files
authored
Merge pull request #45 from YAPP-Github/BOOK-129-feature/#44
feat: 오픈소스 라이선스 화면 UI 구현
2 parents 6ddb589 + be6f044 commit b5c0190

File tree

15 files changed

+292
-13
lines changed

15 files changed

+292
-13
lines changed

core/common/src/main/kotlin/com/ninecraft/booket/core/common/extensions/Modifier.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package com.ninecraft.booket.core.common.extensions
22

33
import android.annotation.SuppressLint
4-
import androidx.compose.foundation.LocalIndication
54
import androidx.compose.foundation.clickable
65
import androidx.compose.foundation.interaction.MutableInteractionSource
6+
import androidx.compose.material3.ripple
77
import androidx.compose.runtime.remember
88
import androidx.compose.ui.Modifier
99
import androidx.compose.ui.composed
@@ -44,7 +44,7 @@ fun Modifier.clickableSingle(
4444
onClickLabel = onClickLabel,
4545
onClick = { multipleEventsCutter.processEvent { onClick() } },
4646
role = role,
47-
indication = LocalIndication.current,
47+
indication = ripple(),
4848
interactionSource = remember { MutableInteractionSource() },
4949
)
5050
}

core/designsystem/src/main/kotlin/com/ninecraft/booket/core/designsystem/component/appbar/ReedTopAppBar.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ fun ReedTopAppBar(
6262
text = title,
6363
modifier = Modifier.weight(1f),
6464
textAlign = TextAlign.Center,
65-
style = ReedTheme.typography.heading2SemiBold,
65+
style = ReedTheme.typography.headline2SemiBold,
6666
)
6767

6868
if (endIconRes != null) {
@@ -87,14 +87,14 @@ fun ReedTopAppBar(
8787
fun ReedBackTopAppBar(
8888
modifier: Modifier = Modifier,
8989
title: String = "",
90-
onNavigateBack: () -> Unit = {},
90+
onBackClick: () -> Unit = {},
9191
) {
9292
ReedTopAppBar(
9393
modifier = modifier,
9494
title = title,
9595
startIconRes = R.drawable.ic_chevron_left,
9696
startIconDescription = "Back",
97-
startIconOnClick = onNavigateBack,
97+
startIconOnClick = onBackClick,
9898
)
9999
}
100100

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ internal fun TermsAgreement(
5050
.background(White),
5151
) {
5252
ReedBackTopAppBar(
53-
onNavigateBack = {
53+
onBackClick = {
5454
state.eventSink(TermsAgreementUiEvent.OnBackClick)
5555
},
5656
)

feature/settings/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
plugins {
44
alias(libs.plugins.booket.android.feature)
5-
alias(libs.plugins.kotlin.serialization)
5+
alias(libs.plugins.booket.kotlin.library.serialization)
66
alias(libs.plugins.kotlin.parcelize)
77
}
88

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
[
2+
{
3+
"name": "Circuit",
4+
"license": "Apache License 2.0",
5+
"url": "https://github.com/slackhq/circuit"
6+
},
7+
{
8+
"name": "Compose Effects",
9+
"license": "Apache License 2.0",
10+
"url": "https://github.com/skydoves/compose-effects"
11+
},
12+
{
13+
"name": "Compose Stable Marker",
14+
"license": "Apache License 2.0",
15+
"url": "https://github.com/skydoves/compose-stable-marker"
16+
},
17+
{
18+
"name": "Hilt",
19+
"license": "Apache License 2.0",
20+
"url": "https://dagger.dev/hilt/"
21+
},
22+
{
23+
"name": "Logger",
24+
"license": "Apache License 2.0",
25+
"url": "https://github.com/orhanobut/logger"
26+
},
27+
{
28+
"name": "OkHttp",
29+
"license": "Apache License 2.0",
30+
"url": "https://square.github.io/okhttp/"
31+
},
32+
{
33+
"name": "Retrofit",
34+
"license": "Apache License 2.0",
35+
"url": "https://square.github.io/retrofit/"
36+
},
37+
{
38+
"name": "OkHttp Logging Interceptor",
39+
"license": "Apache License 2.0",
40+
"url": "https://github.com/square/okhttp/tree/master/okhttp-logging-interceptor"
41+
},
42+
{
43+
"name": "Coil",
44+
"license": "Apache License 2.0",
45+
"url": "https://github.com/coil-kt/coil"
46+
},
47+
{
48+
"name": "Detekt",
49+
"license": "Apache License 2.0",
50+
"url": "https://github.com/detekt/detekt"
51+
},
52+
{
53+
"name": "ktlint",
54+
"license": "MIT License",
55+
"url": "https://github.com/pinterest/ktlint"
56+
}
57+
]

feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/SettingsPresenter.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import androidx.compose.runtime.Composable
44
import androidx.compose.runtime.getValue
55
import androidx.compose.runtime.mutableStateOf
66
import androidx.compose.runtime.setValue
7+
import com.ninecraft.booket.screens.OssLicensesScreen
78
import com.ninecraft.booket.screens.SettingsScreen
89
import com.slack.circuit.codegen.annotations.CircuitInject
910
import com.slack.circuit.retained.rememberRetained
@@ -34,6 +35,10 @@ class SettingsPresenter @AssistedInject constructor(
3435
// TODO: 웹뷰 화면으로 이동
3536
}
3637

38+
is SettingsUiEvent.OnOssLicensesClick -> {
39+
navigator.goTo(OssLicensesScreen)
40+
}
41+
3742
is SettingsUiEvent.OnLogoutClick -> {
3843
isLogoutBottomSheetVisible = true
3944
}

feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/SettingsScreen.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ internal fun Settings(
6060
) {
6161
ReedBackTopAppBar(
6262
title = stringResource(R.string.settings_title),
63-
onNavigateBack = {
63+
onBackClick = {
6464
state.eventSink(SettingsUiEvent.OnBackClick)
6565
},
6666
)
@@ -95,7 +95,7 @@ internal fun Settings(
9595
SettingItem(
9696
title = stringResource(R.string.settings_open_source_license),
9797
onItemClick = {
98-
state.eventSink(SettingsUiEvent.OnTermDetailClick(""))
98+
state.eventSink(SettingsUiEvent.OnOssLicensesClick)
9999
},
100100
action = {
101101
Icon(

feature/settings/src/main/kotlin/com/ninecraft/booket/feature/settings/SettingsUiState.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ data class SettingsUiState(
1313
sealed interface SettingsUiEvent : CircuitUiEvent {
1414
data object OnBackClick : SettingsUiEvent
1515
data class OnTermDetailClick(val title: String) : SettingsUiEvent
16+
data object OnOssLicensesClick : SettingsUiEvent
1617
data object OnLogoutClick : SettingsUiEvent
1718
data object OnWithdrawClick : SettingsUiEvent
1819
data object OnBottomSheetDismissed : SettingsUiEvent
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.ninecraft.booket.feature.settings.osslicenses
2+
3+
import kotlinx.serialization.Serializable
4+
5+
@Serializable
6+
data class OssLicenseInfo(
7+
val name: String,
8+
val license: String,
9+
val url: String,
10+
)
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.ninecraft.booket.feature.settings.osslicenses
2+
3+
import androidx.compose.runtime.Composable
4+
import com.ninecraft.booket.screens.OssLicensesScreen
5+
import com.slack.circuit.codegen.annotations.CircuitInject
6+
import com.slack.circuit.runtime.Navigator
7+
import com.slack.circuit.runtime.presenter.Presenter
8+
import dagger.assisted.Assisted
9+
import dagger.assisted.AssistedFactory
10+
import dagger.assisted.AssistedInject
11+
import dagger.hilt.android.components.ActivityRetainedComponent
12+
13+
class OssLicensesPresenter @AssistedInject constructor(
14+
@Assisted val navigator: Navigator,
15+
) : Presenter<OssLicensesUiState> {
16+
@Composable
17+
override fun present(): OssLicensesUiState {
18+
fun handleEvent(event: OssLicensesUiEvent) {
19+
when (event) {
20+
is OssLicensesUiEvent.OnBackClicked -> {
21+
navigator.pop()
22+
}
23+
}
24+
}
25+
return OssLicensesUiState(
26+
eventSink = ::handleEvent,
27+
)
28+
}
29+
30+
@CircuitInject(OssLicensesScreen::class, ActivityRetainedComponent::class)
31+
@AssistedFactory
32+
fun interface Factory {
33+
fun create(navigator: Navigator): OssLicensesPresenter
34+
}
35+
}

0 commit comments

Comments
 (0)