From 486e37e839c0b563721de8d42c0f2f7e99eeaa68 Mon Sep 17 00:00:00 2001 From: Giovanni Junseo Kim Date: Fri, 29 Mar 2024 20:35:09 +0900 Subject: [PATCH] Add data logic (#11) * chore: remove .idea/* * chore: add libraries * chore: add Internet permission * feat: implement ApiFactory --- .idea/.gitignore | 3 -- .idea/.name | 1 - .idea/compiler.xml | 6 --- .idea/deploymentTargetDropDown.xml | 10 ----- .idea/gradle.xml | 18 -------- .idea/kotlinc.xml | 6 --- .idea/migrations.xml | 10 ----- .idea/misc.xml | 10 ----- .idea/vcs.xml | 6 --- app/build.gradle.kts | 11 ++++- app/src/main/AndroidManifest.xml | 2 + .../univ/earthbreaker/namu/data/ApiFactory.kt | 43 +++++++++++++++++++ build.gradle.kts | 9 ++++ gradle/libs.versions.toml | 18 ++++++-- 14 files changed, 78 insertions(+), 75 deletions(-) delete mode 100644 .idea/.gitignore delete mode 100644 .idea/.name delete mode 100644 .idea/compiler.xml delete mode 100644 .idea/deploymentTargetDropDown.xml delete mode 100644 .idea/gradle.xml delete mode 100644 .idea/kotlinc.xml delete mode 100644 .idea/migrations.xml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/vcs.xml create mode 100644 app/src/main/java/univ/earthbreaker/namu/data/ApiFactory.kt diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 26d3352..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml diff --git a/.idea/.name b/.idea/.name deleted file mode 100644 index f5c9da3..0000000 --- a/.idea/.name +++ /dev/null @@ -1 +0,0 @@ -Grow Tree \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml deleted file mode 100644 index b589d56..0000000 --- a/.idea/compiler.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml deleted file mode 100644 index 0c0c338..0000000 --- a/.idea/deploymentTargetDropDown.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml deleted file mode 100644 index 32522c1..0000000 --- a/.idea/gradle.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml deleted file mode 100644 index fdf8d99..0000000 --- a/.idea/kotlinc.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/migrations.xml b/.idea/migrations.xml deleted file mode 100644 index f8051a6..0000000 --- a/.idea/migrations.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 0ad17cb..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 35eb1dd..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts index aadc2e0..1113e4e 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -2,6 +2,7 @@ plugins { alias(libs.plugins.androidApplication) alias(libs.plugins.jetbrainsKotlinAndroid) alias(libs.plugins.ktlint) + id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") } android { @@ -13,7 +14,7 @@ android { minSdk = 28 targetSdk = 34 versionCode = 1 - versionName = "1.0" + versionName = "1.0.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { @@ -39,9 +40,10 @@ android { } buildFeatures { compose = true + buildConfig = true } composeOptions { - kotlinCompilerExtensionVersion = "1.5.1" + kotlinCompilerExtensionVersion = "1.5.11" } packaging { resources { @@ -70,6 +72,11 @@ dependencies { implementation(libs.coil.compose) implementation(libs.grid) implementation(libs.androidx.lifecycle.runtime.compose) + implementation(libs.retrofit2) + implementation(libs.okhttp) + implementation(libs.kotlinx.serialization.json) + implementation(libs.okhttp.logging.interceptor) + implementation(libs.retrofit2.kotlinx.serialization.converter) } ktlint { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 394b9da..820fdc8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,6 +2,8 @@ + + create(forWhichServer: Server): T = + when (forWhichServer) { + Server.GrowTreeServer -> retrofitForGrowTreeServer.create(T::class.java) + Server.ChatGPT -> retrofitForChatGPT.create(T::class.java) + } +} + +enum class Server { + GrowTreeServer, + ChatGPT, +} + +object ServicePool diff --git a/build.gradle.kts b/build.gradle.kts index 9785651..d8fe9fc 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,4 +3,13 @@ plugins { alias(libs.plugins.androidApplication) apply false alias(libs.plugins.jetbrainsKotlinAndroid) apply false alias(libs.plugins.ktlint) apply false + + kotlin("jvm") version "1.9.23" + kotlin("plugin.serialization") version "1.9.23" +} + +buildscript { + dependencies { + classpath(libs.secrets.gradle.plugin) + } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 78333ff..b4cf6fc 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,16 +1,22 @@ [versions] -agp = "8.3.0" +agp = "8.3.1" coilCompose = "2.6.0" grid = "1.0.0" -kotlin = "1.9.0" +kotlin = "1.9.23" coreKtx = "1.12.0" junit = "4.13.2" junitVersion = "1.1.5" espressoCore = "3.5.1" +kotlinxSerializationJson = "1.6.3" lifecycleRuntimeKtx = "2.7.0" activityCompose = "1.8.2" -composeBom = "2023.08.00" +composeBom = "2024.03.00" ktlint = "12.1.0" +loggingInterceptor = "4.12.0" +okhttp = "4.12.0" +retrofit = "2.11.0" +retrofit2KotlinxSerializationConverter = "1.0.0" +secretsGradlePlugin = "2.0.1" [libraries] androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } @@ -30,6 +36,12 @@ androidx-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-toolin androidx-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" } androidx-material3 = { group = "androidx.compose.material3", name = "material3" } +kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinxSerializationJson" } +okhttp-logging-interceptor = { module = "com.squareup.okhttp3:logging-interceptor", version.ref = "loggingInterceptor" } +okhttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" } +retrofit2 = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" } +retrofit2-kotlinx-serialization-converter = { module = "com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter", version.ref = "retrofit2KotlinxSerializationConverter" } +secrets-gradle-plugin = { module = "com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin", version.ref = "secretsGradlePlugin" } [plugins] androidApplication = { id = "com.android.application", version.ref = "agp" }