From 6b5dab5bc687137b73038eea899f5316401948ac Mon Sep 17 00:00:00 2001 From: Jokwanhee Date: Sun, 14 Apr 2024 02:32:35 +0900 Subject: [PATCH 1/3] version catalogs --- .idea/deploymentTargetDropDown.xml | 10 +++ .idea/gradle.xml | 15 ++++ .idea/migrations.xml | 10 +++ .idea/misc.xml | 1 + app/build.gradle.kts | 75 ++++--------------- build-logic/convention/.gitignore | 1 + build-logic/convention/build.gradle.kts | 27 +++++++ ...droidApplicationComposeConventionPlugin.kt | 19 +++++ .../AndroidApplicationConventionPlugin.kt | 18 +++++ .../koreatech/convention/AndroidCompose.kt | 36 +++++++++ .../koreatech/convention/AndroidProject.kt | 58 ++++++++++++++ .../convention/DependencyHandlerExtensions.kt | 23 ++++++ build-logic/settings.gradle.kts | 14 ++++ build.gradle.kts | 10 ++- gradle/libs.versions.toml | 60 +++++++++++++++ settings.gradle.kts | 1 + 16 files changed, 317 insertions(+), 61 deletions(-) create mode 100644 .idea/deploymentTargetDropDown.xml create mode 100644 .idea/migrations.xml create mode 100644 build-logic/convention/.gitignore create mode 100644 build-logic/convention/build.gradle.kts create mode 100644 build-logic/convention/src/main/java/AndroidApplicationComposeConventionPlugin.kt create mode 100644 build-logic/convention/src/main/java/AndroidApplicationConventionPlugin.kt create mode 100644 build-logic/convention/src/main/java/com/koreatech/convention/AndroidCompose.kt create mode 100644 build-logic/convention/src/main/java/com/koreatech/convention/AndroidProject.kt create mode 100644 build-logic/convention/src/main/java/com/koreatech/convention/DependencyHandlerExtensions.kt create mode 100644 build-logic/settings.gradle.kts create mode 100644 gradle/libs.versions.toml diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml new file mode 100644 index 0000000..0c0c338 --- /dev/null +++ b/.idea/deploymentTargetDropDown.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml index ae388c2..f37e1b0 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -4,6 +4,18 @@ diff --git a/.idea/migrations.xml b/.idea/migrations.xml new file mode 100644 index 0000000..f8051a6 --- /dev/null +++ b/.idea/migrations.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 8978d23..0ad17cb 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,3 +1,4 @@ + diff --git a/app/build.gradle.kts b/app/build.gradle.kts index cae9627..332871b 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,23 +1,17 @@ + plugins { - id("com.android.application") - id("org.jetbrains.kotlin.android") + id("pohahang.plugin.application") + id("pohahang.plugin.application.compose") } android { namespace = "com.koreatech.kwanhee_jo_compose_study" - compileSdk = 34 defaultConfig { applicationId = "com.koreatech.kwanhee_jo_compose_study" - minSdk = 26 targetSdk = 34 versionCode = 1 versionName = "1.0" - - testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" - vectorDrawables { - useSupportLibrary = true - } } buildTypes { @@ -29,57 +23,20 @@ android { ) } } - compileOptions { - sourceCompatibility = JavaVersion.VERSION_1_8 - targetCompatibility = JavaVersion.VERSION_1_8 - } - kotlinOptions { - jvmTarget = "1.8" - } - buildFeatures { - compose = true - } - composeOptions { - kotlinCompilerExtensionVersion = "1.4.3" - } - packaging { - resources { - excludes += "/META-INF/{AL2.0,LGPL2.1}" - } - } } dependencies { - - implementation("androidx.core:core-ktx:1.9.0") - implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.7.0") - implementation("androidx.activity:activity-compose:1.8.2") - implementation(platform("androidx.compose:compose-bom:2023.03.00")) - implementation("androidx.compose.ui:ui") - implementation("androidx.compose.ui:ui-graphics") - implementation("androidx.compose.ui:ui-tooling-preview") - implementation("androidx.compose.material3:material3") - testImplementation("junit:junit:4.13.2") - androidTestImplementation("androidx.test.ext:junit:1.1.5") - androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") - - androidTestImplementation(platform("androidx.compose:compose-bom:2023.03.00")) - androidTestImplementation("androidx.compose.ui:ui-test-junit4") - debugImplementation("androidx.compose.ui:ui-tooling") - debugImplementation("androidx.compose.ui:ui-test-manifest") - - // orbit - implementation("org.orbit-mvi:orbit-core:6.1.1") - implementation("org.orbit-mvi:orbit-viewmodel:6.1.1") - implementation("org.orbit-mvi:orbit-compose:6.1.1") - testImplementation("org.orbit-mvi:orbit-test:6.1.1") - - // viewmodel - implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.6.1") - - // Navigation Compose - implementation ("androidx.navigation:navigation-compose:2.4.2") - - // coil - implementation("io.coil-kt:coil-compose:2.6.0") + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.lifecycle.runtime.ktx) + implementation(libs.androidx.activity.compose) + implementation(libs.androidx.lifecycle.viewmodel.compose) + implementation(libs.androidx.navigation.compose) + + implementation(libs.bundles.orbit) + implementation(libs.coil.compose) + + testImplementation(libs.junit4) + testImplementation(libs.orbit.test) + androidTestImplementation(libs.androidx.test.ext) + androidTestImplementation(libs.androidx.test.espresso) } \ No newline at end of file diff --git a/build-logic/convention/.gitignore b/build-logic/convention/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/build-logic/convention/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/build-logic/convention/build.gradle.kts b/build-logic/convention/build.gradle.kts new file mode 100644 index 0000000..6bdd96e --- /dev/null +++ b/build-logic/convention/build.gradle.kts @@ -0,0 +1,27 @@ +@Suppress("DSL_SCOPE_VIOLATION") // TODO: Remove once KTIJ-19369 is fixed +plugins { + `kotlin-dsl` +} + +java { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 +} + +dependencies { + compileOnly(libs.android.gradlePlugin) + compileOnly(libs.kotlin.gradlePlugin) +} + +gradlePlugin { + plugins { + register("AndroidApplicationConventionPlugin") { + id = "pohahang.plugin.application" + implementationClass = "AndroidApplicationConventionPlugin" + } + register("AndroidApplicationComposeConventionPlugin") { + id = "pohahang.plugin.application.compose" + implementationClass = "AndroidApplicationComposeConventionPlugin" + } + } +} \ No newline at end of file diff --git a/build-logic/convention/src/main/java/AndroidApplicationComposeConventionPlugin.kt b/build-logic/convention/src/main/java/AndroidApplicationComposeConventionPlugin.kt new file mode 100644 index 0000000..af42186 --- /dev/null +++ b/build-logic/convention/src/main/java/AndroidApplicationComposeConventionPlugin.kt @@ -0,0 +1,19 @@ +import com.android.build.gradle.internal.dsl.BaseAppModuleExtension +import com.koreatech.convention.configureAndroidCompose +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.getByType + +internal class AndroidApplicationComposeConventionPlugin: Plugin { + override fun apply(target: Project) { + with(target) { + with(pluginManager) { + apply("com.android.application") + apply("org.jetbrains.kotlin.android") + apply("kotlin-parcelize") + } + val extension = extensions.getByType() + configureAndroidCompose(extension) + } + } +} \ No newline at end of file diff --git a/build-logic/convention/src/main/java/AndroidApplicationConventionPlugin.kt b/build-logic/convention/src/main/java/AndroidApplicationConventionPlugin.kt new file mode 100644 index 0000000..6f657a2 --- /dev/null +++ b/build-logic/convention/src/main/java/AndroidApplicationConventionPlugin.kt @@ -0,0 +1,18 @@ +import com.android.build.api.dsl.ApplicationExtension +import com.koreatech.convention.configureAndroidProject +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.kotlin.dsl.configure + +internal class AndroidApplicationConventionPlugin : Plugin { + override fun apply(target: Project) { + with(target) { + with(pluginManager) { + apply("com.android.application") + } + extensions.configure { + configureAndroidProject(this) + } + } + } +} \ No newline at end of file diff --git a/build-logic/convention/src/main/java/com/koreatech/convention/AndroidCompose.kt b/build-logic/convention/src/main/java/com/koreatech/convention/AndroidCompose.kt new file mode 100644 index 0000000..130379b --- /dev/null +++ b/build-logic/convention/src/main/java/com/koreatech/convention/AndroidCompose.kt @@ -0,0 +1,36 @@ +package com.koreatech.convention + +import com.android.build.api.dsl.CommonExtension +import org.gradle.api.Project +import org.gradle.api.artifacts.VersionCatalogsExtension +import org.gradle.kotlin.dsl.dependencies +import org.gradle.kotlin.dsl.getByType + +internal fun Project.configureAndroidCompose( + commonExtension: CommonExtension<*, *, *, *, *>, +) { + val libs = extensions.getByType().named("libs") + + commonExtension.apply { + composeOptions { + kotlinCompilerExtensionVersion = + libs.findVersion("composeCompilerVersion").get().requiredVersion + } + buildFeatures { + compose = true + } + + packaging { + resources { + excludes += "/META-INF/{AL2.0,LGPL2.1}" + } + } + } + dependencies { + api(platform(libs.findLibrary("androidx.compose.bom").get())) + implementation(libs.findBundle("compose").get()) + debugImplementation(libs.findLibrary("androidx.compose.ui.test.manifest").get()) + androidTestImplementation(libs.findLibrary("androidx.compose.ui.test").get()) + } +} + diff --git a/build-logic/convention/src/main/java/com/koreatech/convention/AndroidProject.kt b/build-logic/convention/src/main/java/com/koreatech/convention/AndroidProject.kt new file mode 100644 index 0000000..0875af3 --- /dev/null +++ b/build-logic/convention/src/main/java/com/koreatech/convention/AndroidProject.kt @@ -0,0 +1,58 @@ +package com.koreatech.convention + +import com.android.build.api.dsl.CommonExtension +import org.gradle.api.JavaVersion +import org.gradle.api.Project +import org.gradle.api.plugins.ExtensionAware +import org.gradle.api.plugins.JavaPluginExtension +import org.gradle.kotlin.dsl.configure +import org.gradle.kotlin.dsl.provideDelegate +import org.gradle.kotlin.dsl.withType +import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + +internal fun Project.configureAndroidProject( + commonExtension: CommonExtension<*, *, *, *, *>, +) { + commonExtension.apply { + + compileSdk = 34 + + defaultConfig { + minSdk = 26 + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + vectorDrawables.useSupportLibrary = true + } + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + } + configureKotlinJvm() +} + +internal fun Project.configureKotlinJvm() { + extensions.configure { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + configureKotlin() +} + +private fun Project.configureKotlin() { + tasks.withType().configureEach { + kotlinOptions { + jvmTarget = JavaVersion.VERSION_17.toString() + // Treat all Kotlin warnings as errors (disabled by default) + // Override by setting warningsAsErrors=true in your ~/.gradle/gradle.properties + val warningsAsErrors: String? by project + allWarningsAsErrors = warningsAsErrors.toBoolean() + freeCompilerArgs = freeCompilerArgs + listOf( + // Enable experimental coroutines APIs, including Flow + "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi", + ) + } + } +} \ No newline at end of file diff --git a/build-logic/convention/src/main/java/com/koreatech/convention/DependencyHandlerExtensions.kt b/build-logic/convention/src/main/java/com/koreatech/convention/DependencyHandlerExtensions.kt new file mode 100644 index 0000000..f6dca6d --- /dev/null +++ b/build-logic/convention/src/main/java/com/koreatech/convention/DependencyHandlerExtensions.kt @@ -0,0 +1,23 @@ +package com.koreatech.convention + +import org.gradle.api.artifacts.dsl.DependencyHandler + +fun DependencyHandler.implementation(dependency: Any) { + add("implementation", dependency) +} + +fun DependencyHandler.debugImplementation(dependency: Any) { + add("debugImplementation", dependency) +} + +fun DependencyHandler.api(dependency: Any) { + add("api", dependency) +} + +fun DependencyHandler.androidTestImplementation(dependency: Any) { + add("androidTestImplementation", dependency) +} + +fun DependencyHandler.testImplementation(dependency: Any) { + add("testImplementation", dependency) +} \ No newline at end of file diff --git a/build-logic/settings.gradle.kts b/build-logic/settings.gradle.kts new file mode 100644 index 0000000..6225785 --- /dev/null +++ b/build-logic/settings.gradle.kts @@ -0,0 +1,14 @@ +dependencyResolutionManagement { + repositories { + google() + mavenCentral() + } + versionCatalogs { + create("libs") { + from(files("../gradle/libs.versions.toml")) + } + } +} + +rootProject.name = "build-logic" +include(":convention") \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index 5873551..64b94d7 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,5 +1,11 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. +buildscript { + repositories { + google() + mavenCentral() + } +} plugins { - id("com.android.application") version "8.1.4" apply false - id("org.jetbrains.kotlin.android") version "1.8.10" apply false + alias(libs.plugins.android.application) apply false + alias(libs.plugins.kotlin.anroid) apply false } \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 0000000..be7d047 --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,60 @@ +[versions] +androidGradlePlugin = "8.1.4" +androidxCore = "1.9.0" +androidxLifecycle = "2.7.0" +androidxActivity = "1.8.2" +androidxNavigation = "2.4.2" + +androidxComposeBom = "2023.03.00" + +androidxTestExt = "1.1.5" +androidxEspresso = "3.5.1" + +kotlinVersion = "1.8.10" +composeCompilerVersion = "1.4.3" + +orbitVersion = "6.1.1" +coilCompose = "2.6.0" + + +junit4 = "4.13.2" +org-jetbrains-kotlin-jvm = "1.8.10" + +[libraries] +androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "androidxCore" } +androidx-lifecycle-runtime-ktx = { group = "androidx.lifecycle", name = "lifecycle-runtime-ktx", version.ref = "androidxLifecycle" } +androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "androidxActivity" } +androidx-lifecycle-viewmodel-compose = { group = "androidx.lifecycle", name = "lifecycle-viewmodel-compose", version.ref = "androidxLifecycle" } +androidx-navigation-compose = { group = "androidx.navigation", name = "navigation-compose", version.ref = "androidxNavigation" } +androidx-test-ext = { group = "androidx.test.ext", name = "junit", version.ref = "androidxTestExt" } +androidx-test-espresso = { group = "androidx.test.espresso", name = "espresso-cor", version.ref = "androidxEspresso" } + +androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "androidxComposeBom" } +androidx-compose-ui = { module = "androidx.compose.ui:ui" } +androidx-compose-ui-graphics = { module = "androidx.compose.ui:ui-graphics" } +androidx-compose-ui-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview" } +androidx-compose-material3 = { module = "androidx.compose.material3:material3" } +androidx-compose-ui-test = { module = "androidx.compose.ui:ui-test-junit4" } +androidx-compose-ui-test-manifest = { module = "androidx.compose.ui:ui-test-manifest" } + +junit4 = { group = "junit", name = "junit", version.ref = "junit4" } + +orbit-core = { group = "org.orbit-mvi", name = "orbit-core", version.ref = "orbitVersion" } +orbit-viewmodel = { group = "org.orbit-mvi", name = "orbit-viewmodel", version.ref = "orbitVersion" } +orbit-compose = { group = "org.orbit-mvi", name = "orbit-compose", version.ref = "orbitVersion" } +orbit-test = { group = "org.orbit-mvi", name = "orbit-test", version.ref = "orbitVersion" } + +coil-compose = { group = "io.coil-kt", name = "coil-compose", version.ref = "coilCompose" } + +# Dependencies build-logic +android-gradlePlugin = { group = "com.android.tools.build", name = "gradle", version.ref = "androidGradlePlugin" } +kotlin-gradlePlugin = { group = "org.jetbrains.kotlin", name = "kotlin-gradle-plugin", version.ref = "kotlinVersion" } + + +[plugins] +android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } +kotlin-anroid = { id = "org.jetbrains.kotlin.android", version.ref = "kotlinVersion" } + +[bundles] +orbit = ["orbit-core", "orbit-viewmodel", "orbit-compose"] +compose = ["androidx-compose-bom", "androidx-compose-ui", "androidx-compose-ui-graphics", "androidx-compose-ui-tooling-preview", "androidx-compose-material3"] \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index 57b89b7..5f37e5c 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,4 +1,5 @@ pluginManagement { + includeBuild("build-logic") repositories { google() mavenCentral() From fe3cb5d159074dc69c9d856673ba891fe2487ce2 Mon Sep 17 00:00:00 2001 From: Jokwanhee Date: Sun, 14 Apr 2024 11:35:51 +0900 Subject: [PATCH 2/3] add feature plugin --- .idea/misc.xml | 1 - app/build.gradle.kts | 10 +------- build-logic/convention/build.gradle.kts | 4 ++++ .../AndroidApplicationConventionPlugin.kt | 1 + .../java/AndroidFeatureConventionPlugin.kt | 24 +++++++++++++++++++ 5 files changed, 30 insertions(+), 10 deletions(-) create mode 100644 build-logic/convention/src/main/java/AndroidFeatureConventionPlugin.kt diff --git a/.idea/misc.xml b/.idea/misc.xml index 0ad17cb..8978d23 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,4 +1,3 @@ - diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 332871b..b921a81 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -2,6 +2,7 @@ plugins { id("pohahang.plugin.application") id("pohahang.plugin.application.compose") + id("pohahang.plugin.feature") } android { @@ -26,15 +27,6 @@ android { } dependencies { - implementation(libs.androidx.core.ktx) - implementation(libs.androidx.lifecycle.runtime.ktx) - implementation(libs.androidx.activity.compose) - implementation(libs.androidx.lifecycle.viewmodel.compose) - implementation(libs.androidx.navigation.compose) - - implementation(libs.bundles.orbit) - implementation(libs.coil.compose) - testImplementation(libs.junit4) testImplementation(libs.orbit.test) androidTestImplementation(libs.androidx.test.ext) diff --git a/build-logic/convention/build.gradle.kts b/build-logic/convention/build.gradle.kts index 6bdd96e..65fa78b 100644 --- a/build-logic/convention/build.gradle.kts +++ b/build-logic/convention/build.gradle.kts @@ -23,5 +23,9 @@ gradlePlugin { id = "pohahang.plugin.application.compose" implementationClass = "AndroidApplicationComposeConventionPlugin" } + register("AndroidFeatureConventionPlugin") { + id = "pohahang.plugin.feature" + implementationClass = "AndroidFeatureConventionPlugin" + } } } \ No newline at end of file diff --git a/build-logic/convention/src/main/java/AndroidApplicationConventionPlugin.kt b/build-logic/convention/src/main/java/AndroidApplicationConventionPlugin.kt index 6f657a2..7e68526 100644 --- a/build-logic/convention/src/main/java/AndroidApplicationConventionPlugin.kt +++ b/build-logic/convention/src/main/java/AndroidApplicationConventionPlugin.kt @@ -9,6 +9,7 @@ internal class AndroidApplicationConventionPlugin : Plugin { with(target) { with(pluginManager) { apply("com.android.application") + apply("org.jetbrains.kotlin.android") } extensions.configure { configureAndroidProject(this) diff --git a/build-logic/convention/src/main/java/AndroidFeatureConventionPlugin.kt b/build-logic/convention/src/main/java/AndroidFeatureConventionPlugin.kt new file mode 100644 index 0000000..d2c3f22 --- /dev/null +++ b/build-logic/convention/src/main/java/AndroidFeatureConventionPlugin.kt @@ -0,0 +1,24 @@ +import com.koreatech.convention.implementation +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.api.artifacts.VersionCatalogsExtension +import org.gradle.kotlin.dsl.dependencies +import org.gradle.kotlin.dsl.getByType + +internal class AndroidFeatureConventionPlugin: Plugin { + override fun apply(target: Project) { + with(target) { + val libs = extensions.getByType().named("libs") + + dependencies { + implementation(libs.findLibrary("androidx.core.ktx").get()) + implementation(libs.findLibrary("androidx.lifecycle.runtime.ktx").get()) + implementation(libs.findLibrary("androidx.activity.compose").get()) + implementation(libs.findLibrary("androidx.lifecycle.viewmodel.compose").get()) + implementation(libs.findLibrary("androidx.navigation.compose").get()) + implementation(libs.findLibrary("coil.compose").get()) + implementation(libs.findBundle("orbit").get()) + } + } + } +} \ No newline at end of file From f8a7e264bb4b972582e4be15de9eda114fc02fe9 Mon Sep 17 00:00:00 2001 From: Jokwanhee Date: Mon, 15 Apr 2024 20:58:29 +0900 Subject: [PATCH 3/3] =?UTF-8?q?4=EC=A3=BC=EC=B0=A8=20=EA=B3=BC=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/gradle.xml | 3 + app/build.gradle.kts | 18 +- app/src/main/AndroidManifest.xml | 1 + .../kwanhee_jo_compose_study/MainActivity.kt | 154 +----------------- .../PohahangApplication.kt | 11 ++ .../composable/AccountComposable.kt | 16 +- .../composable/HomeComposable.kt | 52 +++--- .../data/LoginData.kt | 12 ++ .../{ => ui}/Screen.kt | 3 +- .../{ => ui}/SoptApp.kt | 2 +- .../view/SoptNavHost.kt | 2 +- .../view/home/HomeState.kt | 5 +- .../view/home/HomeViewModel.kt | 41 +++-- .../view/login/LoginViewModel.kt | 46 +++++- .../view/navi/BottomNavigationBar.kt | 2 +- .../view/navi/serach/SearchPage.kt | 65 +++++++- .../view/navi/serach/SearchViewModel.kt | 30 ++++ build-logic/convention/build.gradle.kts | 14 +- .../java/AndroidFeatureConventionPlugin.kt | 5 +- .../main/java/AndroidHiltConventionPlugin.kt | 21 +++ .../java/AndroidLibraryConventionPlugin.kt | 20 +++ .../convention/DependencyHandlerExtensions.kt | 3 + .../{AndroidProject.kt => KotlinAndroid.kt} | 5 +- .../koreatech/convention/ProjectExtensions.kt | 9 + build.gradle.kts | 4 + core/data/.gitignore | 1 + core/data/build.gradle.kts | 26 +++ core/data/consumer-rules.pro | 0 core/data/proguard-rules.pro | 21 +++ .../koreatech/data/ExampleInstrumentedTest.kt | 24 +++ core/data/src/main/AndroidManifest.xml | 4 + .../data/model/request/LoginRequestDto.kt | 9 + .../data/model/request/SignupRequestDto.kt | 11 ++ .../data/model/response/CatResponseDto.kt | 15 ++ .../com/koreatech/data/ExampleUnitTest.kt | 17 ++ core/network/.gitignore | 1 + core/network/build.gradle.kts | 40 +++++ core/network/consumer-rules.pro | 0 core/network/proguard-rules.pro | 21 +++ .../core/network/ExampleInstrumentedTest.kt | 24 +++ core/network/src/main/AndroidManifest.xml | 4 + .../koreatech/core/network/NetworkModule.kt | 32 ++++ .../koreatech/core/network/NetworkResponse.kt | 8 + .../com/koreatech/core/network/PohahangApi.kt | 26 +++ .../koreatech/core/network/RetrofitNetwork.kt | 40 +++++ .../core/network/di/RepositoryModule.kt | 27 +++ .../network/repository/PohahangRepository.kt | 12 ++ .../koreatech/core/network/ExampleUnitTest.kt | 17 ++ gradle/libs.versions.toml | 48 +++++- settings.gradle.kts | 3 + 50 files changed, 738 insertions(+), 237 deletions(-) create mode 100644 app/src/main/java/com/koreatech/kwanhee_jo_compose_study/PohahangApplication.kt create mode 100644 app/src/main/java/com/koreatech/kwanhee_jo_compose_study/data/LoginData.kt rename app/src/main/java/com/koreatech/kwanhee_jo_compose_study/{ => ui}/Screen.kt (92%) rename app/src/main/java/com/koreatech/kwanhee_jo_compose_study/{ => ui}/SoptApp.kt (85%) create mode 100644 app/src/main/java/com/koreatech/kwanhee_jo_compose_study/view/navi/serach/SearchViewModel.kt create mode 100644 build-logic/convention/src/main/java/AndroidHiltConventionPlugin.kt create mode 100644 build-logic/convention/src/main/java/AndroidLibraryConventionPlugin.kt rename build-logic/convention/src/main/java/com/koreatech/convention/{AndroidProject.kt => KotlinAndroid.kt} (94%) create mode 100644 build-logic/convention/src/main/java/com/koreatech/convention/ProjectExtensions.kt create mode 100644 core/data/.gitignore create mode 100644 core/data/build.gradle.kts create mode 100644 core/data/consumer-rules.pro create mode 100644 core/data/proguard-rules.pro create mode 100644 core/data/src/androidTest/java/com/koreatech/data/ExampleInstrumentedTest.kt create mode 100644 core/data/src/main/AndroidManifest.xml create mode 100644 core/data/src/main/java/com/koreatech/data/model/request/LoginRequestDto.kt create mode 100644 core/data/src/main/java/com/koreatech/data/model/request/SignupRequestDto.kt create mode 100644 core/data/src/main/java/com/koreatech/data/model/response/CatResponseDto.kt create mode 100644 core/data/src/test/java/com/koreatech/data/ExampleUnitTest.kt create mode 100644 core/network/.gitignore create mode 100644 core/network/build.gradle.kts create mode 100644 core/network/consumer-rules.pro create mode 100644 core/network/proguard-rules.pro create mode 100644 core/network/src/androidTest/java/com/koreatech/core/network/ExampleInstrumentedTest.kt create mode 100644 core/network/src/main/AndroidManifest.xml create mode 100644 core/network/src/main/java/com/koreatech/core/network/NetworkModule.kt create mode 100644 core/network/src/main/java/com/koreatech/core/network/NetworkResponse.kt create mode 100644 core/network/src/main/java/com/koreatech/core/network/PohahangApi.kt create mode 100644 core/network/src/main/java/com/koreatech/core/network/RetrofitNetwork.kt create mode 100644 core/network/src/main/java/com/koreatech/core/network/di/RepositoryModule.kt create mode 100644 core/network/src/main/java/com/koreatech/core/network/repository/PohahangRepository.kt create mode 100644 core/network/src/test/java/com/koreatech/core/network/ExampleUnitTest.kt diff --git a/.idea/gradle.xml b/.idea/gradle.xml index f37e1b0..753085c 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -26,6 +26,9 @@