Skip to content

Commit f3c3e20

Browse files
committed
chore: feature 모듈 추가 및 Circuit 환경 구축
1 parent 587a928 commit f3c3e20

File tree

24 files changed

+602
-65
lines changed

24 files changed

+602
-65
lines changed

app/build.gradle.kts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
plugins {
44
alias(libs.plugins.booket.android.application)
5-
alias(libs.plugins.booket.android.hilt)
65
alias(libs.plugins.booket.android.application.compose)
6+
alias(libs.plugins.booket.android.hilt)
77
}
88

99
android {
@@ -32,7 +32,10 @@ dependencies {
3232
implementations(
3333
projects.core.designsystem,
3434

35+
projects.feature.home,
36+
projects.feature.library,
3537
projects.feature.main,
38+
projects.feature.search,
3639

3740
libs.androidx.activity.compose,
3841
libs.androidx.startup,

build.gradle.kts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@ plugins {
55
alias(libs.plugins.gradle.dependency.handler.extensions)
66
alias(libs.plugins.kotlin.detekt)
77
alias(libs.plugins.kotlin.ktlint)
8-
alias(libs.plugins.android.application) apply false
8+
alias(libs.plugins.kotlin.parcelize) apply false
99
alias(libs.plugins.kotlin.android) apply false
1010
alias(libs.plugins.kotlin.compose) apply false
11-
alias(libs.plugins.android.library) apply false
1211
alias(libs.plugins.kotlin.serialization) apply false
12+
alias(libs.plugins.android.application) apply false
13+
alias(libs.plugins.android.library) apply false
1314
alias(libs.plugins.hilt) apply false
1415
alias(libs.plugins.ksp) apply false
1516
}

core/designsystem/build.gradle.kts

Lines changed: 8 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,16 @@
1+
@file:Suppress("INLINE_FROM_HIGHER_PLATFORM")
2+
13
plugins {
2-
alias(libs.plugins.android.library)
3-
alias(libs.plugins.kotlin.android)
4+
alias(libs.plugins.booket.android.library)
5+
alias(libs.plugins.booket.android.library.compose)
46
}
57

68
android {
7-
namespace = "com.ninecraft.booket.core.ui"
8-
compileSdk = 35
9-
10-
defaultConfig {
11-
minSdk = 28
12-
13-
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
14-
consumerProguardFiles("consumer-rules.pro")
15-
}
16-
17-
buildTypes {
18-
release {
19-
isMinifyEnabled = false
20-
proguardFiles(
21-
getDefaultProguardFile("proguard-android-optimize.txt"),
22-
"proguard-rules.pro"
23-
)
24-
}
25-
}
26-
compileOptions {
27-
sourceCompatibility = JavaVersion.VERSION_11
28-
targetCompatibility = JavaVersion.VERSION_11
29-
}
30-
kotlinOptions {
31-
jvmTarget = "11"
32-
}
9+
namespace = "com.ninecraft.booket.core.designsystem"
3310
}
3411

3512
dependencies {
36-
37-
implementation(libs.androidx.core.ktx)
38-
implementation(libs.androidx.appcompat)
39-
testImplementation(libs.junit)
40-
androidTestImplementation(libs.androidx.junit)
13+
implementations(
14+
libs.logger,
15+
)
4116
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.ninecraft.booket.core.designsystem
2+
3+
import android.content.res.Configuration.UI_MODE_NIGHT_NO
4+
import android.content.res.Configuration.UI_MODE_NIGHT_YES
5+
import androidx.compose.ui.tooling.preview.Preview
6+
7+
@Preview(
8+
name = "Light",
9+
showBackground = true,
10+
uiMode = UI_MODE_NIGHT_NO,
11+
)
12+
@Preview(
13+
name = "Dark",
14+
showBackground = true,
15+
uiMode = UI_MODE_NIGHT_YES,
16+
)
17+
annotation class ComponentPreview
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.ninecraft.booket.core.designsystem
2+
3+
import android.content.res.Configuration.UI_MODE_NIGHT_NO
4+
import android.content.res.Configuration.UI_MODE_NIGHT_YES
5+
import androidx.compose.ui.tooling.preview.Preview
6+
7+
@Preview(
8+
name = "Light",
9+
showBackground = true,
10+
uiMode = UI_MODE_NIGHT_NO,
11+
device = "spec:width=360dp,height=800dp,dpi=411",
12+
)
13+
@Preview(
14+
name = "Dark",
15+
showBackground = true,
16+
uiMode = UI_MODE_NIGHT_YES,
17+
device = "spec:width=360dp,height=800dp,dpi=411",
18+
)
19+
annotation class DevicePreview

feature/home/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/build

feature/home/build.gradle.kts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
@file:Suppress("INLINE_FROM_HIGHER_PLATFORM")
2+
3+
plugins {
4+
alias(libs.plugins.booket.android.feature)
5+
alias(libs.plugins.kotlin.serialization)
6+
alias(libs.plugins.kotlin.parcelize)
7+
}
8+
9+
android {
10+
namespace = "com.ninecraft.booket.feature.home"
11+
12+
buildFeatures {
13+
buildConfig = true
14+
}
15+
}
16+
17+
ksp {
18+
arg("circuit.codegen.mode", "hilt")
19+
}
20+
21+
dependencies {
22+
implementations(
23+
libs.logger,
24+
)
25+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.ninecraft.booket.feature.home
2+
3+
import androidx.compose.runtime.Composable
4+
import androidx.compose.runtime.rememberCoroutineScope
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 HomePresenter @AssistedInject constructor(
14+
@Assisted private val navigator: Navigator,
15+
) : Presenter<HomeScreen.State> {
16+
17+
@Composable
18+
override fun present(): HomeScreen.State {
19+
val scope = rememberCoroutineScope()
20+
21+
return HomeScreen.State {}
22+
}
23+
24+
@CircuitInject(HomeScreen::class, ActivityRetainedComponent::class)
25+
@AssistedFactory
26+
fun interface Factory {
27+
fun create(navigator: Navigator): HomePresenter
28+
}
29+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package com.ninecraft.booket.feature.home
2+
3+
import androidx.compose.runtime.Composable
4+
import androidx.compose.ui.Modifier
5+
import com.ninecraft.booket.core.designsystem.DevicePreview
6+
import com.ninecraft.booket.ui.theme.BooketTheme
7+
import com.slack.circuit.codegen.annotations.CircuitInject
8+
import com.slack.circuit.runtime.CircuitUiEvent
9+
import com.slack.circuit.runtime.CircuitUiState
10+
import com.slack.circuit.runtime.screen.Screen
11+
import dagger.hilt.android.components.ActivityRetainedComponent
12+
import kotlinx.parcelize.Parcelize
13+
14+
@Parcelize
15+
data object HomeScreen : Screen {
16+
data class State(
17+
val eventSink: (Event) -> Unit,
18+
) : CircuitUiState
19+
20+
sealed interface Event : CircuitUiEvent
21+
}
22+
23+
@CircuitInject(HomeScreen::class, ActivityRetainedComponent::class)
24+
@Composable
25+
internal fun Home(
26+
state: HomeScreen.State,
27+
modifier: Modifier = Modifier,
28+
) {
29+
}
30+
31+
@Composable
32+
internal fun HomeContent(
33+
state: HomeScreen.State,
34+
modifier: Modifier = Modifier,
35+
) {
36+
}
37+
38+
@DevicePreview
39+
@Composable
40+
private fun HomePreview() {
41+
BooketTheme {
42+
Home(
43+
state = HomeScreen.State(
44+
eventSink = {},
45+
),
46+
)
47+
}
48+
}

feature/library/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/build

0 commit comments

Comments
 (0)