diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml
index 05352f40..f9fe5635 100644
--- a/.github/workflows/cd.yml
+++ b/.github/workflows/cd.yml
@@ -11,11 +11,11 @@ jobs:
with:
fetch-depth: 0
- - name: Setup JDK 11
+ - name: Setup JDK 17
uses: actions/setup-java@v3
with:
distribution: "zulu"
- java-version: 11
+ java-version: 17
- name: Setup Android SDK
uses: android-actions/setup-android@v2
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 5052507e..672ae47e 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -11,11 +11,11 @@ jobs:
with:
fetch-depth: 0
- - name: Setup JDK 11
+ - name: Setup JDK 17
uses: actions/setup-java@v3
with:
distribution: "zulu"
- java-version: 11
+ java-version: 17
- name: Setup Android SDK
uses: android-actions/setup-android@v2
diff --git a/.idea/.name b/.idea/.name
index 5f0a2288..c1918cc5 100644
--- a/.idea/.name
+++ b/.idea/.name
@@ -1 +1 @@
-AndroidManifest.xml
\ No newline at end of file
+indi_straw
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index a32e804c..ba2acfa7 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -18,8 +18,10 @@
-
+
+
+
diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml
index 0fc31131..f8467b45 100644
--- a/.idea/kotlinc.xml
+++ b/.idea/kotlinc.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/app/mobile/proguard-rules.pro b/app/mobile/proguard-rules.pro
index 1ee2da39..f69ffcef 100644
--- a/app/mobile/proguard-rules.pro
+++ b/app/mobile/proguard-rules.pro
@@ -20,8 +20,8 @@
# hide the original source file name.
#-renamesourcefileattribute SourceFile
--keep class com.danbam.data.** {*;}
--keep interface com.danbam.data.** {*;}
-
--keep class com.danbam.domain.** {*;}
--keep interface com.danbam.domain.** {*;}
\ No newline at end of file
+-keep class com.danbam.indistraw.core.remote.request.** {*;}
+-keep class com.danbam.indistraw.core.remote.response.** {*;}
+-dontwarn org.conscrypt.**
+-dontwarn org.bouncycastle.**
+-dontwarn org.openjsse.**
\ No newline at end of file
diff --git a/app/mobile/src/main/AndroidManifest.xml b/app/mobile/src/main/AndroidManifest.xml
index bc163d7e..35a898a8 100644
--- a/app/mobile/src/main/AndroidManifest.xml
+++ b/app/mobile/src/main/AndroidManifest.xml
@@ -1,6 +1,6 @@
+ package="com.danbam.indistraw.app.mobile">
diff --git a/app/tv/proguard-rules.pro b/app/tv/proguard-rules.pro
index 481bb434..7ae03720 100644
--- a/app/tv/proguard-rules.pro
+++ b/app/tv/proguard-rules.pro
@@ -18,4 +18,10 @@
# If you keep the line number information, uncomment this to
# hide the original source file name.
-#-renamesourcefileattribute SourceFile
\ No newline at end of file
+#-renamesourcefileattribute SourceFile
+
+-keep class com.danbam.indistraw.core.remote.request.** {*;}
+-keep class com.danbam.indistraw.core.remote.response.** {*;}
+-dontwarn org.conscrypt.**
+-dontwarn org.bouncycastle.**
+-dontwarn org.openjsse.**
\ No newline at end of file
diff --git a/app/tv/src/main/AndroidManifest.xml b/app/tv/src/main/AndroidManifest.xml
index d5d2ff35..9703b751 100644
--- a/app/tv/src/main/AndroidManifest.xml
+++ b/app/tv/src/main/AndroidManifest.xml
@@ -1,5 +1,6 @@
-
+
diff --git a/app/tv/src/main/ic_launcher-playstore.png b/app/tv/src/main/ic_launcher-playstore.png
new file mode 100644
index 00000000..f5662022
Binary files /dev/null and b/app/tv/src/main/ic_launcher-playstore.png differ
diff --git a/app/tv/src/main/res/drawable/ic_app.jpg b/app/tv/src/main/res/drawable/ic_app.jpg
new file mode 100644
index 00000000..9b920216
Binary files /dev/null and b/app/tv/src/main/res/drawable/ic_app.jpg differ
diff --git a/app/tv/src/main/res/drawable/ic_app.png b/app/tv/src/main/res/drawable/ic_app.png
deleted file mode 100644
index a91c9590..00000000
Binary files a/app/tv/src/main/res/drawable/ic_app.png and /dev/null differ
diff --git a/app/tv/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/tv/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 00000000..036d09bc
--- /dev/null
+++ b/app/tv/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/tv/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/tv/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 00000000..036d09bc
--- /dev/null
+++ b/app/tv/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/tv/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/tv/src/main/res/mipmap-hdpi/ic_launcher.webp
index c209e78e..f404f325 100644
Binary files a/app/tv/src/main/res/mipmap-hdpi/ic_launcher.webp and b/app/tv/src/main/res/mipmap-hdpi/ic_launcher.webp differ
diff --git a/app/tv/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp b/app/tv/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp
new file mode 100644
index 00000000..b463ebd8
Binary files /dev/null and b/app/tv/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp differ
diff --git a/app/tv/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/tv/src/main/res/mipmap-hdpi/ic_launcher_round.webp
new file mode 100644
index 00000000..bf333784
Binary files /dev/null and b/app/tv/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ
diff --git a/app/tv/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/tv/src/main/res/mipmap-mdpi/ic_launcher.webp
index 4f0f1d64..0af6c88d 100644
Binary files a/app/tv/src/main/res/mipmap-mdpi/ic_launcher.webp and b/app/tv/src/main/res/mipmap-mdpi/ic_launcher.webp differ
diff --git a/app/tv/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp b/app/tv/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp
new file mode 100644
index 00000000..58bdd2a9
Binary files /dev/null and b/app/tv/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp differ
diff --git a/app/tv/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/app/tv/src/main/res/mipmap-mdpi/ic_launcher_round.webp
new file mode 100644
index 00000000..482c291a
Binary files /dev/null and b/app/tv/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ
diff --git a/app/tv/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/tv/src/main/res/mipmap-xhdpi/ic_launcher.webp
index 948a3070..b7d25c4f 100644
Binary files a/app/tv/src/main/res/mipmap-xhdpi/ic_launcher.webp and b/app/tv/src/main/res/mipmap-xhdpi/ic_launcher.webp differ
diff --git a/app/tv/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp b/app/tv/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp
new file mode 100644
index 00000000..2d5d677e
Binary files /dev/null and b/app/tv/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp differ
diff --git a/app/tv/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/tv/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
new file mode 100644
index 00000000..290518d0
Binary files /dev/null and b/app/tv/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ
diff --git a/app/tv/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/app/tv/src/main/res/mipmap-xxhdpi/ic_launcher.webp
index 28d4b77f..cd797b1c 100644
Binary files a/app/tv/src/main/res/mipmap-xxhdpi/ic_launcher.webp and b/app/tv/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ
diff --git a/app/tv/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp b/app/tv/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp
new file mode 100644
index 00000000..4c819678
Binary files /dev/null and b/app/tv/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp differ
diff --git a/app/tv/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/app/tv/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
new file mode 100644
index 00000000..44f70928
Binary files /dev/null and b/app/tv/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ
diff --git a/app/tv/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/tv/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
index aa7d6427..69f6e2ad 100644
Binary files a/app/tv/src/main/res/mipmap-xxxhdpi/ic_launcher.webp and b/app/tv/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ
diff --git a/app/tv/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp b/app/tv/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp
new file mode 100644
index 00000000..d736b360
Binary files /dev/null and b/app/tv/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp differ
diff --git a/app/tv/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/app/tv/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
new file mode 100644
index 00000000..0a7477d0
Binary files /dev/null and b/app/tv/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ
diff --git a/app/tv/src/main/res/values/ic_launcher_background.xml b/app/tv/src/main/res/values/ic_launcher_background.xml
new file mode 100644
index 00000000..ef6a41e2
--- /dev/null
+++ b/app/tv/src/main/res/values/ic_launcher_background.xml
@@ -0,0 +1,4 @@
+
+
+ #020202
+
\ No newline at end of file
diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts
index d1f29e2e..7f64538d 100644
--- a/buildSrc/build.gradle.kts
+++ b/buildSrc/build.gradle.kts
@@ -3,14 +3,9 @@ plugins {
`kotlin-dsl-precompiled-script-plugins`
}
-val compileKotlin: org.jetbrains.kotlin.gradle.tasks.KotlinCompile by tasks
-compileKotlin.kotlinOptions {
- jvmTarget = JavaVersion.VERSION_1_8.toString()
- languageVersion = libs.versions.gradleKotlin.get()
-}
-
dependencies {
implementation(libs.plugin.android)
implementation(libs.plugin.hilt)
implementation(libs.plugin.kotlin)
+ implementation(libs.plugin.ksp)
}
\ No newline at end of file
diff --git a/buildSrc/src/main/kotlin/indistraw-app.gradle.kts b/buildSrc/src/main/kotlin/indistraw-app.gradle.kts
index 44a2768b..2a1e5bfa 100644
--- a/buildSrc/src/main/kotlin/indistraw-app.gradle.kts
+++ b/buildSrc/src/main/kotlin/indistraw-app.gradle.kts
@@ -6,8 +6,8 @@ val libs = versionCatalog.named("libs")
plugins {
id("com.android.application")
id("kotlin-android")
- id("kotlin-kapt")
id("dagger.hilt.android.plugin")
+ id("com.google.devtools.ksp")
}
android {
@@ -19,13 +19,14 @@ android {
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
compileOptions {
- sourceCompatibility = JavaVersion.VERSION_1_8
- targetCompatibility = JavaVersion.VERSION_1_8
+ sourceCompatibility = JavaVersion.VERSION_17
+ targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
- jvmTarget = JavaVersion.VERSION_1_8.toString()
+ jvmTarget = JavaVersion.VERSION_17.toString()
}
buildFeatures {
+ buildConfig = true
compose = true
}
composeOptions {
@@ -59,18 +60,14 @@ android {
}
dependencies {
- implementation(project(":core:di"))
- implementation(project(":core:domain"))
+ implementation(project(":core:data"))
+ implementation(project(":core:remote"))
implementation(project(":core:design-system"))
implementation(libs.findLibrary("androidx.core").get())
- implementation(libs.findLibrary("androidx.lifecycle").get())
- implementation(libs.findBundle("coroutine").get())
implementation(libs.findBundle("compose").get())
implementation(libs.findLibrary("accompanist.nav").get())
implementation(libs.findLibrary("hilt").get())
- kapt(libs.findLibrary("hilt.compiler").get())
- implementation(libs.findBundle("orbit").get())
- implementation(libs.findLibrary("coil").get())
+ ksp(libs.findLibrary("hilt.compiler").get())
debugImplementation(libs.findBundle("compose.debug").get())
androidTestImplementation(libs.findLibrary("compose.test").get())
}
\ No newline at end of file
diff --git a/buildSrc/src/main/kotlin/indistraw-core.gradle.kts b/buildSrc/src/main/kotlin/indistraw-core.gradle.kts
index 85b4b147..4dd2fa12 100644
--- a/buildSrc/src/main/kotlin/indistraw-core.gradle.kts
+++ b/buildSrc/src/main/kotlin/indistraw-core.gradle.kts
@@ -4,7 +4,8 @@ val libs = versionCatalog.named("libs")
plugins {
id("com.android.library")
id("org.jetbrains.kotlin.android")
- id("kotlin-kapt")
+ id("dagger.hilt.android.plugin")
+ id("com.google.devtools.ksp")
}
android {
@@ -14,11 +15,23 @@ android {
minSdk = libs.findVersion("minSdk").get().requiredVersion.toInt()
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
+ buildFeatures {
+ buildConfig = true
+ }
compileOptions {
- sourceCompatibility = JavaVersion.VERSION_1_8
- targetCompatibility = JavaVersion.VERSION_1_8
+ sourceCompatibility = JavaVersion.VERSION_17
+ targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
- jvmTarget = JavaVersion.VERSION_1_8.toString()
+ jvmTarget = JavaVersion.VERSION_17.toString()
}
+}
+
+dependencies {
+ implementation(libs.findLibrary("inject").get())
+ implementation(libs.findLibrary("hilt").get())
+ ksp(libs.findLibrary("hilt.compiler").get())
+ testImplementation(libs.findLibrary("test.junit").get())
+ testImplementation(libs.findLibrary("test.mockito.kotlin").get())
+ testImplementation(libs.findLibrary("test.mockito.inline").get())
}
\ No newline at end of file
diff --git a/buildSrc/src/main/kotlin/indistraw-feature.gradle.kts b/buildSrc/src/main/kotlin/indistraw-feature.gradle.kts
index 60ec1b91..6b7a1c33 100644
--- a/buildSrc/src/main/kotlin/indistraw-feature.gradle.kts
+++ b/buildSrc/src/main/kotlin/indistraw-feature.gradle.kts
@@ -3,9 +3,9 @@ val libs = versionCatalog.named("libs")
plugins {
id("com.android.library")
- id("kotlin-kapt")
id("kotlin-android")
id("dagger.hilt.android.plugin")
+ id("com.google.devtools.ksp")
}
android {
@@ -16,13 +16,14 @@ android {
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
compileOptions {
- sourceCompatibility = JavaVersion.VERSION_1_8
- targetCompatibility = JavaVersion.VERSION_1_8
+ sourceCompatibility = JavaVersion.VERSION_17
+ targetCompatibility = JavaVersion.VERSION_17
}
kotlinOptions {
- jvmTarget = JavaVersion.VERSION_1_8.toString()
+ jvmTarget = JavaVersion.VERSION_17.toString()
}
buildFeatures {
+ buildConfig = true
compose = true
}
composeOptions {
@@ -36,13 +37,14 @@ android {
dependencies {
implementation(project(":core:domain"))
implementation(project(":core:design-system"))
+ implementation(project(":core:ui"))
implementation(libs.findLibrary("androidx.core").get())
implementation(libs.findLibrary("androidx.lifecycle").get())
implementation(libs.findBundle("coroutine").get())
implementation(libs.findBundle("compose").get())
implementation(libs.findLibrary("accompanist.nav").get())
implementation(libs.findLibrary("hilt").get())
- kapt(libs.findLibrary("hilt.compiler").get())
+ ksp(libs.findLibrary("hilt.compiler").get())
implementation(libs.findBundle("orbit").get())
implementation(libs.findLibrary("coil").get())
debugImplementation(libs.findBundle("compose.debug").get())
diff --git a/core/data/build.gradle.kts b/core/data/build.gradle.kts
index 99216ab7..18cd9286 100644
--- a/core/data/build.gradle.kts
+++ b/core/data/build.gradle.kts
@@ -32,24 +32,14 @@ android {
"PATCH_IGNORE_PATH",
gradleLocalProperties(rootDir).getProperty("PATCH_IGNORE_PATH")
)
- buildConfigField(
- "String",
- "JUSO_KEY",
- gradleLocalProperties(rootDir).getProperty("JUSO_KEY")
- )
}
}
dependencies {
+ implementation(project(":core:remote"))
+ implementation(project(":core:local"))
implementation(project(":core:domain"))
- implementation(libs.inject)
- implementation(libs.room)
- kapt(libs.room.compiler)
+ implementation(libs.paging)
implementation(libs.bundles.retrofit)
implementation(libs.bundles.okhttp)
- testImplementation(libs.okhttp.sse)
- implementation(libs.paging)
- testImplementation(libs.test.junit)
- testImplementation(libs.test.mockito.kotlin)
- testImplementation(libs.test.mockito.inline)
}
\ No newline at end of file
diff --git a/core/di/src/main/kotlin/com/danbam/indistraw/core/di/NetworkModule.kt b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/di/NetworkModule.kt
similarity index 75%
rename from core/di/src/main/kotlin/com/danbam/indistraw/core/di/NetworkModule.kt
rename to core/data/src/main/kotlin/com/danbam/indistraw/core/data/di/NetworkModule.kt
index fd0b60f3..9e712a8a 100644
--- a/core/di/src/main/kotlin/com/danbam/indistraw/core/di/NetworkModule.kt
+++ b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/di/NetworkModule.kt
@@ -1,17 +1,18 @@
-package com.danbam.indistraw.core.di
+package com.danbam.indistraw.core.data.di
import android.content.Context
-import com.danbam.indistraw.core.data.remote.api.AccountAPI
-import com.danbam.indistraw.core.data.remote.api.AddressAPI
-import com.danbam.indistraw.core.data.remote.api.AuthAPI
-import com.danbam.indistraw.core.data.remote.api.BannerAPI
-import com.danbam.indistraw.core.data.remote.api.CrowdFundingAPI
-import com.danbam.indistraw.core.data.remote.api.FileAPI
-import com.danbam.indistraw.core.data.remote.api.FundingAPI
-import com.danbam.indistraw.core.data.remote.api.MovieAPI
-import com.danbam.indistraw.core.data.remote.api.QRCodeAPI
-import com.danbam.indistraw.core.data.remote.api.SearchAPI
-import com.danbam.indistraw.core.data.remote.interceptor.IndiStrawInterceptor
+import com.danbam.indistraw.core.data.BuildConfig
+import com.danbam.indistraw.core.remote.api.AccountAPI
+import com.danbam.indistraw.core.remote.api.AddressAPI
+import com.danbam.indistraw.core.remote.api.AuthAPI
+import com.danbam.indistraw.core.remote.api.BannerAPI
+import com.danbam.indistraw.core.remote.api.CrowdFundingAPI
+import com.danbam.indistraw.core.remote.api.FileAPI
+import com.danbam.indistraw.core.remote.api.FundingAPI
+import com.danbam.indistraw.core.remote.api.MovieAPI
+import com.danbam.indistraw.core.remote.api.QRCodeAPI
+import com.danbam.indistraw.core.remote.api.SearchAPI
+import com.danbam.indistraw.core.data.interceptor.IndiStrawInterceptor
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
diff --git a/core/di/src/main/kotlin/com/danbam/indistraw/core/di/RepositoryModule.kt b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/di/RepositoryModule.kt
similarity index 98%
rename from core/di/src/main/kotlin/com/danbam/indistraw/core/di/RepositoryModule.kt
rename to core/data/src/main/kotlin/com/danbam/indistraw/core/data/di/RepositoryModule.kt
index 61b5d1f1..a9e4c18f 100644
--- a/core/di/src/main/kotlin/com/danbam/indistraw/core/di/RepositoryModule.kt
+++ b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/di/RepositoryModule.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.di
+package com.danbam.indistraw.core.data.di
import com.danbam.indistraw.core.data.repository.AccountRepositoryImpl
import com.danbam.indistraw.core.data.repository.AddressRepositoryImpl
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/interceptor/IndiStrawInterceptor.kt b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/interceptor/IndiStrawInterceptor.kt
similarity index 94%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/interceptor/IndiStrawInterceptor.kt
rename to core/data/src/main/kotlin/com/danbam/indistraw/core/data/interceptor/IndiStrawInterceptor.kt
index ef2a5e6c..4e8bc46f 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/interceptor/IndiStrawInterceptor.kt
+++ b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/interceptor/IndiStrawInterceptor.kt
@@ -1,13 +1,13 @@
-package com.danbam.indistraw.core.data.remote.interceptor
+package com.danbam.indistraw.core.data.interceptor
import android.content.Context
import android.net.ConnectivityManager
import android.net.NetworkInfo
import com.danbam.indistraw.core.data.BuildConfig
-import com.danbam.indistraw.core.data.local.datasource.AuthLocalDataSource
-import com.danbam.indistraw.core.data.remote.response.auth.LoginResponse
-import com.danbam.indistraw.core.data.util.default
+import com.danbam.indistraw.core.local.datasource.AuthLocalDataSource
import com.danbam.indistraw.core.domain.exception.ExpiredTokenException
+import com.danbam.indistraw.core.remote.response.auth.LoginResponse
+import com.danbam.indistraw.core.remote.util.default
import com.google.gson.Gson
import okhttp3.Interceptor
import okhttp3.MediaType.Companion.toMediaTypeOrNull
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/database/IndiStrawDataBase.kt b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/database/IndiStrawDataBase.kt
deleted file mode 100644
index 05ccce0a..00000000
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/database/IndiStrawDataBase.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.danbam.indistraw.core.data.local.database
-
-import androidx.room.Database
-import androidx.room.RoomDatabase
-import com.danbam.indistraw.core.data.local.dao.RecentSearchDao
-import com.danbam.indistraw.core.data.local.entity.search.RecentSearchEntity
-
-@Database(entities = [RecentSearchEntity::class], version = 1)
-abstract class IndiStrawDataBase : RoomDatabase() {
- abstract fun resentSearchDao(): RecentSearchDao
-}
\ No newline at end of file
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/api/AccountAPI.kt b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/api/AccountAPI.kt
deleted file mode 100644
index c09e62dd..00000000
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/api/AccountAPI.kt
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.danbam.indistraw.core.data.remote.api
-
-import com.danbam.indistraw.core.data.remote.request.auth.ChangeAddressRequest
-import com.danbam.indistraw.core.data.remote.request.auth.ChangePasswordRequest
-import com.danbam.indistraw.core.data.remote.request.auth.EditProfileRequest
-import com.danbam.indistraw.core.data.remote.response.auth.ProfileResponse
-import com.danbam.indistraw.core.data.remote.response.funding.FindIdResponse
-import com.danbam.indistraw.core.data.remote.util.EndPoint
-import retrofit2.Response
-import retrofit2.http.Body
-import retrofit2.http.DELETE
-import retrofit2.http.GET
-import retrofit2.http.PATCH
-import retrofit2.http.Path
-
-interface AccountAPI {
- @GET("${EndPoint.ACCOUNT}/phone-number/{phoneNumber}")
- suspend fun findId(
- @Path("phoneNumber") phoneNumber: String,
- ): FindIdResponse
-
- @PATCH("${EndPoint.ACCOUNT}/password")
- suspend fun changePassword(
- @Body changePasswordRequest: ChangePasswordRequest,
- )
-
- @GET("${EndPoint.ACCOUNT}/info")
- suspend fun getProfile(): ProfileResponse
-
- @PATCH("${EndPoint.ACCOUNT}/phone-number/{phoneNumber}")
- suspend fun changePhoneNumber(
- @Path("phoneNumber") phoneNumber: String,
- ): Response
-
- @PATCH("${EndPoint.ACCOUNT}/address")
- suspend fun changeAddress(
- @Body changeAddressRequest: ChangeAddressRequest,
- ): Response
-
- @PATCH("${EndPoint.ACCOUNT}/info")
- suspend fun editProfile(
- @Body editProfileRequest: EditProfileRequest,
- ): Response
-
- @DELETE(EndPoint.ACCOUNT)
- suspend fun withdraw(): Response
-}
\ No newline at end of file
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/api/BannerAPI.kt b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/api/BannerAPI.kt
deleted file mode 100644
index fdbdebea..00000000
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/api/BannerAPI.kt
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.danbam.indistraw.core.data.remote.api
-
-import com.danbam.indistraw.core.data.remote.response.banner.BannerResponse
-import com.danbam.indistraw.core.data.remote.util.EndPoint
-import retrofit2.http.GET
-
-interface BannerAPI {
- @GET("${EndPoint.BANNER}/")
- suspend fun getBanner(): List
-}
\ No newline at end of file
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/AccountRemoteDataSource.kt b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/AccountRemoteDataSource.kt
deleted file mode 100644
index c434e109..00000000
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/AccountRemoteDataSource.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.danbam.indistraw.core.data.remote.datasource
-
-import com.danbam.indistraw.core.data.remote.request.auth.ChangeAddressRequest
-import com.danbam.indistraw.core.data.remote.request.auth.ChangePasswordRequest
-import com.danbam.indistraw.core.data.remote.request.auth.EditProfileRequest
-import com.danbam.indistraw.core.data.remote.response.auth.ProfileResponse
-import com.danbam.indistraw.core.data.remote.response.funding.FindIdResponse
-
-interface AccountRemoteDataSource {
- suspend fun findId(phoneNumber: String): FindIdResponse
- suspend fun changePassword(changePasswordRequest: ChangePasswordRequest)
- suspend fun getProfile(): ProfileResponse
- suspend fun changePhoneNumber(phoneNumber: String)
- suspend fun changeAddress(changeAddressRequest: ChangeAddressRequest)
- suspend fun editProfile(editProfileRequest: EditProfileRequest)
- suspend fun withdraw()
-}
\ No newline at end of file
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/AccountRemoteDataSourceImpl.kt b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/AccountRemoteDataSourceImpl.kt
deleted file mode 100644
index c0a9a808..00000000
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/AccountRemoteDataSourceImpl.kt
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.danbam.indistraw.core.data.remote.datasource
-
-import com.danbam.indistraw.core.data.remote.api.AccountAPI
-import com.danbam.indistraw.core.data.remote.request.auth.ChangeAddressRequest
-import com.danbam.indistraw.core.data.remote.request.auth.ChangePasswordRequest
-import com.danbam.indistraw.core.data.remote.request.auth.EditProfileRequest
-import com.danbam.indistraw.core.data.remote.response.auth.ProfileResponse
-import com.danbam.indistraw.core.data.remote.response.funding.FindIdResponse
-import com.danbam.indistraw.core.data.remote.util.errorHandling
-import com.danbam.indistraw.core.data.remote.util.indiStrawApiCall
-import javax.inject.Inject
-
-class AccountRemoteDataSourceImpl @Inject constructor(
- private val accountAPI: AccountAPI,
-) : com.danbam.indistraw.core.data.remote.datasource.AccountRemoteDataSource {
- override suspend fun findId(phoneNumber: String): FindIdResponse = indiStrawApiCall {
- accountAPI.findId(phoneNumber = phoneNumber)
- }
-
- override suspend fun changePassword(changePasswordRequest: ChangePasswordRequest) =
- indiStrawApiCall {
- accountAPI.changePassword(changePasswordRequest = changePasswordRequest)
- }
-
- override suspend fun getProfile(): ProfileResponse = indiStrawApiCall {
- accountAPI.getProfile()
- }
-
- override suspend fun changePhoneNumber(phoneNumber: String) = indiStrawApiCall {
- accountAPI.changePhoneNumber(phoneNumber = phoneNumber).errorHandling()
- }
-
- override suspend fun changeAddress(changeAddressRequest: ChangeAddressRequest) =
- indiStrawApiCall {
- accountAPI.changeAddress(changeAddressRequest = changeAddressRequest).errorHandling()
- }
-
- override suspend fun editProfile(editProfileRequest: EditProfileRequest) = indiStrawApiCall {
- accountAPI.editProfile(editProfileRequest = editProfileRequest).errorHandling()
- }
-
- override suspend fun withdraw() = indiStrawApiCall {
- accountAPI.withdraw().errorHandling()
- }
-}
\ No newline at end of file
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/AuthRemoteDataSourceImpl.kt b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/AuthRemoteDataSourceImpl.kt
deleted file mode 100644
index 996809ac..00000000
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/AuthRemoteDataSourceImpl.kt
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.danbam.indistraw.core.data.remote.datasource
-
-import com.danbam.indistraw.core.data.remote.api.AuthAPI
-import com.danbam.indistraw.core.data.remote.request.auth.LoginRequest
-import com.danbam.indistraw.core.data.remote.request.auth.SignUpRequest
-import com.danbam.indistraw.core.data.remote.response.auth.LoginResponse
-import com.danbam.indistraw.core.data.remote.util.errorHandling
-import com.danbam.indistraw.core.data.remote.util.indiStrawApiCall
-import javax.inject.Inject
-
-class AuthRemoteDataSourceImpl @Inject constructor(
- private val authAPI: AuthAPI,
-) : com.danbam.indistraw.core.data.remote.datasource.AuthRemoteDataSource {
- override suspend fun signup(signUpRequest: SignUpRequest) = indiStrawApiCall {
- authAPI.signup(signUpRequest = signUpRequest)
- }
-
- override suspend fun login(loginRequest: LoginRequest): LoginResponse = indiStrawApiCall {
- authAPI.login(loginRequest = loginRequest)
- }
-
- override suspend fun refresh(refreshToken: String): LoginResponse = indiStrawApiCall {
- authAPI.refresh(refreshToken = "Bearer $refreshToken")
- }
-
- override suspend fun checkPhoneNumber(phoneNumber: String, type: String) =
- indiStrawApiCall {
- authAPI.checkPhoneNumber(phoneNumber = phoneNumber, type = type).errorHandling()
- }
-
- override suspend fun checkId(id: String) = indiStrawApiCall {
- authAPI.checkId(id = id).errorHandling()
- }
-
- override suspend fun sendCertificateNumber(phoneNumber: String) = indiStrawApiCall {
- authAPI.sendCertificateNumber(phoneNumber = phoneNumber).errorHandling()
- }
-
- override suspend fun checkCertificateNumber(authCode: Int, phoneNumber: String) =
- indiStrawApiCall {
- authAPI.checkCertificateNumber(authCode = authCode, phoneNumber = phoneNumber)
- .errorHandling()
- }
-
- override suspend fun logout(refreshToken: String) = indiStrawApiCall {
- authAPI.logout(refreshToken = "Bearer $refreshToken").errorHandling()
- }
-}
\ No newline at end of file
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/BannerRemoteDataSource.kt b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/BannerRemoteDataSource.kt
deleted file mode 100644
index fb6ff449..00000000
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/BannerRemoteDataSource.kt
+++ /dev/null
@@ -1,7 +0,0 @@
-package com.danbam.indistraw.core.data.remote.datasource
-
-import com.danbam.indistraw.core.data.remote.response.banner.BannerResponse
-
-interface BannerRemoteDataSource {
- suspend fun getBanner(): List
-}
\ No newline at end of file
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/BannerRemoteDataSourceImpl.kt b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/BannerRemoteDataSourceImpl.kt
deleted file mode 100644
index 4d61515b..00000000
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/BannerRemoteDataSourceImpl.kt
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.danbam.indistraw.core.data.remote.datasource
-
-import com.danbam.indistraw.core.data.remote.api.BannerAPI
-import com.danbam.indistraw.core.data.remote.response.banner.BannerResponse
-import com.danbam.indistraw.core.data.remote.util.indiStrawApiCall
-import javax.inject.Inject
-
-class BannerRemoteDataSourceImpl @Inject constructor(
- private val bannerAPI: BannerAPI
-) : BannerRemoteDataSource {
- override suspend fun getBanner(): List = indiStrawApiCall {
- bannerAPI.getBanner()
- }
-}
\ No newline at end of file
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/FileRemoteDataSourceImpl.kt b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/FileRemoteDataSourceImpl.kt
deleted file mode 100644
index c3f75e44..00000000
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/FileRemoteDataSourceImpl.kt
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.danbam.indistraw.core.data.remote.datasource
-
-import com.danbam.indistraw.core.data.remote.api.FileAPI
-import com.danbam.indistraw.core.data.remote.response.file.FileResponse
-import com.danbam.indistraw.core.data.remote.util.indiStrawApiCall
-import okhttp3.MultipartBody
-import javax.inject.Inject
-
-class FileRemoteDataSourceImpl @Inject constructor(
- private val fileAPI: FileAPI,
-) : FileRemoteDataSource {
- override suspend fun sendFile(file: MultipartBody.Part): FileResponse = indiStrawApiCall {
- fileAPI.sendFile(file = file)
- }
-}
\ No newline at end of file
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/FundingRemoteDataSource.kt b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/FundingRemoteDataSource.kt
deleted file mode 100644
index 7ca78028..00000000
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/FundingRemoteDataSource.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.danbam.indistraw.core.data.remote.datasource
-
-import com.danbam.indistraw.core.data.remote.request.funding.FundingRequest
-import com.danbam.indistraw.core.data.remote.response.funding.FundingResponse
-import com.danbam.indistraw.core.data.remote.response.funding.ReceiptResponse
-
-interface FundingRemoteDataSource {
- suspend fun getReceipt(): ReceiptResponse
- suspend fun funding(fundingIdx: Long, rewardIdx: Long, fundingRequest: FundingRequest)
- suspend fun fundingList(): List
-}
\ No newline at end of file
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/FundingRemoteDataSourceImpl.kt b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/FundingRemoteDataSourceImpl.kt
deleted file mode 100644
index 4363c095..00000000
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/FundingRemoteDataSourceImpl.kt
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.danbam.indistraw.core.data.remote.datasource
-
-import com.danbam.indistraw.core.data.remote.api.FundingAPI
-import com.danbam.indistraw.core.data.remote.request.funding.FundingRequest
-import com.danbam.indistraw.core.data.remote.response.funding.FundingResponse
-import com.danbam.indistraw.core.data.remote.response.funding.ReceiptResponse
-import com.danbam.indistraw.core.data.remote.util.errorHandling
-import com.danbam.indistraw.core.data.remote.util.indiStrawApiCall
-import javax.inject.Inject
-
-class FundingRemoteDataSourceImpl @Inject constructor(
- private val fundingAPI: FundingAPI
-) : FundingRemoteDataSource {
- override suspend fun getReceipt(): ReceiptResponse = indiStrawApiCall {
- fundingAPI.getReceipt()
- }
-
- override suspend fun funding(
- fundingIdx: Long,
- rewardIdx: Long,
- fundingRequest: FundingRequest
- ) = indiStrawApiCall {
- fundingAPI.funding(
- fundingIdx = fundingIdx,
- rewardIdx = rewardIdx,
- fundingRequest = fundingRequest
- ).errorHandling()
- }
-
- override suspend fun fundingList(): List = indiStrawApiCall {
- fundingAPI.fundingList()
- }
-}
\ No newline at end of file
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/MovieRemoteDataSource.kt b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/MovieRemoteDataSource.kt
deleted file mode 100644
index e49ea978..00000000
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/MovieRemoteDataSource.kt
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.danbam.indistraw.core.data.remote.datasource
-
-import androidx.paging.PagingData
-import com.danbam.indistraw.core.data.remote.request.movie.MovieCreateRequest
-import com.danbam.indistraw.core.data.remote.request.movie.MovieHistoryRequest
-import com.danbam.indistraw.core.data.remote.request.movie.MoviePeopleRequest
-import com.danbam.indistraw.core.data.remote.response.movie.AddMoviePeopleResponse
-import com.danbam.indistraw.core.data.remote.response.movie.DetailMovieHistoryResponse
-import com.danbam.indistraw.core.data.remote.response.movie.MovieDetailResponse
-import com.danbam.indistraw.core.data.remote.response.movie.MovieHistoryResponse
-import com.danbam.indistraw.core.data.remote.response.movie.MoviePeopleDetailResponse
-import com.danbam.indistraw.core.data.remote.response.movie.MoviePeopleResponse
-import com.danbam.indistraw.core.data.remote.response.movie.MovieResponse
-import kotlinx.coroutines.flow.Flow
-
-interface MovieRemoteDataSource {
- suspend fun movieCreate(movieCreateRequest: MovieCreateRequest)
- suspend fun movieList(genre: String? = null): Flow>
- suspend fun movieDetail(movieIdx: Long): MovieDetailResponse
- suspend fun searchMoviePeople(actorType: String, name: String): List
- suspend fun moviePeopleDetail(actorType: String, actorIdx: Long): MoviePeopleDetailResponse
- suspend fun addMoviePeople(
- actorType: String,
- moviePeopleRequest: MoviePeopleRequest
- ): AddMoviePeopleResponse
-
- suspend fun movieRecentList(): List
- suspend fun moviePopularList(): List
- suspend fun movieRecommendList(): List
-
- suspend fun movieHistoryList(): List
- suspend fun addMovieHistory(movieHistoryRequest: MovieHistoryRequest)
- suspend fun movieHistory(movieIdx: Long): DetailMovieHistoryResponse
-}
\ No newline at end of file
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/MovieRemoteDataSourceImpl.kt b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/MovieRemoteDataSourceImpl.kt
deleted file mode 100644
index 8077ce03..00000000
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/MovieRemoteDataSourceImpl.kt
+++ /dev/null
@@ -1,89 +0,0 @@
-package com.danbam.indistraw.core.data.remote.datasource
-
-import androidx.paging.Pager
-import androidx.paging.PagingConfig
-import androidx.paging.PagingData
-import com.danbam.indistraw.core.data.remote.api.MovieAPI
-import com.danbam.indistraw.core.data.remote.pagingsource.MoviePagingSource
-import com.danbam.indistraw.core.data.remote.request.movie.MovieCreateRequest
-import com.danbam.indistraw.core.data.remote.request.movie.MovieHistoryRequest
-import com.danbam.indistraw.core.data.remote.request.movie.MoviePeopleRequest
-import com.danbam.indistraw.core.data.remote.response.movie.DetailMovieHistoryResponse
-import com.danbam.indistraw.core.data.remote.response.movie.MovieDetailResponse
-import com.danbam.indistraw.core.data.remote.response.movie.MovieHistoryResponse
-import com.danbam.indistraw.core.data.remote.response.movie.MoviePeopleDetailResponse
-import com.danbam.indistraw.core.data.remote.response.movie.MoviePeopleResponse
-import com.danbam.indistraw.core.data.remote.response.movie.MovieResponse
-import com.danbam.indistraw.core.data.remote.util.errorHandling
-import com.danbam.indistraw.core.data.remote.util.indiStrawApiCall
-import kotlinx.coroutines.flow.Flow
-import javax.inject.Inject
-
-class MovieRemoteDataSourceImpl @Inject constructor(
- private val movieAPI: MovieAPI
-) : MovieRemoteDataSource {
- override suspend fun movieCreate(movieCreateRequest: MovieCreateRequest) = indiStrawApiCall {
- movieAPI.movieCreate(movieCreateRequest = movieCreateRequest).errorHandling()
- }
-
- override suspend fun movieList(genre: String?): Flow> =
- Pager(config = PagingConfig(pageSize = 20),
- pagingSourceFactory = {
- MoviePagingSource(
- movieAPI = movieAPI,
- genre = genre
- )
- }).flow
-
- override suspend fun movieDetail(movieIdx: Long): MovieDetailResponse = indiStrawApiCall {
- movieAPI.movieDetail(movieIdx = movieIdx)
- }
-
- override suspend fun searchMoviePeople(
- actorType: String,
- name: String
- ): List = indiStrawApiCall {
- movieAPI.searchMoviePeople(actorType = actorType, name = name)
- }
-
- override suspend fun addMoviePeople(actorType: String, moviePeopleRequest: MoviePeopleRequest) =
- indiStrawApiCall {
- movieAPI.addMoviePeople(actorType = actorType, moviePeopleRequest = moviePeopleRequest)
- }
-
- override suspend fun moviePeopleDetail(
- actorType: String,
- actorIdx: Long
- ): MoviePeopleDetailResponse =
- indiStrawApiCall {
- movieAPI.moviePeopleDetail(actorType = actorType, actorIdx = actorIdx)
- }
-
- override suspend fun movieRecentList(): List = indiStrawApiCall {
- movieAPI.movieList().list.let {
- it.slice(0 until if (it.size <= 10) it.size else 10)
- }
- }
-
- override suspend fun moviePopularList(): List = indiStrawApiCall {
- movieAPI.moviePopularList()
- }
-
- override suspend fun movieRecommendList(): List = indiStrawApiCall {
- movieAPI.movieRecommendList()
- }
-
- override suspend fun movieHistoryList(): List = indiStrawApiCall {
- movieAPI.movieHistoryList()
- }
-
- override suspend fun addMovieHistory(movieHistoryRequest: MovieHistoryRequest) =
- indiStrawApiCall {
- movieAPI.addMovieHistory(movieHistoryRequest = movieHistoryRequest).errorHandling()
- }
-
- override suspend fun movieHistory(movieIdx: Long): DetailMovieHistoryResponse =
- indiStrawApiCall {
- movieAPI.movieHistory(movieIdx = movieIdx)
- }
-}
\ No newline at end of file
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/AccountRepositoryImpl.kt b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/AccountRepositoryImpl.kt
index c336c443..675582ca 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/AccountRepositoryImpl.kt
+++ b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/AccountRepositoryImpl.kt
@@ -1,15 +1,15 @@
package com.danbam.indistraw.core.data.repository
-import com.danbam.indistraw.core.data.remote.datasource.AccountRemoteDataSource
-import com.danbam.indistraw.core.data.remote.request.auth.toRequest
-import com.danbam.indistraw.core.data.remote.response.auth.toEntity
-import com.danbam.indistraw.core.data.remote.response.funding.toEntity
+import com.danbam.indistraw.core.remote.datasource.AccountRemoteDataSource
+import com.danbam.indistraw.core.remote.request.auth.toRequest
+import com.danbam.indistraw.core.remote.response.auth.toEntity
import com.danbam.indistraw.core.domain.entity.auth.FindIdEntity
import com.danbam.indistraw.core.domain.entity.auth.ProfileEntity
-import com.danbam.indistraw.core.param.auth.ChangeAddressParam
-import com.danbam.indistraw.core.param.auth.ChangePasswordParam
-import com.danbam.indistraw.core.param.auth.EditProfileParam
+import com.danbam.indistraw.core.domain.param.auth.ChangeAddressParam
+import com.danbam.indistraw.core.domain.param.auth.ChangePasswordParam
+import com.danbam.indistraw.core.domain.param.auth.EditProfileParam
import com.danbam.indistraw.core.domain.repository.AccountRepository
+import com.danbam.indistraw.core.remote.response.funding.toEntity
import javax.inject.Inject
class AccountRepositoryImpl @Inject constructor(
@@ -33,6 +33,9 @@ class AccountRepositoryImpl @Inject constructor(
override suspend fun editProfile(editProfileParam: EditProfileParam) =
accountRemoteDataSource.editProfile(editProfileRequest = editProfileParam.toRequest())
+ override suspend fun enrollMoviePeople(peopleType: String, actorIdx: Long) =
+ accountRemoteDataSource.enrollMoviePeople(peopleType = peopleType, actorIdx = actorIdx)
+
override suspend fun withdraw() =
accountRemoteDataSource.withdraw()
}
\ No newline at end of file
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/AddressRepositoryImpl.kt b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/AddressRepositoryImpl.kt
index 1ef67959..995f72c8 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/AddressRepositoryImpl.kt
+++ b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/AddressRepositoryImpl.kt
@@ -2,8 +2,8 @@ package com.danbam.indistraw.core.data.repository
import androidx.paging.PagingData
import androidx.paging.map
-import com.danbam.indistraw.core.data.remote.datasource.AddressRemoteDataSource
-import com.danbam.indistraw.core.data.remote.response.auth.toEntity
+import com.danbam.indistraw.core.remote.datasource.AddressRemoteDataSource
+import com.danbam.indistraw.core.remote.response.auth.toEntity
import com.danbam.indistraw.core.domain.entity.auth.AddressEntity
import com.danbam.indistraw.core.domain.repository.AddressRepository
import kotlinx.coroutines.flow.Flow
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/AuthRepositoryImpl.kt b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/AuthRepositoryImpl.kt
index a5436613..6de00ad5 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/AuthRepositoryImpl.kt
+++ b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/AuthRepositoryImpl.kt
@@ -1,14 +1,14 @@
package com.danbam.indistraw.core.data.repository
-import com.danbam.indistraw.core.data.local.datasource.AuthLocalDataSource
-import com.danbam.indistraw.core.data.remote.datasource.AuthRemoteDataSource
-import com.danbam.indistraw.core.data.remote.request.auth.toRequest
-import com.danbam.indistraw.core.data.remote.response.auth.LoginResponse
+import com.danbam.indistraw.core.local.datasource.AuthLocalDataSource
+import com.danbam.indistraw.core.remote.datasource.AuthRemoteDataSource
+import com.danbam.indistraw.core.remote.request.auth.toRequest
import com.danbam.indistraw.core.data.util.default
import com.danbam.indistraw.core.domain.exception.ExpiredTokenException
-import com.danbam.indistraw.core.param.auth.LoginParam
-import com.danbam.indistraw.core.param.auth.SignUpParam
+import com.danbam.indistraw.core.domain.param.auth.LoginParam
+import com.danbam.indistraw.core.domain.param.auth.SignUpParam
import com.danbam.indistraw.core.domain.repository.AuthRepository
+import com.danbam.indistraw.core.remote.response.auth.LoginResponse
import java.time.LocalDateTime
import javax.inject.Inject
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/BannerRepositoryImpl.kt b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/BannerRepositoryImpl.kt
index 306d3cc7..c04acea1 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/BannerRepositoryImpl.kt
+++ b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/BannerRepositoryImpl.kt
@@ -1,9 +1,9 @@
package com.danbam.indistraw.core.data.repository
-import com.danbam.indistraw.core.data.remote.datasource.BannerRemoteDataSource
-import com.danbam.indistraw.core.data.remote.response.banner.toEntity
-import com.danbam.indistraw.core.entity.banner.BannerEntity
+import com.danbam.indistraw.core.domain.entity.banner.BannerEntity
+import com.danbam.indistraw.core.remote.datasource.BannerRemoteDataSource
import com.danbam.indistraw.core.domain.repository.BannerRepository
+import com.danbam.indistraw.core.remote.response.banner.toEntity
import javax.inject.Inject
class BannerRepositoryImpl @Inject constructor(
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/CrowdFundingRepositoryImpl.kt b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/CrowdFundingRepositoryImpl.kt
index 6f736675..e048dc8f 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/CrowdFundingRepositoryImpl.kt
+++ b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/CrowdFundingRepositoryImpl.kt
@@ -2,14 +2,14 @@ package com.danbam.indistraw.core.data.repository
import androidx.paging.PagingData
import androidx.paging.map
-import com.danbam.indistraw.core.data.remote.datasource.CrowdFundingRemoteDataSource
-import com.danbam.indistraw.core.data.remote.request.funding.toRequest
-import com.danbam.indistraw.core.data.remote.response.funding.toEntity
-import com.danbam.indistraw.core.entity.funding.FundingDetailEntity
-import com.danbam.indistraw.core.entity.funding.FundingEntity
-import com.danbam.indistraw.core.entity.funding.MyFundingEntity
-import com.danbam.indistraw.core.param.funding.FundingCreateParam
+import com.danbam.indistraw.core.domain.entity.funding.FundingDetailEntity
+import com.danbam.indistraw.core.domain.entity.funding.FundingEntity
+import com.danbam.indistraw.core.domain.entity.funding.MyFundingEntity
+import com.danbam.indistraw.core.domain.param.funding.FundingCreateParam
+import com.danbam.indistraw.core.remote.datasource.CrowdFundingRemoteDataSource
+import com.danbam.indistraw.core.remote.request.funding.toRequest
import com.danbam.indistraw.core.domain.repository.CrowdFundingRepository
+import com.danbam.indistraw.core.remote.response.funding.toEntity
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
import javax.inject.Inject
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/FileRepositoryImpl.kt b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/FileRepositoryImpl.kt
index 34c17b54..37ea9c15 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/FileRepositoryImpl.kt
+++ b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/FileRepositoryImpl.kt
@@ -1,10 +1,10 @@
package com.danbam.indistraw.core.data.repository
-import com.danbam.indistraw.core.data.remote.datasource.FileRemoteDataSource
-import com.danbam.indistraw.core.data.remote.response.file.toEntity
+import com.danbam.indistraw.core.remote.datasource.FileRemoteDataSource
import com.danbam.indistraw.core.data.util.toMultipartBody
-import com.danbam.indistraw.core.entity.file.FileEntity
+import com.danbam.indistraw.core.domain.entity.file.FileEntity
import com.danbam.indistraw.core.domain.repository.FileRepository
+import com.danbam.indistraw.core.remote.response.file.toEntity
import java.io.File
import javax.inject.Inject
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/FundingRepositoryImpl.kt b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/FundingRepositoryImpl.kt
index c13e5490..39a5ff30 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/FundingRepositoryImpl.kt
+++ b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/FundingRepositoryImpl.kt
@@ -1,11 +1,11 @@
package com.danbam.indistraw.core.data.repository
-import com.danbam.indistraw.core.data.remote.datasource.FundingRemoteDataSource
-import com.danbam.indistraw.core.data.remote.request.funding.toRequest
-import com.danbam.indistraw.core.data.remote.response.funding.toEntity
-import com.danbam.indistraw.core.entity.funding.FundingEntity
-import com.danbam.indistraw.core.param.funding.FundingParam
+import com.danbam.indistraw.core.remote.datasource.FundingRemoteDataSource
+import com.danbam.indistraw.core.remote.request.funding.toRequest
+import com.danbam.indistraw.core.domain.entity.funding.FundingEntity
+import com.danbam.indistraw.core.domain.param.funding.FundingParam
import com.danbam.indistraw.core.domain.repository.FundingRepository
+import com.danbam.indistraw.core.remote.response.funding.toEntity
import javax.inject.Inject
class FundingRepositoryImpl @Inject constructor(
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/MovieRepositoryImpl.kt b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/MovieRepositoryImpl.kt
index 6c8719e1..61f41821 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/MovieRepositoryImpl.kt
+++ b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/MovieRepositoryImpl.kt
@@ -2,19 +2,19 @@ package com.danbam.indistraw.core.data.repository
import androidx.paging.PagingData
import androidx.paging.map
-import com.danbam.indistraw.core.data.remote.datasource.MovieRemoteDataSource
-import com.danbam.indistraw.core.data.remote.request.movie.toRequest
-import com.danbam.indistraw.core.data.remote.response.movie.toEntity
-import com.danbam.indistraw.core.entity.movie.DetailMovieHistoryEntity
-import com.danbam.indistraw.core.entity.movie.MovieDetailEntity
-import com.danbam.indistraw.core.entity.movie.MovieEntity
-import com.danbam.indistraw.core.entity.movie.MovieHistoryEntity
-import com.danbam.indistraw.core.entity.movie.MoviePeopleDetailEntity
-import com.danbam.indistraw.core.entity.movie.MoviePeopleEntity
-import com.danbam.indistraw.core.param.movie.MovieCreateParam
-import com.danbam.indistraw.core.param.movie.MovieHistoryParam
-import com.danbam.indistraw.core.param.movie.MoviePeopleParam
+import com.danbam.indistraw.core.domain.entity.movie.DetailMovieHistoryEntity
+import com.danbam.indistraw.core.domain.entity.movie.MovieDetailEntity
+import com.danbam.indistraw.core.domain.entity.movie.MovieEntity
+import com.danbam.indistraw.core.domain.entity.movie.MovieHistoryEntity
+import com.danbam.indistraw.core.domain.entity.movie.MoviePeopleDetailEntity
+import com.danbam.indistraw.core.domain.entity.movie.MoviePeopleEntity
+import com.danbam.indistraw.core.domain.param.movie.MovieCreateParam
+import com.danbam.indistraw.core.domain.param.movie.MovieHistoryParam
+import com.danbam.indistraw.core.domain.param.movie.MoviePeopleParam
+import com.danbam.indistraw.core.remote.datasource.MovieRemoteDataSource
+import com.danbam.indistraw.core.remote.request.movie.toRequest
import com.danbam.indistraw.core.domain.repository.MovieRepository
+import com.danbam.indistraw.core.remote.response.movie.toEntity
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
import javax.inject.Inject
@@ -32,20 +32,20 @@ class MovieRepositoryImpl @Inject constructor(
movieRemoteDataSource.movieDetail(movieIdx = movieIdx).toEntity()
override suspend fun searchMoviePeople(
- actorType: String,
+ peopleType: String,
name: String
): List =
- movieRemoteDataSource.searchMoviePeople(actorType = actorType, name = name)
+ movieRemoteDataSource.searchMoviePeople(peopleType = peopleType, name = name)
.map { it.toEntity() }
- override suspend fun addMoviePeople(actorType: String, moviePeopleParam: MoviePeopleParam) =
+ override suspend fun addMoviePeople(peopleType: String, moviePeopleParam: MoviePeopleParam) =
movieRemoteDataSource.addMoviePeople(
- actorType = actorType,
+ peopleType = peopleType,
moviePeopleRequest = moviePeopleParam.toRequest()
).actorIdx
- override suspend fun moviePeopleDetail(actorType: String, actorIdx: Long): MoviePeopleDetailEntity =
- movieRemoteDataSource.moviePeopleDetail(actorType = actorType, actorIdx = actorIdx).toEntity()
+ override suspend fun moviePeopleDetail(peopleType: String, actorIdx: Long): MoviePeopleDetailEntity =
+ movieRemoteDataSource.moviePeopleDetail(peopleType = peopleType, actorIdx = actorIdx).toEntity()
override suspend fun movieRecentList(): List =
movieRemoteDataSource.movieRecentList().map { it.toEntity() }
@@ -64,4 +64,7 @@ class MovieRepositoryImpl @Inject constructor(
override suspend fun movieHistory(movieIdx: Long): DetailMovieHistoryEntity =
movieRemoteDataSource.movieHistory(movieIdx = movieIdx).toEntity()
+
+ override suspend fun movieFilmography(): List =
+ movieRemoteDataSource.movieFilmography().map { it.toEntity() }
}
\ No newline at end of file
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/QRCodeRepositoryImpl.kt b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/QRCodeRepositoryImpl.kt
index 9078e36d..d0bf7e40 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/QRCodeRepositoryImpl.kt
+++ b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/QRCodeRepositoryImpl.kt
@@ -1,8 +1,8 @@
package com.danbam.indistraw.core.data.repository
-import com.danbam.indistraw.core.data.local.datasource.AuthLocalDataSource
-import com.danbam.indistraw.core.data.remote.datasource.QRCodeRemoteDataSource
+import com.danbam.indistraw.core.local.datasource.AuthLocalDataSource
import com.danbam.indistraw.core.domain.repository.QRCodeRepository
+import com.danbam.indistraw.core.remote.datasource.QRCodeRemoteDataSource
import java.util.UUID
import javax.inject.Inject
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/SearchRepositoryImpl.kt b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/SearchRepositoryImpl.kt
index f9309a53..5059b6aa 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/SearchRepositoryImpl.kt
+++ b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/SearchRepositoryImpl.kt
@@ -2,16 +2,16 @@ package com.danbam.indistraw.core.data.repository
import androidx.paging.PagingData
import androidx.paging.map
-import com.danbam.indistraw.core.data.local.datasource.SearchLocalDataSource
-import com.danbam.indistraw.core.data.local.entity.search.toDB
-import com.danbam.indistraw.core.data.local.entity.search.toDomain
-import com.danbam.indistraw.core.data.remote.datasource.SearchRemoteDataSource
-import com.danbam.indistraw.core.data.remote.response.funding.toEntity
-import com.danbam.indistraw.core.data.remote.response.movie.toEntity
-import com.danbam.indistraw.core.entity.funding.FundingEntity
-import com.danbam.indistraw.core.entity.movie.MovieEntity
-import com.danbam.indistraw.core.entity.search.RecentSearchEntity
+import com.danbam.indistraw.core.local.datasource.SearchLocalDataSource
+import com.danbam.indistraw.core.local.search.toDB
+import com.danbam.indistraw.core.local.search.toDomain
+import com.danbam.indistraw.core.domain.entity.funding.FundingEntity
+import com.danbam.indistraw.core.domain.entity.movie.MovieEntity
+import com.danbam.indistraw.core.domain.entity.search.RecentSearchEntity
import com.danbam.indistraw.core.domain.repository.SearchRepository
+import com.danbam.indistraw.core.remote.datasource.SearchRemoteDataSource
+import com.danbam.indistraw.core.remote.response.funding.toEntity
+import com.danbam.indistraw.core.remote.response.movie.toEntity
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
import javax.inject.Inject
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/SystemRepositoryImpl.kt b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/SystemRepositoryImpl.kt
index 411941cd..677ebd17 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/SystemRepositoryImpl.kt
+++ b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/repository/SystemRepositoryImpl.kt
@@ -1,6 +1,6 @@
package com.danbam.indistraw.core.data.repository
-import com.danbam.indistraw.core.data.local.datasource.SystemLocalDataSource
+import com.danbam.indistraw.core.local.datasource.SystemLocalDataSource
import com.danbam.indistraw.core.domain.repository.SystemRepository
import javax.inject.Inject
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/util/FileUtil.kt b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/util/FileUtil.kt
index 9aa305e5..0f60518f 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/util/FileUtil.kt
+++ b/core/data/src/main/kotlin/com/danbam/indistraw/core/data/util/FileUtil.kt
@@ -9,5 +9,5 @@ fun File.toMultipartBody(): MultipartBody.Part =
MultipartBody.Part.createFormData(
name = "file",
filename = this.name,
- body = this.asRequestBody("application/json".toMediaType())
+ body = this.asRequestBody("*/*".toMediaType())
)
\ No newline at end of file
diff --git a/core/design-system/build.gradle.kts b/core/design-system/build.gradle.kts
index 5cdd356d..2ed2e52c 100644
--- a/core/design-system/build.gradle.kts
+++ b/core/design-system/build.gradle.kts
@@ -1,23 +1,9 @@
-import com.android.build.gradle.internal.cxx.configure.gradleLocalProperties
-
plugins {
id("indistraw-core")
}
android {
namespace = "com.danbam.indistraw.core.design_system"
- defaultConfig {
- buildConfigField(
- "String",
- "VIDEO_PRE_PATH",
- gradleLocalProperties(rootDir).getProperty("VIDEO_PRE_PATH")
- )
- buildConfigField(
- "String",
- "PAY_KEY",
- gradleLocalProperties(rootDir).getProperty("PAY_KEY")
- )
- }
buildFeatures {
compose = true
}
@@ -27,13 +13,8 @@ android {
}
dependencies {
- implementation(project(":core:domain"))
implementation(libs.bundles.compose)
implementation(libs.coil)
- implementation(libs.bundles.exoplayer)
- implementation(libs.bundles.camera)
- implementation(libs.bundles.barcode)
implementation(libs.bundles.tv)
- implementation(libs.bundles.retrofit)
- implementation(libs.bootpay)
+ implementation(libs.bundles.camera)
}
\ No newline at end of file
diff --git a/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/component/Background.kt b/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/component/Background.kt
index e2255ae7..263029a9 100644
--- a/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/component/Background.kt
+++ b/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/component/Background.kt
@@ -12,7 +12,9 @@ import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
+import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
+import androidx.compose.ui.draw.alpha
import com.danbam.indistraw.core.design_system.IndiStrawTheme
import com.danbam.indistraw.core.design_system.util.androidx.indiStrawClickable
@@ -20,6 +22,7 @@ import com.danbam.indistraw.core.design_system.util.androidx.indiStrawClickable
@Composable
fun IndiStrawColumnBackground(
modifier: Modifier = Modifier,
+ isLoading: Boolean = false,
onClickAction: (() -> Unit)? = null,
scrollEnabled: Boolean = false,
content: @Composable ColumnScope.() -> Unit,
@@ -35,13 +38,22 @@ fun IndiStrawColumnBackground(
} else {
modifier.fillMaxSize()
}
- Column(
+ Box(
modifier = columnModifier
.background(IndiStrawTheme.colors.black)
.indiStrawClickable {
onClickAction?.invoke()
},
- content = content
+ content = {
+ Column {
+ content()
+ }
+ if (isLoading) {
+ IndiStrawLoading(
+ modifier = Modifier.align(Alignment.Center)
+ )
+ }
+ }
)
}
}
@@ -50,6 +62,7 @@ fun IndiStrawColumnBackground(
@Composable
fun IndiStrawBoxBackground(
modifier: Modifier = Modifier,
+ isLoading: Boolean = false,
onClickAction: (() -> Unit)? = null,
scrollEnabled: Boolean = false,
content: @Composable BoxScope.() -> Unit,
@@ -71,7 +84,14 @@ fun IndiStrawBoxBackground(
.indiStrawClickable {
onClickAction?.invoke()
},
- content = content
+ content = {
+ content()
+ if (isLoading) {
+ IndiStrawLoading(
+ modifier = Modifier.align(Alignment.Center)
+ )
+ }
+ }
)
}
}
diff --git a/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/component/Loading.kt b/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/component/Loading.kt
new file mode 100644
index 00000000..6b69f7ae
--- /dev/null
+++ b/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/component/Loading.kt
@@ -0,0 +1,19 @@
+package com.danbam.indistraw.core.design_system.component
+
+import androidx.compose.foundation.layout.size
+import androidx.compose.material3.CircularProgressIndicator
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.unit.dp
+import com.danbam.indistraw.core.design_system.IndiStrawTheme
+
+@Composable
+fun IndiStrawLoading(
+ modifier: Modifier = Modifier
+) {
+ CircularProgressIndicator(
+ modifier = modifier.size(80.dp),
+ strokeWidth = 3.5.dp,
+ color = IndiStrawTheme.colors.main
+ )
+}
\ No newline at end of file
diff --git a/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/component/ViewPager.kt b/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/component/ViewPager.kt
index 732bcc41..af348513 100644
--- a/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/component/ViewPager.kt
+++ b/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/component/ViewPager.kt
@@ -34,7 +34,9 @@ fun IndiStrawBanner(
itemCount: Int,
content: @Composable (page: Int) -> Unit,
) {
- val state = rememberPagerState()
+ val state = rememberPagerState {
+ itemCount
+ }
val bannerHeight = LocalConfiguration.current.screenHeightDp * 0.26
LaunchedEffect(state.currentPage) {
@@ -53,7 +55,6 @@ fun IndiStrawBanner(
modifier = Modifier
.fillMaxWidth()
.height(bannerHeight.dp),
- pageCount = itemCount,
state = state
) {
content(it)
@@ -101,7 +102,9 @@ fun IndiStrawTvBanner(
itemCount: Int,
content: @Composable (page: Int) -> Unit,
) {
- val state = rememberPagerState()
+ val state = rememberPagerState {
+ itemCount
+ }
val bannerHeight = LocalConfiguration.current.screenHeightDp * 0.4
LaunchedEffect(state.currentPage) {
@@ -120,7 +123,6 @@ fun IndiStrawTvBanner(
modifier = Modifier
.fillMaxWidth()
.height(bannerHeight.dp),
- pageCount = itemCount,
state = state
) {
content(it)
@@ -168,7 +170,9 @@ fun IndiStrawSlider(
itemCount: Int,
content: @Composable (page: Int) -> Unit,
) {
- val state = rememberPagerState()
+ val state = rememberPagerState {
+ itemCount
+ }
val sliderHeight = LocalConfiguration.current.screenHeightDp * 0.22
Column(
@@ -180,7 +184,6 @@ fun IndiStrawSlider(
modifier = Modifier
.fillMaxWidth()
.height(sliderHeight.dp),
- pageCount = itemCount,
state = state
) {
content(it)
diff --git a/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/util/android/FileUtil.kt b/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/util/android/FileUtil.kt
index 0492ce50..6c808484 100644
--- a/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/util/android/FileUtil.kt
+++ b/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/util/android/FileUtil.kt
@@ -13,17 +13,36 @@ import java.time.LocalDateTime
@SuppressLint("Range")
fun Uri.toFile(context: Context): File {
- return File(getFileName(context))
+ val fileName = getFileName(context)
+ val file = createTempFile(context, fileName)
+ copyToFile(context, this, file)
+ return file
}
@SuppressLint("Range")
private fun Uri.getFileName(context: Context): String {
- val name = context.contentResolver.query(this, null, null, null)?.use {
- val nameIndex = it.getColumnIndex("_data")
- it.moveToFirst()
- it.getString(nameIndex)
+ val name = this.toString().split("/").last()
+ val ext = context.contentResolver.getType(this)!!.split("/").last()
+ return "$name.$ext"
+}
+
+private fun createTempFile(context: Context, fileName: String): File {
+ val storageDir: File? = context.getExternalFilesDir(Environment.DIRECTORY_PICTURES)
+ return File(storageDir, fileName)
+}
+
+private fun copyToFile(context: Context, uri: Uri, file: File) {
+ val inputStream = context.contentResolver.openInputStream(uri)
+ val outputStream = FileOutputStream(file)
+
+ val buffer = ByteArray(4 * 1024)
+ while (true) {
+ val byteCount = inputStream!!.read(buffer)
+ if (byteCount < 0) break
+ outputStream.write(buffer, 0, byteCount)
}
- return name ?: throw NotFoundFileException()
+
+ outputStream.flush()
}
fun Bitmap.toFile(context: Context): File {
diff --git a/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/util/android/SystemUtil.kt b/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/util/android/SystemUtil.kt
index cefbdd6b..71b2a8d5 100644
--- a/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/util/android/SystemUtil.kt
+++ b/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/util/android/SystemUtil.kt
@@ -7,7 +7,8 @@ import java.util.Locale
sealed class Language(val type: String, val stringId: Int) {
companion object {
- fun toList() = listOf(English, Korean, Japanese, Spanish, Chinese)
+ fun toList() =
+ listOf(English, Korean, Japanese, Spanish, Russian, German, Chinese, Vietnamese)
}
object English : Language("en", R.string.english)
@@ -15,6 +16,9 @@ sealed class Language(val type: String, val stringId: Int) {
object Japanese : Language("ja", R.string.japanese)
object Spanish : Language("es", R.string.spanish)
object Chinese : Language("zh", R.string.chinese)
+ object German : Language("de", R.string.german)
+ object Vietnamese : Language("vi", R.string.vietnamese)
+ object Russian : Language("ru", R.string.russian)
}
fun Language.changeLanguage(context: Context) {
diff --git a/core/design-system/src/main/res/values-de-rDE/strings.xml b/core/design-system/src/main/res/values-de-rDE/strings.xml
new file mode 100644
index 00000000..55223bad
--- /dev/null
+++ b/core/design-system/src/main/res/values-de-rDE/strings.xml
@@ -0,0 +1,240 @@
+
+
+
+ Gwangju
+ Hana
+ NH Genossenschaftsbank
+ Postbank
+ Shinhyeop
+ Shinhan
+ Toss Bank
+ Woori
+ Kakao Bank
+
+
+ Naver Pay (Zahlungsart)
+ ISP / App-Zahlung
+ Banküberweisung
+ Kakao Pay
+
+
+ Alle
+ Action
+ Romantik
+ Komödie
+ Thriller
+ Drama
+ Science-Fiction
+ Animation
+ Horror
+ Abenteuer
+ Fantasy
+
+
+ Sprache
+ Nutzungsbedingungen
+ Konto
+ Abmelden
+ Mitgliedschaft kündigen
+
+
+ Bitte 6 bis 15 Zeichen eingeben.
+ Bitte 8 bis 20 Zeichen eingeben.
+ [Erforderlich] Nutzungsbedingungen akzeptieren
+ [Erforderlich] Einwilligung zur Datensammlung und -nutzung
+ Indi Straw
+ QR-Login
+ Bitte QR-Code authentifizieren.
+ QR-Gültigkeitsdauer
+
+
+ Regisseur
+ Regisseur/Schauspieler hinzufügen
+ Regisseur hinzufügen
+ verbleibend
+ Zustimmung zur Datennutzung
+ Aus Galerie auswählen
+ Suchen
+ Zahlungsmethode
+ Zahlungsdetails
+ Bezahlen
+ Weiter
+ Kontoeinstellungen
+ Noch kein Konto?
+ Kontoinformationen
+ Kontonummer
+ Betrag
+ Bitte Betrag festlegen.
+ Vorhandenen Regisseur hinzufügen
+ Vorhandenen Regisseur hinzufügen
+ Vorhandenen Schauspieler hinzufügen
+ Vorhandenen Schauspieler hinzufügen
+
+
+ Verbleibende Laufzeit
+
+
+ Erneut senden
+ Abgeschlossen
+ Unabhängiger Film
+ Unabhängigen Film erstellen
+ Zurück
+ Hinzufügen
+ Ungültige Telefonnummer.
+
+
+ Abmelden
+ Möchten Sie sich abmelden?
+ Anmelden
+ Anmelden
+ Belohnungsart auswählen
+ Belohnung hinzufügen
+ Belohnung hinzufügen
+ Möchten Sie eine Belohnung hinzufügen?
+
+
+ Fälligkeitsdatum
+ Meine Finanzierung
+ Alle Filme anzeigen
+ Gesammeltes Geld
+ Zielbetrag
+ Bitte Zielbetrag festlegen.
+ Was suchen Sie?
+
+
+ Schauspieler
+ Schauspieler hinzufügen
+ Versandinformationen
+ Telefonnummer bestätigen
+ Ändern
+ Bitte das zu ändernde Passwort eingeben.
+ Passwort
+ Passwort ändern
+ Passwort vergessen
+ Passwort bestätigen
+ Bitte Passwort bestätigen.
+ Passwörter stimmen nicht überein.
+ Bitte Passwort eingeben.
+ Ungültiges Passwort.
+
+
+ Bitte Ihre Kontonummer eingeben.
+ Bild bearbeiten
+ Kamera öffnen
+ Detailanschrift
+ Bitte Detailanschrift eingeben.
+ Artikelpreis
+ Artikelinformationen
+ Neuen Regisseur hinzufügen
+ Neuen Regisseur hinzufügen
+ Neuen Schauspieler hinzufügen
+ Neuen Schauspieler hinzufügen
+ Bitte neue Telefonnummer eingeben.
+ Einstellungen
+ Vorstellen
+ Bitte eine Vorstellung eingeben.
+ Menge
+ Bitte Menge eingeben.
+ Soll Zahlen, Großbuchstaben und Sonderzeichen enthalten.
+ Physische Belohnung
+ Handelt es sich um eine physische Belohnung?
+ Thumbnail
+
+
+ ID
+ ID suchen
+ Bitte ID eingeben.
+ Sprache ändern
+ Film
+ Bitte einen Film registrieren.
+ Won
+ Bitte eine Bank auswählen.
+ Name
+ Bitte Namen eingeben.
+ ID bereits registriert.
+ Telefonnummer bereits registriert.
+ Bild hochladen
+ Bitte ein Bild hochladen.
+ Weiter ansehen
+ Beliebt
+ Beliebte Suchfilme
+ Beliebte Tags
+ Bestätigungsnummer
+ Bestätigungsnummer überprüfen
+ Bestätigungsnummer ist abgelaufen.
+ Bestätigungsnummer nicht erhalten?
+ Falsche Bestätigungsnummer.
+ Bitte Bestätigungsnummer eingeben.
+ Bestätigung abgeschlossen
+ Bestätigen
+
+
+ Details anzeigen
+ Projektliste
+ Bitte versuchen Sie es später erneut.
+ Speichern
+ Alle anzeigen >
+ Alle Filme
+ Alle akzeptieren
+ Telefonnummer
+ Ungültiges Telefonnummerformat.
+ Bitte Telefonnummer eingeben.
+ Titel
+ Bitte einen Titel eingeben.
+ ID nicht vorhanden.
+ Beenden
+ Adresse
+ Keine Adresse vorhanden.
+ Bitte Adresse eingeben.
+ Adresse suchen
+ Moderator
+
+
+ Teilnehmer
+ Von Anfang an ansehen
+ Angehängte Datei
+ Gesamtsumme
+ Bild hinzufügen
+ Wenn Sie einen zusätzlichen Betrag eingeben, wird zusätzliche Unterstützung geleistet.
+ Hinzufügen
+ Zusätzliche Unterstützung
+ Teilnehmender Film
+ Abbrechen
+ Aktuell
+ Kürzlich gesuchte Begriffe
+ Zuletzt angesehene Filme
+ Maximale Anzahl an Anfragen überschritten. Bitte in einer Stunde erneut versuchen.
+ Maximale Anzahl an Überprüfungsanfragen überschritten. Bitte in einer Stunde erneut versuchen.
+ Empfehlen
+ Schauspieler
+
+
+ Crowdfunding
+ Crowdfunding erstellen
+ Crowdfunding
+ Crowdfunding-Vorschaubild hinzufügen
+ Haben Sie Crowdfunding verwendet?
+
+
+ Datei
+ Bitte eine Datei anhängen.
+ Datei hinzufügen
+ Finanzierung
+ Finanzierung
+ Profilbild ändern
+ Bitte ein Profilbild auswählen.
+
+
+ Hervorheben
+ Zur Seite gehen
+ Bestätigen
+ Überprüfen
+ Aktuelle ID
+ Aktuelle Adresse
+ Registrieren
+ Registrierung fehlgeschlagen.
+ Konto kündigen
+ Möchten Sie Ihr Konto kündigen?
+ Startseite
+ Unterstützen
+
\ No newline at end of file
diff --git a/core/design-system/src/main/res/values-en/strings.xml b/core/design-system/src/main/res/values-en/strings.xml
index 6a173188..b6da36c3 100644
--- a/core/design-system/src/main/res/values-en/strings.xml
+++ b/core/design-system/src/main/res/values-en/strings.xml
@@ -48,6 +48,7 @@
Director
+ Register director / actor
Add Director
Remaining
Agree to Personal Information
@@ -231,4 +232,8 @@
Are you sure you want to withdraw?
Home
Donate
+ Register an existing director
+ Register an existing actor
+ Register a new director
+ "Register a new actor "
diff --git a/core/design-system/src/main/res/values-es/strings.xml b/core/design-system/src/main/res/values-es/strings.xml
index b8dea8e4..d8080b41 100644
--- a/core/design-system/src/main/res/values-es/strings.xml
+++ b/core/design-system/src/main/res/values-es/strings.xml
@@ -49,6 +49,7 @@
Director
+ "Registrar director / actor "
Agregar Director
Unidades Restantes
Aprobar la Recopilación de Datos Personales
@@ -232,4 +233,8 @@
¿Desea dar de baja?
Inicio
Donar
+ "Registrar un director existente "
+ "Registrar un actor existente "
+ "Registrar un nuevo director "
+ Registrar un nuevo actor
\ No newline at end of file
diff --git a/core/design-system/src/main/res/values-ja/strings.xml b/core/design-system/src/main/res/values-ja/strings.xml
index 94db2bb0..72e47fdd 100644
--- a/core/design-system/src/main/res/values-ja/strings.xml
+++ b/core/design-system/src/main/res/values-ja/strings.xml
@@ -49,6 +49,7 @@
監督
+ 監督 / 俳優を登録する
監督を追加
残り個数
個人情報の同意
@@ -232,4 +233,8 @@
退会しますか?
ホーム
サポートする
+ 既存の監督を登録する
+ "既存の俳優を登録する "
+ 新しい監督を登録する
+ "新しい俳優を登録する "
diff --git a/core/design-system/src/main/res/values-ko-rKR/strings.xml b/core/design-system/src/main/res/values-ko-rKR/strings.xml
index 7883d998..7e7b60e7 100644
--- a/core/design-system/src/main/res/values-ko-rKR/strings.xml
+++ b/core/design-system/src/main/res/values-ko-rKR/strings.xml
@@ -48,6 +48,7 @@
감독
+ 감독 / 배우 등록하기
감독 추가
개 남음
개인정보 동의
@@ -231,4 +232,8 @@
회원탈퇴를 하시겠습니까?
홈
후원하기
+ 기존 감독 등록하기
+ 기존 배우 등록하기
+ 새로운 감독 등록하기
+ 새로운 배우 등록하기
\ No newline at end of file
diff --git a/core/design-system/src/main/res/values-ru/strings.xml b/core/design-system/src/main/res/values-ru/strings.xml
new file mode 100644
index 00000000..cf692ba9
--- /dev/null
+++ b/core/design-system/src/main/res/values-ru/strings.xml
@@ -0,0 +1,240 @@
+
+
+
+ Гванджу
+ Хана
+ NH Нонгхёп
+ Почта
+ Синхёп
+ Синхан
+ Тоссбанк
+ Вури
+ Какаобанк
+
+
+ Навер Пей (тип оплаты)
+ Оплата через ISP / мобильное приложение
+ Банковский перевод
+ Какаопей
+
+
+ Все
+ Экшн
+ Романтика
+ Комедия
+ Триллер
+ Драма
+ Научная фантастика
+ Анимация
+ Ужасы
+ Приключения
+ Фэнтези
+
+
+ Язык
+ Условия
+ Учетная запись
+ Выйти
+ Завершение членства
+
+
+ Введите от 6 до 15 символов.
+ Введите от 8 до 20 символов.
+ [Обязательно] Согласие с условиями использования
+ [Обязательно] Согласие на сбор и использование личной информации
+ Indi Straw
+ Вход с помощью QR-кода
+ Пожалуйста, подтвердите QR-код.
+ Осталось время действия QR
+
+
+ Режиссер
+ Добавить режиссера или актера
+ Добавить режиссера
+ осталось штук
+ Согласие на обработку личных данных
+ Выбрать из галереи
+ Поиск
+ Способ оплаты
+ Подробности оплаты
+ Оплатить
+ Продолжить
+ Настройки учетной записи
+ У вас еще нет аккаунта?
+ Информация об аккаунте
+ Номер счета
+ Сумма
+ Пожалуйста, укажите сумму.
+ Зарегистрировать существующего режиссера
+ Добавить существующего режиссера
+ Зарегистрировать существующего актера
+ Добавить существующего актера
+
+
+ Осталось время
+
+
+ Отправить еще раз
+ Завершено
+ Независимое кино
+ Создать независимый фильм
+ Назад
+ Зарегистрировать
+ Номер не зарегистрирован.
+
+
+ Выйти
+ Вы уверены, что хотите выйти?
+ Войти
+ Войти
+ Выбрать вознаграждение
+ Добавить вознаграждение
+ Добавить вознаграждение
+ Вы хотите добавить вознаграждение?
+
+
+ Срок завершения
+ Мои средства
+ Просмотреть все фильмы
+ Собранная сумма
+ Целевая сумма
+ Пожалуйста, укажите целевую сумму.
+ Что вы ищете?
+
+
+ Актер
+ Добавить актера
+ Информация о доставке
+ Подтвердить номер
+ Изменить
+ Пожалуйста, введите новый пароль.
+ Пароль
+ Изменить пароль
+ Восстановление пароля
+ Подтвердить пароль
+ Пожалуйста, введите подтверждение пароля.
+ Пароли не совпадают.
+ Пожалуйста, введите пароль.
+ Неверный пароль.
+
+
+ Пожалуйста, укажите номер счета, который вы хотите использовать.
+ Изменить изображение
+ Сделать фото
+ Подробный адрес
+ Пожалуйста, укажите подробный адрес.
+ Цена товара
+ Информация о товаре
+ Зарегистрировать нового режиссера
+ Добавить нового режиссера
+ Зарегистрировать нового актера
+ Добавить нового актера
+ Пожалуйста, укажите новый номер телефона.
+ Настройки
+ Описание
+ Пожалуйста, введите описание.
+ Количество
+ Пожалуйста, укажите количество.
+ Пароль должен содержать цифры, заглавные и строчные буквы, а также специальные символы.
+ Физический
+ Является ли вознаграждение физическим товаром?
+ Обложка
+
+
+ Идентификатор
+ Найти идентификатор
+ Пожалуйста, введите идентификатор.
+ Изменить язык
+ Фильм
+ Пожалуйста, укажите фильм.
+ вон
+ Пожалуйста, выберите банк.
+ Имя
+ Пожалуйста, введите имя.
+ Идентификатор уже зарегистрирован.
+ Номер телефона уже зарегистрирован.
+ Загрузить изображение
+ Пожалуйста, загрузите обложку.
+ Продолжить просмотр
+ Популярные
+ Популярные фильмы для поиска
+ Популярные теги
+ Код подтверждения
+ Проверить код подтверждения
+ Срок действия кода подтверждения истек.
+ Не получили код подтверждения?
+ Неверный код подтверждения.
+ Пожалуйста, введите код подтверждения.
+ Подтверждение завершено
+ Подтверждение
+
+
+ Подробности
+ Список проектов
+ Пожалуйста, подождите и попробуйте еще раз.
+ Сохранить
+ Просмотреть все >
+ Все фильмы
+ Согласие со всеми
+ Номер телефона
+ Неверный формат номера телефона.
+ Пожалуйста, введите номер телефона.
+ Заголовок
+ Пожалуйста, укажите заголовок.
+ Идентификатор не существует.
+ Завершено
+ Адрес
+ Адрес не существует.
+ Пожалуйста, укажите адрес.
+ Найти адрес
+ Ведущий
+
+
+ Количество участников
+ Начать просмотр сначала
+ Прикрепленный файл
+ Общая сумма
+ Добавить изображение
+ При указании дополнительной суммы она будет добавлена к финансированию.
+ Добавить
+ Дополнительное финансирование
+ Участвующий фильм
+ Отмена
+ Недавние
+ Недавние запросы
+ Недавно просмотренные фильмы
+ Превышено максимальное количество запросов. Повторите попытку через 1 час.
+ Превышено максимальное количество запросов на подтверждение. Повторите попытку через 1 час.
+ Рекомендации
+ Актеры
+
+
+ Массовое финансирование
+ Создать массовое финансирование
+ Участие в массовом финансировании
+ Загрузить обложку массового финансирования
+ Вы использовали массовое финансирование?
+
+
+ Файл
+ Пожалуйста, прикрепите файл.
+ Добавить файл
+ Финансирование
+ Поддержать
+ Изменить профиль
+ Пожалуйста, выберите изображение.
+
+
+ Выделить
+ Перейти
+ Подтвердить
+ Проверить
+ Текущий идентификатор
+ Текущий адрес
+ Регистрация
+ Регистрация не удалась.
+ Завершение членства
+ Вы уверены, что хотите завершить членство?
+ Главная
+ Поддержать
+
\ No newline at end of file
diff --git a/core/design-system/src/main/res/values-vi/strings.xml b/core/design-system/src/main/res/values-vi/strings.xml
new file mode 100644
index 00000000..b1296012
--- /dev/null
+++ b/core/design-system/src/main/res/values-vi/strings.xml
@@ -0,0 +1,240 @@
+
+
+
+ Gwangju
+ Hana
+ NH Nông hội
+ Bưu điện
+ Shinhyeop
+ Shinhan
+ Toss Bank
+ Woori
+ Kakao Bank
+
+
+ Naver Pay (Thanh toán trực tiếp)
+ Thanh toán qua thẻ ISP / ứng dụng
+ Chuyển khoản tài khoản
+ Kakao Pay
+
+
+ Tất cả
+ Hành động
+ Lãng mạn
+ Hài kịch
+ Kịch tính
+ Kịch
+ Khoa học viễn tưởng
+ Phim hoạt hình
+ Kinh dị
+ Phiêu lưu
+ Phiêu lưu
+
+
+ Ngôn ngữ
+ Điều khoản
+ Tài khoản
+ Đăng xuất
+ Hủy tài khoản
+
+
+ Hãy nhập từ 6 đến 15 ký tự.
+ Hãy nhập từ 8 đến 20 ký tự.
+ [Bắt buộc] Đồng ý điều khoản sử dụng
+ [Bắt buộc] Đồng ý thu thập và sử dụng thông tin cá nhân
+ Indi Straw
+ Đăng nhập QR
+ Hãy xác minh mã QR của bạn.
+ Thời gian hiệu lực của mã QR còn lại
+
+
+ Đạo diễn
+ Đăng ký đạo diễn / diễn viên
+ Thêm đạo diễn
+ Còn lại
+ Đồng ý thông tin cá nhân
+ Chọn từ thư viện
+ Tìm kiếm
+ Phương thức thanh toán
+ Chi tiết thanh toán
+ Thanh toán
+ Tiếp tục
+ Cài đặt tài khoản
+ Bạn chưa có tài khoản?
+ Thông tin tài khoản
+ Số tài khoản
+ Số tiền
+ Hãy đặt số tiền.
+ Đăng ký đạo diễn hiện có
+ Thêm đạo diễn hiện có
+ Đăng ký diễn viên hiện có
+ Thêm diễn viên hiện có
+
+
+ Thời hạn còn lại
+
+
+ Gửi lại
+ Hoàn tất
+ Phim độc lập
+ Tạo phim độc lập
+ Quay lại
+ Đăng ký
+ Số điện thoại chưa được đăng ký.
+
+
+ Đăng xuất
+ Bạn muốn đăng xuất không?
+ Đăng nhập
+ Đăng nhập ngay
+ Chọn loại phần thưởng
+ Thêm phần thưởng
+ Thêm phần thưởng ngay
+ Bạn muốn thêm phần thưởng không?
+
+
+ Ngày kết thúc
+ Quỹ của tôi
+ Xem tất cả phim
+ Tổng số tiền đã thu
+ Số tiền mục tiêu
+ Hãy đặt số tiền mục tiêu.
+ Bạn đang tìm gì?
+
+
+ Diễn viên
+ Thêm diễn viên
+ Thông tin vận chuyển
+ Xác minh số điện thoại
+ Thay đổi
+ Hãy nhập mật khẩu mới.
+ Mật khẩu
+ Thay đổi mật khẩu
+ Tìm mật khẩu
+ Kiểm tra mật khẩu
+ Hãy nhập lại mật khẩu.
+ Mật khẩu không khớp.
+ Hãy nhập mật khẩu.
+ Mật khẩu không hợp lệ.
+
+
+ Hãy nhập số tài khoản bạn muốn sử dụng.
+ Chỉnh sửa hình ảnh
+ Chụp ảnh
+ Địa chỉ chi tiết
+ Hãy nhập địa chỉ chi tiết.
+ Giá sản phẩm
+ Thông tin sản phẩm
+ Đăng ký đạo diễn mới
+ Thêm đạo diễn mới
+ Đăng ký diễn viên mới
+ Thêm diễn viên mới
+ Hãy nhập số điện thoại mới của bạn.
+ Cài đặt
+ Giới thiệu
+ Hãy nhập mô tả giới thiệu của bạn.
+ Số lượng
+ Hãy nhập số lượng.
+ Hãy bao gồm số, chữ hoa, chữ thường và ký tự đặc biệt.
+ Là sản phẩm thật
+ Có phải là phần thưởng vật lý không?
+ Hình thu nhỏ
+
+
+ Tài khoản
+ Tìm tài khoản
+ Hãy nhập tài khoản.
+ Thay đổi ngôn ngữ
+ Phim
+ Hãy đăng ký phim.
+ VNĐ
+ Hãy chọn ngân hàng.
+ Tên
+ Hãy nhập tên.
+ Tài khoản đã được đăng ký.
+ Số điện thoại đã được đăng ký.
+ Tải hình lên
+ Hãy đăng hình ảnh lên.
+ Tiếp tục xem
+ Phổ biến
+ Phim phổ biến tìm kiếm
+ Thẻ phổ biến
+ Số xác minh
+ Xác minh số
+ Số xác minh đã hết hạn.
+ Chưa nhận được số xác minh?
+ Số xác minh không đúng.
+ Hãy nhập số xác minh.
+ Hoàn thành xác minh
+ Xác minh
+
+
+ Xem chi tiết
+ Danh sách dự án
+ Vui lòng thử lại sau.
+ Lưu
+ Xem tất cả >
+ Tất cả phim
+ Tất cả đồng ý
+ Số điện thoại
+ Định dạng số điện thoại không đúng.
+ Hãy nhập số điện thoại.
+ Tiêu đề
+ Hãy nhập tiêu đề.
+ Tài khoản không tồn tại.
+ Kết thúc
+ Địa chỉ
+ Không có địa chỉ.
+ Hãy nhập địa chỉ.
+ Tìm địa chỉ
+ Người dẫn chương trình
+
+
+ Số người tham gia
+ Xem từ đầu
+ Tệp đính kèm
+ Tổng số tiền
+ Thêm hình ảnh
+ Nếu bạn nhập số tiền bổ sung, bạn sẽ được hỗ trợ thêm.
+ Thêm
+ Hỗ trợ bổ sung
+ Dự án tham gia
+ Hủy bỏ
+ Mới nhất
+ Tìm kiếm gần đây
+ Phim đã xem gần đây
+ Vượt quá số lần yêu cầu tối đa. Vui lòng thử lại sau 1 giờ.
+ Vượt quá số lần yêu cầu xác minh tối đa. Vui lòng thử lại sau 1 giờ.
+ Gợi ý
+ Diễn viên
+
+
+ Quyên góp cộng đồng
+ Tạo quyên góp cộng đồng
+ Tham gia quyên góp cộng đồng
+ Đăng ký hình ảnh quyên góp cộng đồng
+ Bạn đã sử dụng quyên góp cộng đồng chưa?
+
+
+ Tệp
+ Vui lòng đính kèm tệp.
+ Thêm tệp
+ Quyên góp
+ Thực hiện quyên góp
+ Thay đổi hình đại diện
+ Hãy chọn hình đại diện.
+
+
+ Nổi bật
+ Đi đến
+ Xác nhận
+ Kiểm tra
+ Tài khoản hiện tại
+ Địa chỉ hiện tại
+ Đăng ký
+ Đăng ký không thành công.
+ Rút khỏi tài khoản
+ Bạn có muốn rút khỏi tài khoản không?
+ Trang chủ
+ Quyên góp
+
\ No newline at end of file
diff --git a/core/design-system/src/main/res/values-zh/strings.xml b/core/design-system/src/main/res/values-zh/strings.xml
index 98743c75..69465774 100644
--- a/core/design-system/src/main/res/values-zh/strings.xml
+++ b/core/design-system/src/main/res/values-zh/strings.xml
@@ -49,6 +49,7 @@
导演
+ "注册导演 / 演员 "
添加导演
剩余个
个人信息同意
@@ -232,4 +233,8 @@
确定要注销会员吗?
首页
捐赠
+ 注册现有董事
+ "注册现有演员 "
+ " 注册新董事"
+ 注册新演员
\ No newline at end of file
diff --git a/core/design-system/src/main/res/values/string.xml b/core/design-system/src/main/res/values/string.xml
index dc1e76b1..f5be3e87 100644
--- a/core/design-system/src/main/res/values/string.xml
+++ b/core/design-system/src/main/res/values/string.xml
@@ -5,6 +5,9 @@
日本語
Español
中国人
+ Deutsch
+ Tiếng Việt
+ Русский
광주
@@ -55,6 +58,7 @@
감독
+ 감독 / 배우 등록하기
감독 추가
개 남음
개인정보 동의
@@ -70,7 +74,9 @@
계좌번호
금액
금액을 설정해주세요.
+ 기존 감독 등록하기
기존 감독 추가하기
+ 기존 배우 등록하기
기존 배우 추가하기
@@ -128,7 +134,9 @@
상세주소를 입력해주세요.
상품가격
상품정보
+ 새로운 감독 등록하기
새로운 감독 추가하기
+ 새로운 배우 등록하기
새로운 배우 추가하기
새로운 전화번호를 입력해주세요.
설정
diff --git a/core/domain/build.gradle.kts b/core/domain/build.gradle.kts
index 37372f67..f0b1adc0 100644
--- a/core/domain/build.gradle.kts
+++ b/core/domain/build.gradle.kts
@@ -7,10 +7,6 @@ android {
}
dependencies {
- implementation(libs.inject)
implementation(libs.coroutines.core)
implementation(libs.paging)
- testImplementation(libs.test.junit)
- testImplementation(libs.test.mockito.kotlin)
- testImplementation(libs.test.mockito.inline)
}
\ No newline at end of file
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/banner/BannerEntity.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/banner/BannerEntity.kt
index 525101ee..0ee99a65 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/banner/BannerEntity.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/banner/BannerEntity.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.entity.banner
+package com.danbam.indistraw.core.domain.entity.banner
data class BannerEntity(
val thumbnailUrl: String,
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/file/FileEntity.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/file/FileEntity.kt
index 0346c27b..0eaec42a 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/file/FileEntity.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/file/FileEntity.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.entity.file
+package com.danbam.indistraw.core.domain.entity.file
data class FileEntity(
val file: String,
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/funding/FundingDetailEntity.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/funding/FundingDetailEntity.kt
index 937f4bb5..a2898b1b 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/funding/FundingDetailEntity.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/funding/FundingDetailEntity.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.entity.funding
+package com.danbam.indistraw.core.domain.entity.funding
import java.util.UUID
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/funding/FundingEntity.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/funding/FundingEntity.kt
index 44ce8faa..6d1897e5 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/funding/FundingEntity.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/funding/FundingEntity.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.entity.funding
+package com.danbam.indistraw.core.domain.entity.funding
data class FundingEntity(
val idx: Long,
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/funding/MyFundingEntity.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/funding/MyFundingEntity.kt
index 36042ca6..088be7b2 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/funding/MyFundingEntity.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/funding/MyFundingEntity.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.entity.funding
+package com.danbam.indistraw.core.domain.entity.funding
import java.util.UUID
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/movie/DetailMovieHistoryEntity.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/movie/DetailMovieHistoryEntity.kt
index ad4faaa5..54b855a9 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/movie/DetailMovieHistoryEntity.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/movie/DetailMovieHistoryEntity.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.entity.movie
+package com.danbam.indistraw.core.domain.entity.movie
data class DetailMovieHistoryEntity(
val historyTime: Float,
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/movie/MovieDetailEntity.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/movie/MovieDetailEntity.kt
index 86efd84f..c40c6b5b 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/movie/MovieDetailEntity.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/movie/MovieDetailEntity.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.entity.movie
+package com.danbam.indistraw.core.domain.entity.movie
data class MovieDetailEntity(
val title: String,
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/movie/MovieEntity.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/movie/MovieEntity.kt
index d446dc41..ae7e1d2b 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/movie/MovieEntity.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/movie/MovieEntity.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.entity.movie
+package com.danbam.indistraw.core.domain.entity.movie
data class MovieEntity(
val movieIdx: Long,
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/movie/MovieHistoryEntity.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/movie/MovieHistoryEntity.kt
index e707e513..2139c1b8 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/movie/MovieHistoryEntity.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/movie/MovieHistoryEntity.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.entity.movie
+package com.danbam.indistraw.core.domain.entity.movie
data class MovieHistoryEntity(
val movieIdx: Long,
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/movie/MoviePeopleDetailEntity.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/movie/MoviePeopleDetailEntity.kt
index cea169e6..8c9e4200 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/movie/MoviePeopleDetailEntity.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/movie/MoviePeopleDetailEntity.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.entity.movie
+package com.danbam.indistraw.core.domain.entity.movie
data class MoviePeopleDetailEntity(
val actorIdx: Long,
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/movie/MoviePeopleEntity.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/movie/MoviePeopleEntity.kt
index a581737a..df37b6fa 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/movie/MoviePeopleEntity.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/movie/MoviePeopleEntity.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.entity.movie
+package com.danbam.indistraw.core.domain.entity.movie
data class MoviePeopleEntity(
val actorIdx: Long,
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/search/RecentSearchEntity.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/search/RecentSearchEntity.kt
index 7691473b..9a6d61a3 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/search/RecentSearchEntity.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/entity/search/RecentSearchEntity.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.entity.search
+package com.danbam.indistraw.core.domain.entity.search
data class RecentSearchEntity(
val search: String,
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/auth/ChangeAddressParam.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/auth/ChangeAddressParam.kt
index 073bfded..3c462b99 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/auth/ChangeAddressParam.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/auth/ChangeAddressParam.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.param.auth
+package com.danbam.indistraw.core.domain.param.auth
data class ChangeAddressParam(
val zipCode: String,
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/auth/ChangePasswordParam.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/auth/ChangePasswordParam.kt
index 3b86f876..8379e895 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/auth/ChangePasswordParam.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/auth/ChangePasswordParam.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.param.auth
+package com.danbam.indistraw.core.domain.param.auth
data class ChangePasswordParam(
val phoneNumber: String,
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/auth/EditProfileParam.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/auth/EditProfileParam.kt
index fd78a1c2..ffc41f43 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/auth/EditProfileParam.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/auth/EditProfileParam.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.param.auth
+package com.danbam.indistraw.core.domain.param.auth
data class EditProfileParam(
val name: String,
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/auth/LoginParam.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/auth/LoginParam.kt
index 20222e8d..2ea30821 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/auth/LoginParam.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/auth/LoginParam.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.param.auth
+package com.danbam.indistraw.core.domain.param.auth
data class LoginParam(
val id: String,
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/auth/SignUpParam.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/auth/SignUpParam.kt
index 3672f89c..412eaa46 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/auth/SignUpParam.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/auth/SignUpParam.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.param.auth
+package com.danbam.indistraw.core.domain.param.auth
data class SignUpParam(
val id: String,
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/funding/FundingCreateParam.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/funding/FundingCreateParam.kt
index 0cb061a3..2dc80cc9 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/funding/FundingCreateParam.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/funding/FundingCreateParam.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.param.funding
+package com.danbam.indistraw.core.domain.param.funding
data class FundingCreateParam(
val title: String,
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/funding/FundingParam.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/funding/FundingParam.kt
index 9be72d3b..5f026524 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/funding/FundingParam.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/funding/FundingParam.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.param.funding
+package com.danbam.indistraw.core.domain.param.funding
data class FundingParam(
val receiptId: String,
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/movie/MovieCreateParam.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/movie/MovieCreateParam.kt
index 221d7cd6..014f8da1 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/movie/MovieCreateParam.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/movie/MovieCreateParam.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.param.movie
+package com.danbam.indistraw.core.domain.param.movie
data class MovieCreateParam(
val title: String,
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/movie/MovieHistoryParam.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/movie/MovieHistoryParam.kt
index 775777d6..030f1b27 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/movie/MovieHistoryParam.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/movie/MovieHistoryParam.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.param.movie
+package com.danbam.indistraw.core.domain.param.movie
data class MovieHistoryParam(
val movieIdx: Long,
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/movie/MoviePeopleParam.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/movie/MoviePeopleParam.kt
index e8d56610..1cb83e91 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/movie/MoviePeopleParam.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/param/movie/MoviePeopleParam.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.param.movie
+package com.danbam.indistraw.core.domain.param.movie
data class MoviePeopleParam(
val name: String,
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/repository/AccountRepository.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/repository/AccountRepository.kt
index 723848e5..3e086a73 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/repository/AccountRepository.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/repository/AccountRepository.kt
@@ -2,9 +2,9 @@ package com.danbam.indistraw.core.domain.repository
import com.danbam.indistraw.core.domain.entity.auth.FindIdEntity
import com.danbam.indistraw.core.domain.entity.auth.ProfileEntity
-import com.danbam.indistraw.core.param.auth.ChangeAddressParam
-import com.danbam.indistraw.core.param.auth.ChangePasswordParam
-import com.danbam.indistraw.core.param.auth.EditProfileParam
+import com.danbam.indistraw.core.domain.param.auth.ChangeAddressParam
+import com.danbam.indistraw.core.domain.param.auth.ChangePasswordParam
+import com.danbam.indistraw.core.domain.param.auth.EditProfileParam
interface AccountRepository {
suspend fun findId(phoneNumber: String): FindIdEntity
@@ -13,5 +13,6 @@ interface AccountRepository {
suspend fun changePhoneNumber(phoneNumber: String)
suspend fun changeAddress(changeAddressParam: ChangeAddressParam)
suspend fun editProfile(editProfileParam: EditProfileParam)
+ suspend fun enrollMoviePeople(peopleType: String, actorIdx: Long)
suspend fun withdraw()
}
\ No newline at end of file
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/repository/AuthRepository.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/repository/AuthRepository.kt
index 21a128c5..846c72f6 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/repository/AuthRepository.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/repository/AuthRepository.kt
@@ -1,7 +1,7 @@
package com.danbam.indistraw.core.domain.repository
-import com.danbam.indistraw.core.param.auth.LoginParam
-import com.danbam.indistraw.core.param.auth.SignUpParam
+import com.danbam.indistraw.core.domain.param.auth.LoginParam
+import com.danbam.indistraw.core.domain.param.auth.SignUpParam
interface AuthRepository {
suspend fun signup(signUpParam: SignUpParam)
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/repository/BannerRepository.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/repository/BannerRepository.kt
index 3a9b7275..198c44d7 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/repository/BannerRepository.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/repository/BannerRepository.kt
@@ -1,6 +1,6 @@
package com.danbam.indistraw.core.domain.repository
-import com.danbam.indistraw.core.entity.banner.BannerEntity
+import com.danbam.indistraw.core.domain.entity.banner.BannerEntity
interface BannerRepository {
suspend fun getBanner(): List
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/repository/CrowdFundingRepository.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/repository/CrowdFundingRepository.kt
index 562213b2..201c7972 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/repository/CrowdFundingRepository.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/repository/CrowdFundingRepository.kt
@@ -1,10 +1,10 @@
package com.danbam.indistraw.core.domain.repository
import androidx.paging.PagingData
-import com.danbam.indistraw.core.entity.funding.FundingDetailEntity
-import com.danbam.indistraw.core.entity.funding.FundingEntity
-import com.danbam.indistraw.core.entity.funding.MyFundingEntity
-import com.danbam.indistraw.core.param.funding.FundingCreateParam
+import com.danbam.indistraw.core.domain.entity.funding.FundingDetailEntity
+import com.danbam.indistraw.core.domain.entity.funding.FundingEntity
+import com.danbam.indistraw.core.domain.entity.funding.MyFundingEntity
+import com.danbam.indistraw.core.domain.param.funding.FundingCreateParam
import kotlinx.coroutines.flow.Flow
interface CrowdFundingRepository {
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/repository/FileRepository.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/repository/FileRepository.kt
index 9cdfa455..61c047db 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/repository/FileRepository.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/repository/FileRepository.kt
@@ -1,6 +1,6 @@
package com.danbam.indistraw.core.domain.repository
-import com.danbam.indistraw.core.entity.file.FileEntity
+import com.danbam.indistraw.core.domain.entity.file.FileEntity
import java.io.File
interface FileRepository {
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/repository/FundingRepository.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/repository/FundingRepository.kt
index 44f7e5a1..6d5cd061 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/repository/FundingRepository.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/repository/FundingRepository.kt
@@ -1,7 +1,7 @@
package com.danbam.indistraw.core.domain.repository
-import com.danbam.indistraw.core.entity.funding.FundingEntity
-import com.danbam.indistraw.core.param.funding.FundingParam
+import com.danbam.indistraw.core.domain.entity.funding.FundingEntity
+import com.danbam.indistraw.core.domain.param.funding.FundingParam
interface FundingRepository {
suspend fun getReceipt(): String
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/repository/MovieRepository.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/repository/MovieRepository.kt
index 73a5c058..1cc149dd 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/repository/MovieRepository.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/repository/MovieRepository.kt
@@ -1,28 +1,29 @@
package com.danbam.indistraw.core.domain.repository
import androidx.paging.PagingData
-import com.danbam.indistraw.core.entity.movie.DetailMovieHistoryEntity
-import com.danbam.indistraw.core.entity.movie.MovieDetailEntity
-import com.danbam.indistraw.core.entity.movie.MovieEntity
-import com.danbam.indistraw.core.entity.movie.MovieHistoryEntity
-import com.danbam.indistraw.core.entity.movie.MoviePeopleDetailEntity
-import com.danbam.indistraw.core.entity.movie.MoviePeopleEntity
-import com.danbam.indistraw.core.param.movie.MovieCreateParam
-import com.danbam.indistraw.core.param.movie.MovieHistoryParam
-import com.danbam.indistraw.core.param.movie.MoviePeopleParam
+import com.danbam.indistraw.core.domain.entity.movie.DetailMovieHistoryEntity
+import com.danbam.indistraw.core.domain.entity.movie.MovieDetailEntity
+import com.danbam.indistraw.core.domain.entity.movie.MovieEntity
+import com.danbam.indistraw.core.domain.entity.movie.MovieHistoryEntity
+import com.danbam.indistraw.core.domain.entity.movie.MoviePeopleDetailEntity
+import com.danbam.indistraw.core.domain.entity.movie.MoviePeopleEntity
+import com.danbam.indistraw.core.domain.param.movie.MovieCreateParam
+import com.danbam.indistraw.core.domain.param.movie.MovieHistoryParam
+import com.danbam.indistraw.core.domain.param.movie.MoviePeopleParam
import kotlinx.coroutines.flow.Flow
interface MovieRepository {
suspend fun movieCreate(movieCreateParam: MovieCreateParam)
suspend fun movieList(genre: String? = null): Flow>
suspend fun movieDetail(movieIdx: Long): MovieDetailEntity
- suspend fun searchMoviePeople(actorType: String, name: String): List
- suspend fun addMoviePeople(actorType: String, moviePeopleParam: MoviePeopleParam): Long
- suspend fun moviePeopleDetail(actorType: String, actorIdx: Long): MoviePeopleDetailEntity
+ suspend fun searchMoviePeople(peopleType: String, name: String): List
+ suspend fun addMoviePeople(peopleType: String, moviePeopleParam: MoviePeopleParam): Long
+ suspend fun moviePeopleDetail(peopleType: String, actorIdx: Long): MoviePeopleDetailEntity
suspend fun movieRecentList(): List
suspend fun moviePopularList(): List
suspend fun movieRecommendList(): List
suspend fun movieHistoryList(): List
suspend fun addMovieHistory(movieHistoryParam: MovieHistoryParam)
suspend fun movieHistory(movieIdx: Long): DetailMovieHistoryEntity
+ suspend fun movieFilmography(): List
}
\ No newline at end of file
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/repository/SearchRepository.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/repository/SearchRepository.kt
index 70ccaa56..3a4d7f64 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/repository/SearchRepository.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/repository/SearchRepository.kt
@@ -1,9 +1,9 @@
package com.danbam.indistraw.core.domain.repository
import androidx.paging.PagingData
-import com.danbam.indistraw.core.entity.funding.FundingEntity
-import com.danbam.indistraw.core.entity.movie.MovieEntity
-import com.danbam.indistraw.core.entity.search.RecentSearchEntity
+import com.danbam.indistraw.core.domain.entity.funding.FundingEntity
+import com.danbam.indistraw.core.domain.entity.movie.MovieEntity
+import com.danbam.indistraw.core.domain.entity.search.RecentSearchEntity
import kotlinx.coroutines.flow.Flow
interface SearchRepository {
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/account/ChangeAddressUseCase.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/account/ChangeAddressUseCase.kt
index f421f3e6..1cc4835c 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/account/ChangeAddressUseCase.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/account/ChangeAddressUseCase.kt
@@ -1,6 +1,6 @@
package com.danbam.indistraw.core.domain.usecase.account
-import com.danbam.indistraw.core.param.auth.ChangeAddressParam
+import com.danbam.indistraw.core.domain.param.auth.ChangeAddressParam
import com.danbam.indistraw.core.domain.repository.AccountRepository
import javax.inject.Inject
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/account/ChangePasswordUseCase.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/account/ChangePasswordUseCase.kt
index 1418cf8c..dbdfbf89 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/account/ChangePasswordUseCase.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/account/ChangePasswordUseCase.kt
@@ -1,6 +1,6 @@
package com.danbam.indistraw.core.domain.usecase.account
-import com.danbam.indistraw.core.param.auth.ChangePasswordParam
+import com.danbam.indistraw.core.domain.param.auth.ChangePasswordParam
import com.danbam.indistraw.core.domain.repository.AccountRepository
import javax.inject.Inject
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/account/EditProfileUseCase.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/account/EditProfileUseCase.kt
index 714ae870..798f8b1e 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/account/EditProfileUseCase.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/account/EditProfileUseCase.kt
@@ -1,6 +1,6 @@
package com.danbam.indistraw.core.domain.usecase.account
-import com.danbam.indistraw.core.param.auth.EditProfileParam
+import com.danbam.indistraw.core.domain.param.auth.EditProfileParam
import com.danbam.indistraw.core.domain.repository.AccountRepository
import javax.inject.Inject
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/account/EnrollMoviePeopleUseCase.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/account/EnrollMoviePeopleUseCase.kt
new file mode 100644
index 00000000..7b129b3b
--- /dev/null
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/account/EnrollMoviePeopleUseCase.kt
@@ -0,0 +1,12 @@
+package com.danbam.indistraw.core.domain.usecase.account
+
+import com.danbam.indistraw.core.domain.repository.AccountRepository
+import javax.inject.Inject
+
+class EnrollMoviePeopleUseCase @Inject constructor(
+ private val accountRepository: AccountRepository
+) {
+ suspend operator fun invoke(peopleType: String, actorIdx: Long) = runCatching {
+ accountRepository.enrollMoviePeople(peopleType = peopleType, actorIdx = actorIdx)
+ }
+}
\ No newline at end of file
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/auth/LoginUseCase.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/auth/LoginUseCase.kt
index 18ca5a90..5958897a 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/auth/LoginUseCase.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/auth/LoginUseCase.kt
@@ -1,6 +1,6 @@
package com.danbam.indistraw.core.domain.usecase.auth
-import com.danbam.indistraw.core.param.auth.LoginParam
+import com.danbam.indistraw.core.domain.param.auth.LoginParam
import com.danbam.indistraw.core.domain.repository.AuthRepository
import javax.inject.Inject
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/auth/SignUpUseCase.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/auth/SignUpUseCase.kt
index 7e40741c..f3294004 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/auth/SignUpUseCase.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/auth/SignUpUseCase.kt
@@ -1,6 +1,6 @@
package com.danbam.indistraw.core.domain.usecase.auth
-import com.danbam.indistraw.core.param.auth.SignUpParam
+import com.danbam.indistraw.core.domain.param.auth.SignUpParam
import com.danbam.indistraw.core.domain.repository.AuthRepository
import javax.inject.Inject
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/crowd_funding/FundingCreateUseCase.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/crowd_funding/FundingCreateUseCase.kt
index ddfc03d8..e54e0489 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/crowd_funding/FundingCreateUseCase.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/crowd_funding/FundingCreateUseCase.kt
@@ -1,6 +1,6 @@
package com.danbam.indistraw.core.domain.usecase.crowd_funding
-import com.danbam.indistraw.core.param.funding.FundingCreateParam
+import com.danbam.indistraw.core.domain.param.funding.FundingCreateParam
import com.danbam.indistraw.core.domain.repository.CrowdFundingRepository
import javax.inject.Inject
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/funding/FundingUseCase.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/funding/FundingUseCase.kt
index 529a5eba..73d1b911 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/funding/FundingUseCase.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/funding/FundingUseCase.kt
@@ -1,6 +1,6 @@
package com.danbam.indistraw.core.domain.usecase.funding
-import com.danbam.indistraw.core.param.funding.FundingParam
+import com.danbam.indistraw.core.domain.param.funding.FundingParam
import com.danbam.indistraw.core.domain.repository.FundingRepository
import javax.inject.Inject
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/movie/AddMovieHistoryUseCase.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/movie/AddMovieHistoryUseCase.kt
index 18755fd9..fc6912ff 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/movie/AddMovieHistoryUseCase.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/movie/AddMovieHistoryUseCase.kt
@@ -1,6 +1,6 @@
package com.danbam.indistraw.core.domain.usecase.movie
-import com.danbam.indistraw.core.param.movie.MovieHistoryParam
+import com.danbam.indistraw.core.domain.param.movie.MovieHistoryParam
import com.danbam.indistraw.core.domain.repository.MovieRepository
import javax.inject.Inject
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/movie/AddMoviePeopleUseCase.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/movie/AddMoviePeopleUseCase.kt
index de0c7ea7..2f798624 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/movie/AddMoviePeopleUseCase.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/movie/AddMoviePeopleUseCase.kt
@@ -1,16 +1,16 @@
package com.danbam.indistraw.core.domain.usecase.movie
-import com.danbam.indistraw.core.param.movie.MoviePeopleParam
+import com.danbam.indistraw.core.domain.param.movie.MoviePeopleParam
import com.danbam.indistraw.core.domain.repository.MovieRepository
import javax.inject.Inject
class AddMoviePeopleUseCase @Inject constructor(
private val movieRepository: MovieRepository
) {
- suspend operator fun invoke(actorType: String, moviePeopleParam: MoviePeopleParam) =
+ suspend operator fun invoke(peopleType: String, moviePeopleParam: MoviePeopleParam) =
runCatching {
movieRepository.addMoviePeople(
- actorType = actorType,
+ peopleType = peopleType,
moviePeopleParam = moviePeopleParam
)
}
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/movie/MovieCreateUseCase.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/movie/MovieCreateUseCase.kt
index 16275d5b..c40e3bf7 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/movie/MovieCreateUseCase.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/movie/MovieCreateUseCase.kt
@@ -1,6 +1,6 @@
package com.danbam.indistraw.core.domain.usecase.movie
-import com.danbam.indistraw.core.param.movie.MovieCreateParam
+import com.danbam.indistraw.core.domain.param.movie.MovieCreateParam
import com.danbam.indistraw.core.domain.repository.MovieRepository
import javax.inject.Inject
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/movie/MovieFilmographyUseCase.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/movie/MovieFilmographyUseCase.kt
new file mode 100644
index 00000000..3a2d9a1e
--- /dev/null
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/movie/MovieFilmographyUseCase.kt
@@ -0,0 +1,12 @@
+package com.danbam.indistraw.core.domain.usecase.movie
+
+import com.danbam.indistraw.core.domain.repository.MovieRepository
+import javax.inject.Inject
+
+class MovieFilmographyUseCase @Inject constructor(
+ private val movieRepository: MovieRepository
+) {
+ suspend operator fun invoke() = runCatching {
+ movieRepository.movieFilmography()
+ }
+}
\ No newline at end of file
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/movie/MoviePeopleDetailUseCase.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/movie/MoviePeopleDetailUseCase.kt
index 747f6f5d..c08f4516 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/movie/MoviePeopleDetailUseCase.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/movie/MoviePeopleDetailUseCase.kt
@@ -6,7 +6,7 @@ import javax.inject.Inject
class MoviePeopleDetailUseCase @Inject constructor(
private val movieRepository: MovieRepository
) {
- suspend operator fun invoke(actorType: String, actorIdx: Long) = runCatching {
- movieRepository.moviePeopleDetail(actorType = actorType, actorIdx = actorIdx)
+ suspend operator fun invoke(peopleType: String, actorIdx: Long) = runCatching {
+ movieRepository.moviePeopleDetail(peopleType = peopleType, actorIdx = actorIdx)
}
}
\ No newline at end of file
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/movie/SearchMoviePeopleUseCase.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/movie/SearchMoviePeopleUseCase.kt
index b8bfa346..ccf1355d 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/movie/SearchMoviePeopleUseCase.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/movie/SearchMoviePeopleUseCase.kt
@@ -6,7 +6,7 @@ import javax.inject.Inject
class SearchMoviePeopleUseCase @Inject constructor(
private val movieRepository: MovieRepository
) {
- suspend operator fun invoke(actorType: String, name: String) = runCatching {
- movieRepository.searchMoviePeople(actorType = actorType, name = name)
+ suspend operator fun invoke(peopleType: String, name: String) = runCatching {
+ movieRepository.searchMoviePeople(peopleType = peopleType, name = name)
}
}
\ No newline at end of file
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/search/SearchFundingUseCase.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/search/SearchFundingUseCase.kt
index a9639286..35b880ca 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/search/SearchFundingUseCase.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/search/SearchFundingUseCase.kt
@@ -1,6 +1,6 @@
package com.danbam.indistraw.core.domain.usecase.search
-import com.danbam.indistraw.core.entity.search.RecentSearchEntity
+import com.danbam.indistraw.core.domain.entity.search.RecentSearchEntity
import com.danbam.indistraw.core.domain.repository.SearchRepository
import javax.inject.Inject
diff --git a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/search/SearchMovieUseCase.kt b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/search/SearchMovieUseCase.kt
index a89003e4..7e8dca81 100644
--- a/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/search/SearchMovieUseCase.kt
+++ b/core/domain/src/main/kotlin/com/danbam/indistraw/core/domain/usecase/search/SearchMovieUseCase.kt
@@ -1,6 +1,6 @@
package com.danbam.indistraw.core.domain.usecase.search
-import com.danbam.indistraw.core.entity.search.RecentSearchEntity
+import com.danbam.indistraw.core.domain.entity.search.RecentSearchEntity
import com.danbam.indistraw.core.domain.repository.SearchRepository
import javax.inject.Inject
diff --git a/core/di/.gitignore b/core/local/.gitignore
similarity index 100%
rename from core/di/.gitignore
rename to core/local/.gitignore
diff --git a/core/local/build.gradle.kts b/core/local/build.gradle.kts
new file mode 100644
index 00000000..95112ffa
--- /dev/null
+++ b/core/local/build.gradle.kts
@@ -0,0 +1,14 @@
+plugins {
+ id("indistraw-core")
+}
+
+android {
+ namespace = "com.danbam.indistraw.core.local"
+}
+
+dependencies {
+ implementation(project(":core:domain"))
+ implementation(libs.androidx.preference)
+ implementation(libs.room)
+ ksp(libs.room.compiler)
+}
\ No newline at end of file
diff --git a/core/di/src/main/AndroidManifest.xml b/core/local/src/main/AndroidManifest.xml
similarity index 100%
rename from core/di/src/main/AndroidManifest.xml
rename to core/local/src/main/AndroidManifest.xml
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/dao/RecentSearchDAO.kt b/core/local/src/main/kotlin/com/danbam/indistraw/core/local/dao/RecentSearchDAO.kt
similarity index 74%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/dao/RecentSearchDAO.kt
rename to core/local/src/main/kotlin/com/danbam/indistraw/core/local/dao/RecentSearchDAO.kt
index 7f3048b5..929e34a0 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/dao/RecentSearchDAO.kt
+++ b/core/local/src/main/kotlin/com/danbam/indistraw/core/local/dao/RecentSearchDAO.kt
@@ -1,12 +1,12 @@
-package com.danbam.indistraw.core.data.local.dao
+package com.danbam.indistraw.core.local.dao
import androidx.room.Dao
import androidx.room.Delete
import androidx.room.Insert
-import androidx.room.OnConflictStrategy.REPLACE
+import androidx.room.OnConflictStrategy.Companion.REPLACE
import androidx.room.Query
import androidx.room.Transaction
-import com.danbam.indistraw.core.data.local.entity.search.RecentSearchEntity
+import com.danbam.indistraw.core.local.search.RecentSearchEntity
@Dao
interface RecentSearchDao {
diff --git a/core/local/src/main/kotlin/com/danbam/indistraw/core/local/database/IndiStrawDataBase.kt b/core/local/src/main/kotlin/com/danbam/indistraw/core/local/database/IndiStrawDataBase.kt
new file mode 100644
index 00000000..7c04f7eb
--- /dev/null
+++ b/core/local/src/main/kotlin/com/danbam/indistraw/core/local/database/IndiStrawDataBase.kt
@@ -0,0 +1,11 @@
+package com.danbam.indistraw.core.local.database
+
+import androidx.room.Database
+import androidx.room.RoomDatabase
+import com.danbam.indistraw.core.local.dao.RecentSearchDao
+import com.danbam.indistraw.core.local.search.RecentSearchEntity
+
+@Database(entities = [RecentSearchEntity::class], version = 1, exportSchema = false)
+abstract class IndiStrawDataBase : RoomDatabase() {
+ abstract fun resentSearchDao(): RecentSearchDao
+}
\ No newline at end of file
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/datasource/AuthLocalDataSource.kt b/core/local/src/main/kotlin/com/danbam/indistraw/core/local/datasource/AuthLocalDataSource.kt
similarity index 90%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/datasource/AuthLocalDataSource.kt
rename to core/local/src/main/kotlin/com/danbam/indistraw/core/local/datasource/AuthLocalDataSource.kt
index fd356539..8d096f3d 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/datasource/AuthLocalDataSource.kt
+++ b/core/local/src/main/kotlin/com/danbam/indistraw/core/local/datasource/AuthLocalDataSource.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.data.local.datasource
+package com.danbam.indistraw.core.local.datasource
import java.time.LocalDateTime
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/datasource/AuthLocalDataSourceImpl.kt b/core/local/src/main/kotlin/com/danbam/indistraw/core/local/datasource/AuthLocalDataSourceImpl.kt
similarity index 93%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/datasource/AuthLocalDataSourceImpl.kt
rename to core/local/src/main/kotlin/com/danbam/indistraw/core/local/datasource/AuthLocalDataSourceImpl.kt
index 61a683e4..05eace2b 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/datasource/AuthLocalDataSourceImpl.kt
+++ b/core/local/src/main/kotlin/com/danbam/indistraw/core/local/datasource/AuthLocalDataSourceImpl.kt
@@ -1,6 +1,6 @@
-package com.danbam.indistraw.core.data.local.datasource
+package com.danbam.indistraw.core.local.datasource
-import com.danbam.indistraw.core.data.local.preference.AuthPreference
+import com.danbam.indistraw.core.local.preference.AuthPreference
import java.time.LocalDateTime
import java.time.format.DateTimeFormatter
import javax.inject.Inject
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/datasource/SearchLocalDataSource.kt b/core/local/src/main/kotlin/com/danbam/indistraw/core/local/datasource/SearchLocalDataSource.kt
similarity index 63%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/datasource/SearchLocalDataSource.kt
rename to core/local/src/main/kotlin/com/danbam/indistraw/core/local/datasource/SearchLocalDataSource.kt
index a6867130..0cc53e2d 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/datasource/SearchLocalDataSource.kt
+++ b/core/local/src/main/kotlin/com/danbam/indistraw/core/local/datasource/SearchLocalDataSource.kt
@@ -1,6 +1,6 @@
-package com.danbam.indistraw.core.data.local.datasource
+package com.danbam.indistraw.core.local.datasource
-import com.danbam.indistraw.core.data.local.entity.search.RecentSearchEntity
+import com.danbam.indistraw.core.local.search.RecentSearchEntity
interface SearchLocalDataSource {
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/datasource/SearchLocalDataSourceImpl.kt b/core/local/src/main/kotlin/com/danbam/indistraw/core/local/datasource/SearchLocalDataSourceImpl.kt
similarity index 74%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/datasource/SearchLocalDataSourceImpl.kt
rename to core/local/src/main/kotlin/com/danbam/indistraw/core/local/datasource/SearchLocalDataSourceImpl.kt
index 3efb68a9..f926605a 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/datasource/SearchLocalDataSourceImpl.kt
+++ b/core/local/src/main/kotlin/com/danbam/indistraw/core/local/datasource/SearchLocalDataSourceImpl.kt
@@ -1,7 +1,7 @@
-package com.danbam.indistraw.core.data.local.datasource
+package com.danbam.indistraw.core.local.datasource
-import com.danbam.indistraw.core.data.local.dao.RecentSearchDao
-import com.danbam.indistraw.core.data.local.entity.search.RecentSearchEntity
+import com.danbam.indistraw.core.local.dao.RecentSearchDao
+import com.danbam.indistraw.core.local.search.RecentSearchEntity
import javax.inject.Inject
class SearchLocalDataSourceImpl @Inject constructor(
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/datasource/SystemLocalDataSource.kt b/core/local/src/main/kotlin/com/danbam/indistraw/core/local/datasource/SystemLocalDataSource.kt
similarity index 68%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/datasource/SystemLocalDataSource.kt
rename to core/local/src/main/kotlin/com/danbam/indistraw/core/local/datasource/SystemLocalDataSource.kt
index d7dcdbf4..aa19c239 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/datasource/SystemLocalDataSource.kt
+++ b/core/local/src/main/kotlin/com/danbam/indistraw/core/local/datasource/SystemLocalDataSource.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.data.local.datasource
+package com.danbam.indistraw.core.local.datasource
interface SystemLocalDataSource {
suspend fun saveLanguage(language: String)
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/datasource/SystemLocalDataSourceImpl.kt b/core/local/src/main/kotlin/com/danbam/indistraw/core/local/datasource/SystemLocalDataSourceImpl.kt
similarity index 73%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/datasource/SystemLocalDataSourceImpl.kt
rename to core/local/src/main/kotlin/com/danbam/indistraw/core/local/datasource/SystemLocalDataSourceImpl.kt
index caa81d8c..50b326ef 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/datasource/SystemLocalDataSourceImpl.kt
+++ b/core/local/src/main/kotlin/com/danbam/indistraw/core/local/datasource/SystemLocalDataSourceImpl.kt
@@ -1,6 +1,6 @@
-package com.danbam.indistraw.core.data.local.datasource
+package com.danbam.indistraw.core.local.datasource
-import com.danbam.indistraw.core.data.local.preference.SystemPreference
+import com.danbam.indistraw.core.local.preference.SystemPreference
import javax.inject.Inject
class SystemLocalDataSourceImpl @Inject constructor(
diff --git a/core/di/src/main/kotlin/com/danbam/indistraw/core/di/LocalDataSourceModule.kt b/core/local/src/main/kotlin/com/danbam/indistraw/core/local/di/LocalDataSourceModule.kt
similarity index 55%
rename from core/di/src/main/kotlin/com/danbam/indistraw/core/di/LocalDataSourceModule.kt
rename to core/local/src/main/kotlin/com/danbam/indistraw/core/local/di/LocalDataSourceModule.kt
index dc4f2e89..f6469477 100644
--- a/core/di/src/main/kotlin/com/danbam/indistraw/core/di/LocalDataSourceModule.kt
+++ b/core/local/src/main/kotlin/com/danbam/indistraw/core/local/di/LocalDataSourceModule.kt
@@ -1,11 +1,11 @@
-package com.danbam.indistraw.core.di
+package com.danbam.indistraw.core.local.di
-import com.danbam.indistraw.core.data.local.datasource.AuthLocalDataSource
-import com.danbam.indistraw.core.data.local.datasource.AuthLocalDataSourceImpl
-import com.danbam.indistraw.core.data.local.datasource.SearchLocalDataSource
-import com.danbam.indistraw.core.data.local.datasource.SearchLocalDataSourceImpl
-import com.danbam.indistraw.core.data.local.datasource.SystemLocalDataSource
-import com.danbam.indistraw.core.data.local.datasource.SystemLocalDataSourceImpl
+import com.danbam.indistraw.core.local.datasource.AuthLocalDataSource
+import com.danbam.indistraw.core.local.datasource.AuthLocalDataSourceImpl
+import com.danbam.indistraw.core.local.datasource.SearchLocalDataSource
+import com.danbam.indistraw.core.local.datasource.SearchLocalDataSourceImpl
+import com.danbam.indistraw.core.local.datasource.SystemLocalDataSource
+import com.danbam.indistraw.core.local.datasource.SystemLocalDataSourceImpl
import dagger.Binds
import dagger.Module
import dagger.hilt.InstallIn
diff --git a/core/di/src/main/kotlin/com/danbam/indistraw/core/di/LocalModule.kt b/core/local/src/main/kotlin/com/danbam/indistraw/core/local/di/LocalModule.kt
similarity index 92%
rename from core/di/src/main/kotlin/com/danbam/indistraw/core/di/LocalModule.kt
rename to core/local/src/main/kotlin/com/danbam/indistraw/core/local/di/LocalModule.kt
index 81b06397..800d650a 100644
--- a/core/di/src/main/kotlin/com/danbam/indistraw/core/di/LocalModule.kt
+++ b/core/local/src/main/kotlin/com/danbam/indistraw/core/local/di/LocalModule.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.di
+package com.danbam.indistraw.core.local.di
import android.content.Context
import android.content.SharedPreferences
diff --git a/core/di/src/main/kotlin/com/danbam/indistraw/core/di/PreferenceModule.kt b/core/local/src/main/kotlin/com/danbam/indistraw/core/local/di/PreferenceModule.kt
similarity index 57%
rename from core/di/src/main/kotlin/com/danbam/indistraw/core/di/PreferenceModule.kt
rename to core/local/src/main/kotlin/com/danbam/indistraw/core/local/di/PreferenceModule.kt
index b4c16c09..3c7c3308 100644
--- a/core/di/src/main/kotlin/com/danbam/indistraw/core/di/PreferenceModule.kt
+++ b/core/local/src/main/kotlin/com/danbam/indistraw/core/local/di/PreferenceModule.kt
@@ -1,9 +1,9 @@
-package com.danbam.indistraw.core.di
+package com.danbam.indistraw.core.local.di
-import com.danbam.indistraw.core.data.local.preference.AuthPreference
-import com.danbam.indistraw.core.data.local.preference.AuthPreferenceImpl
-import com.danbam.indistraw.core.data.local.preference.SystemPreference
-import com.danbam.indistraw.core.data.local.preference.SystemPreferenceImpl
+import com.danbam.indistraw.core.local.preference.AuthPreference
+import com.danbam.indistraw.core.local.preference.AuthPreferenceImpl
+import com.danbam.indistraw.core.local.preference.SystemPreference
+import com.danbam.indistraw.core.local.preference.SystemPreferenceImpl
import dagger.Binds
import dagger.Module
import dagger.hilt.InstallIn
diff --git a/core/di/src/main/kotlin/com/danbam/indistraw/core/di/RoomModule.kt b/core/local/src/main/kotlin/com/danbam/indistraw/core/local/di/RoomModule.kt
similarity index 80%
rename from core/di/src/main/kotlin/com/danbam/indistraw/core/di/RoomModule.kt
rename to core/local/src/main/kotlin/com/danbam/indistraw/core/local/di/RoomModule.kt
index 839cbaf5..02490ac6 100644
--- a/core/di/src/main/kotlin/com/danbam/indistraw/core/di/RoomModule.kt
+++ b/core/local/src/main/kotlin/com/danbam/indistraw/core/local/di/RoomModule.kt
@@ -1,9 +1,9 @@
-package com.danbam.indistraw.core.di
+package com.danbam.indistraw.core.local.di
import android.content.Context
import androidx.room.Room
-import com.danbam.indistraw.core.data.local.dao.RecentSearchDao
-import com.danbam.indistraw.core.data.local.database.IndiStrawDataBase
+import com.danbam.indistraw.core.local.dao.RecentSearchDao
+import com.danbam.indistraw.core.local.database.IndiStrawDataBase
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/preference/AuthPreference.kt b/core/local/src/main/kotlin/com/danbam/indistraw/core/local/preference/AuthPreference.kt
similarity index 90%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/preference/AuthPreference.kt
rename to core/local/src/main/kotlin/com/danbam/indistraw/core/local/preference/AuthPreference.kt
index 47c1db84..33fc23b6 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/preference/AuthPreference.kt
+++ b/core/local/src/main/kotlin/com/danbam/indistraw/core/local/preference/AuthPreference.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.data.local.preference
+package com.danbam.indistraw.core.local.preference
interface AuthPreference {
fun saveAccessToken(accessToken: String)
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/preference/AuthPreferenceImpl.kt b/core/local/src/main/kotlin/com/danbam/indistraw/core/local/preference/AuthPreferenceImpl.kt
similarity index 97%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/preference/AuthPreferenceImpl.kt
rename to core/local/src/main/kotlin/com/danbam/indistraw/core/local/preference/AuthPreferenceImpl.kt
index 55a28144..46ba78c6 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/preference/AuthPreferenceImpl.kt
+++ b/core/local/src/main/kotlin/com/danbam/indistraw/core/local/preference/AuthPreferenceImpl.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.data.local.preference
+package com.danbam.indistraw.core.local.preference
import android.content.SharedPreferences
import com.danbam.indistraw.core.local.util.clearString
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/preference/SystemPreference.kt b/core/local/src/main/kotlin/com/danbam/indistraw/core/local/preference/SystemPreference.kt
similarity index 68%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/preference/SystemPreference.kt
rename to core/local/src/main/kotlin/com/danbam/indistraw/core/local/preference/SystemPreference.kt
index de31b4f0..f2a8d996 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/preference/SystemPreference.kt
+++ b/core/local/src/main/kotlin/com/danbam/indistraw/core/local/preference/SystemPreference.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.data.local.preference
+package com.danbam.indistraw.core.local.preference
interface SystemPreference {
suspend fun saveLanguage(language: String)
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/preference/SystemPreferenceImpl.kt b/core/local/src/main/kotlin/com/danbam/indistraw/core/local/preference/SystemPreferenceImpl.kt
similarity index 93%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/preference/SystemPreferenceImpl.kt
rename to core/local/src/main/kotlin/com/danbam/indistraw/core/local/preference/SystemPreferenceImpl.kt
index eb779107..4f17b73c 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/preference/SystemPreferenceImpl.kt
+++ b/core/local/src/main/kotlin/com/danbam/indistraw/core/local/preference/SystemPreferenceImpl.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.data.local.preference
+package com.danbam.indistraw.core.local.preference
import android.content.SharedPreferences
import javax.inject.Inject
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/entity/search/RecentSearchEntity.kt b/core/local/src/main/kotlin/com/danbam/indistraw/core/local/search/RecentSearchEntity.kt
similarity index 68%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/entity/search/RecentSearchEntity.kt
rename to core/local/src/main/kotlin/com/danbam/indistraw/core/local/search/RecentSearchEntity.kt
index e2a9c956..13aae90d 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/entity/search/RecentSearchEntity.kt
+++ b/core/local/src/main/kotlin/com/danbam/indistraw/core/local/search/RecentSearchEntity.kt
@@ -1,8 +1,8 @@
-package com.danbam.indistraw.core.data.local.entity.search
+package com.danbam.indistraw.core.local.search
import androidx.room.Entity
import androidx.room.PrimaryKey
-import com.danbam.indistraw.core.entity.search.RecentSearchEntity as RecentSearchDomainEntity
+import com.danbam.indistraw.core.domain.entity.search.RecentSearchEntity as RecentSearchDomainEntity
@Entity(tableName = "recent_search")
data class RecentSearchEntity(
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/util/PreferenceUtil.kt b/core/local/src/main/kotlin/com/danbam/indistraw/core/local/util/PreferenceUtil.kt
similarity index 100%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/local/util/PreferenceUtil.kt
rename to core/local/src/main/kotlin/com/danbam/indistraw/core/local/util/PreferenceUtil.kt
diff --git a/core/remote/.gitignore b/core/remote/.gitignore
new file mode 100644
index 00000000..42afabfd
--- /dev/null
+++ b/core/remote/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/core/di/build.gradle.kts b/core/remote/build.gradle.kts
similarity index 55%
rename from core/di/build.gradle.kts
rename to core/remote/build.gradle.kts
index 5ff6e72b..95a177bd 100644
--- a/core/di/build.gradle.kts
+++ b/core/remote/build.gradle.kts
@@ -2,30 +2,28 @@ import com.android.build.gradle.internal.cxx.configure.gradleLocalProperties
plugins {
id("indistraw-core")
- id("kotlin-android")
}
android {
- namespace = "com.danbam.indistraw.core.di"
+ namespace = "com.danbam.indistraw.core.remote"
defaultConfig {
buildConfigField(
"String",
"BASE_URL",
gradleLocalProperties(rootDir).getProperty("BASE_URL")
)
+ buildConfigField(
+ "String",
+ "JUSO_KEY",
+ gradleLocalProperties(rootDir).getProperty("JUSO_KEY")
+ )
}
}
dependencies {
- implementation(project(":core:data"))
implementation(project(":core:domain"))
- implementation(libs.androidx.core)
- implementation(libs.androidx.appcompat)
- implementation(libs.androidx.preference)
- implementation(libs.hilt)
- kapt(libs.hilt.compiler)
- implementation(libs.room)
- kapt(libs.room.compiler)
implementation(libs.bundles.retrofit)
implementation(libs.bundles.okhttp)
+ testImplementation(libs.okhttp.sse)
+ implementation(libs.paging)
}
\ No newline at end of file
diff --git a/core/remote/src/main/AndroidManifest.xml b/core/remote/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..a5918e68
--- /dev/null
+++ b/core/remote/src/main/AndroidManifest.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/api/AccountAPI.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/api/AccountAPI.kt
new file mode 100644
index 00000000..8ae367ab
--- /dev/null
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/api/AccountAPI.kt
@@ -0,0 +1,51 @@
+package com.danbam.indistraw.core.remote.api
+
+import com.danbam.indistraw.core.remote.response.auth.ProfileResponse
+import com.danbam.indistraw.core.remote.response.funding.FindIdResponse
+import com.danbam.indistraw.core.remote.util.EndPoint.Companion.ACCOUNT
+import retrofit2.Response
+import retrofit2.http.Body
+import retrofit2.http.DELETE
+import retrofit2.http.GET
+import retrofit2.http.PATCH
+import retrofit2.http.POST
+import retrofit2.http.Path
+
+interface AccountAPI {
+ @GET("${ACCOUNT}/phone-number/{phoneNumber}")
+ suspend fun findId(
+ @Path("phoneNumber") phoneNumber: String,
+ ): FindIdResponse
+
+ @PATCH("${ACCOUNT}/password")
+ suspend fun changePassword(
+ @Body changePasswordRequest: com.danbam.indistraw.core.remote.request.auth.ChangePasswordRequest,
+ )
+
+ @GET("${ACCOUNT}/info")
+ suspend fun getProfile(): ProfileResponse
+
+ @PATCH("${ACCOUNT}/phone-number/{phoneNumber}")
+ suspend fun changePhoneNumber(
+ @Path("phoneNumber") phoneNumber: String,
+ ): Response
+
+ @PATCH("${ACCOUNT}/address")
+ suspend fun changeAddress(
+ @Body changeAddressRequest: com.danbam.indistraw.core.remote.request.auth.ChangeAddressRequest,
+ ): Response
+
+ @PATCH("${ACCOUNT}/info")
+ suspend fun editProfile(
+ @Body editProfileRequest: com.danbam.indistraw.core.remote.request.auth.EditProfileRequest,
+ ): Response
+
+ @POST("${ACCOUNT}/{actorType}/{idx}")
+ suspend fun enrollMoviePeople(
+ @Path("actorType") peopleType: String,
+ @Path("idx") actorIdx: Long
+ ): Response
+
+ @DELETE(ACCOUNT)
+ suspend fun withdraw(): Response
+}
\ No newline at end of file
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/api/AddressAPI.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/api/AddressAPI.kt
similarity index 72%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/api/AddressAPI.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/api/AddressAPI.kt
index fb57ccd3..a274f2ec 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/api/AddressAPI.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/api/AddressAPI.kt
@@ -1,7 +1,7 @@
-package com.danbam.indistraw.core.data.remote.api
+package com.danbam.indistraw.core.remote.api
-import com.danbam.indistraw.core.data.BuildConfig
-import com.danbam.indistraw.core.data.remote.response.auth.AddressResponse
+import com.danbam.indistraw.core.remote.response.auth.AddressResponse
+import com.danbam.indistraw.core.remote.BuildConfig
import retrofit2.http.GET
import retrofit2.http.Query
import retrofit2.http.Url
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/api/AuthAPI.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/api/AuthAPI.kt
similarity index 82%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/api/AuthAPI.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/api/AuthAPI.kt
index 5237d788..d32f8b17 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/api/AuthAPI.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/api/AuthAPI.kt
@@ -1,9 +1,9 @@
-package com.danbam.indistraw.core.data.remote.api
+package com.danbam.indistraw.core.remote.api
-import com.danbam.indistraw.core.data.remote.request.auth.LoginRequest
-import com.danbam.indistraw.core.data.remote.request.auth.SignUpRequest
-import com.danbam.indistraw.core.data.remote.response.auth.LoginResponse
-import com.danbam.indistraw.core.data.remote.util.EndPoint
+import com.danbam.indistraw.core.remote.request.auth.LoginRequest
+import com.danbam.indistraw.core.remote.request.auth.SignUpRequest
+import com.danbam.indistraw.core.remote.response.auth.LoginResponse
+import com.danbam.indistraw.core.remote.util.EndPoint
import retrofit2.Response
import retrofit2.http.Body
import retrofit2.http.DELETE
diff --git a/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/api/BannerAPI.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/api/BannerAPI.kt
new file mode 100644
index 00000000..29084220
--- /dev/null
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/api/BannerAPI.kt
@@ -0,0 +1,10 @@
+package com.danbam.indistraw.core.remote.api
+
+import com.danbam.indistraw.core.remote.response.banner.BannerResponse
+import com.danbam.indistraw.core.remote.util.EndPoint
+import retrofit2.http.GET
+
+interface BannerAPI {
+ @GET("${EndPoint.BANNER}/")
+ suspend fun getBanner(): List
+}
\ No newline at end of file
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/api/CrowdFundingAPI.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/api/CrowdFundingAPI.kt
similarity index 66%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/api/CrowdFundingAPI.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/api/CrowdFundingAPI.kt
index e19f8a3f..caf58366 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/api/CrowdFundingAPI.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/api/CrowdFundingAPI.kt
@@ -1,11 +1,11 @@
-package com.danbam.indistraw.core.data.remote.api
+package com.danbam.indistraw.core.remote.api
-import com.danbam.indistraw.core.data.remote.request.funding.FundingCreateRequest
-import com.danbam.indistraw.core.data.remote.response.funding.FundingDetailResponse
-import com.danbam.indistraw.core.data.remote.response.funding.FundingPageResponse
-import com.danbam.indistraw.core.data.remote.response.funding.FundingResponse
-import com.danbam.indistraw.core.data.remote.response.funding.MyFundingResponse
-import com.danbam.indistraw.core.data.remote.util.EndPoint
+import com.danbam.indistraw.core.remote.request.funding.FundingCreateRequest
+import com.danbam.indistraw.core.remote.response.funding.FundingDetailResponse
+import com.danbam.indistraw.core.remote.response.funding.FundingPageResponse
+import com.danbam.indistraw.core.remote.response.funding.FundingResponse
+import com.danbam.indistraw.core.remote.response.funding.MyFundingResponse
+import com.danbam.indistraw.core.remote.util.EndPoint
import retrofit2.Response
import retrofit2.http.Body
import retrofit2.http.GET
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/api/FileAPI.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/api/FileAPI.kt
similarity index 59%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/api/FileAPI.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/api/FileAPI.kt
index d0311d70..8967df02 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/api/FileAPI.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/api/FileAPI.kt
@@ -1,7 +1,7 @@
-package com.danbam.indistraw.core.data.remote.api
+package com.danbam.indistraw.core.remote.api
-import com.danbam.indistraw.core.data.remote.response.file.FileResponse
-import com.danbam.indistraw.core.data.remote.util.EndPoint
+import com.danbam.indistraw.core.remote.response.file.FileResponse
+import com.danbam.indistraw.core.remote.util.EndPoint
import okhttp3.MultipartBody
import retrofit2.http.Multipart
import retrofit2.http.POST
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/api/FundingAPI.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/api/FundingAPI.kt
similarity index 64%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/api/FundingAPI.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/api/FundingAPI.kt
index 057949a8..955a25f9 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/api/FundingAPI.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/api/FundingAPI.kt
@@ -1,9 +1,9 @@
-package com.danbam.indistraw.core.data.remote.api
+package com.danbam.indistraw.core.remote.api
-import com.danbam.indistraw.core.data.remote.request.funding.FundingRequest
-import com.danbam.indistraw.core.data.remote.response.funding.FundingResponse
-import com.danbam.indistraw.core.data.remote.response.funding.ReceiptResponse
-import com.danbam.indistraw.core.data.remote.util.EndPoint
+import com.danbam.indistraw.core.remote.request.funding.FundingRequest
+import com.danbam.indistraw.core.remote.response.funding.FundingResponse
+import com.danbam.indistraw.core.remote.response.funding.ReceiptResponse
+import com.danbam.indistraw.core.remote.util.EndPoint
import retrofit2.Response
import retrofit2.http.Body
import retrofit2.http.GET
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/api/MovieAPI.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/api/MovieAPI.kt
similarity index 59%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/api/MovieAPI.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/api/MovieAPI.kt
index 34f79cf4..443f729a 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/api/MovieAPI.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/api/MovieAPI.kt
@@ -1,17 +1,17 @@
-package com.danbam.indistraw.core.data.remote.api
+package com.danbam.indistraw.core.remote.api
-import com.danbam.indistraw.core.data.remote.request.movie.MovieCreateRequest
-import com.danbam.indistraw.core.data.remote.request.movie.MovieHistoryRequest
-import com.danbam.indistraw.core.data.remote.request.movie.MoviePeopleRequest
-import com.danbam.indistraw.core.data.remote.response.movie.AddMoviePeopleResponse
-import com.danbam.indistraw.core.data.remote.response.movie.DetailMovieHistoryResponse
-import com.danbam.indistraw.core.data.remote.response.movie.MovieDetailResponse
-import com.danbam.indistraw.core.data.remote.response.movie.MovieHistoryResponse
-import com.danbam.indistraw.core.data.remote.response.movie.MoviePageResponse
-import com.danbam.indistraw.core.data.remote.response.movie.MoviePeopleDetailResponse
-import com.danbam.indistraw.core.data.remote.response.movie.MoviePeopleResponse
-import com.danbam.indistraw.core.data.remote.response.movie.MovieResponse
-import com.danbam.indistraw.core.data.remote.util.EndPoint
+import com.danbam.indistraw.core.remote.request.movie.MovieCreateRequest
+import com.danbam.indistraw.core.remote.request.movie.MovieHistoryRequest
+import com.danbam.indistraw.core.remote.request.movie.MoviePeopleRequest
+import com.danbam.indistraw.core.remote.response.movie.AddMoviePeopleResponse
+import com.danbam.indistraw.core.remote.response.movie.DetailMovieHistoryResponse
+import com.danbam.indistraw.core.remote.response.movie.MovieDetailResponse
+import com.danbam.indistraw.core.remote.response.movie.MovieHistoryResponse
+import com.danbam.indistraw.core.remote.response.movie.MoviePageResponse
+import com.danbam.indistraw.core.remote.response.movie.MoviePeopleDetailResponse
+import com.danbam.indistraw.core.remote.response.movie.MoviePeopleResponse
+import com.danbam.indistraw.core.remote.response.movie.MovieResponse
+import com.danbam.indistraw.core.remote.util.EndPoint
import retrofit2.Response
import retrofit2.http.Body
import retrofit2.http.GET
@@ -39,19 +39,19 @@ interface MovieAPI {
@GET("${EndPoint.Movie}/{actorType}/")
suspend fun searchMoviePeople(
- @Path("actorType") actorType: String,
+ @Path("actorType") peopleType: String,
@Query("name") name: String,
): List
@POST("${EndPoint.Movie}/{actorType}/")
suspend fun addMoviePeople(
- @Path("actorType") actorType: String,
+ @Path("actorType") peopleType: String,
@Body moviePeopleRequest: MoviePeopleRequest
): AddMoviePeopleResponse
@GET("${EndPoint.Movie}/{actorType}/{idx}/")
suspend fun moviePeopleDetail(
- @Path("actorType") actorType: String,
+ @Path("actorType") peopleType: String,
@Path("idx") actorIdx: Long,
): MoviePeopleDetailResponse
@@ -73,4 +73,8 @@ interface MovieAPI {
suspend fun movieHistory(
@Path("idx") movieIdx: Long,
): DetailMovieHistoryResponse
+
+
+ @GET("${EndPoint.Movie}/filmography")
+ suspend fun movieFilmography(): List
}
\ No newline at end of file
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/api/QRCodeAPI.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/api/QRCodeAPI.kt
similarity index 55%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/api/QRCodeAPI.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/api/QRCodeAPI.kt
index a552b277..17d831be 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/api/QRCodeAPI.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/api/QRCodeAPI.kt
@@ -1,8 +1,8 @@
-package com.danbam.indistraw.core.data.remote.api
+package com.danbam.indistraw.core.remote.api
-import com.danbam.indistraw.core.data.remote.request.auth.CheckQRCodeRequest
-import com.danbam.indistraw.core.data.remote.response.auth.GetQRCodeResponse
-import com.danbam.indistraw.core.data.remote.util.EndPoint
+import com.danbam.indistraw.core.remote.request.auth.CheckQRCodeRequest
+import com.danbam.indistraw.core.remote.response.auth.GetQRCodeResponse
+import com.danbam.indistraw.core.remote.util.EndPoint
import retrofit2.Response
import retrofit2.http.Body
import retrofit2.http.POST
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/api/SearchAPI.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/api/SearchAPI.kt
similarity index 67%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/api/SearchAPI.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/api/SearchAPI.kt
index 70d83705..81f62771 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/api/SearchAPI.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/api/SearchAPI.kt
@@ -1,9 +1,9 @@
-package com.danbam.indistraw.core.data.remote.api
+package com.danbam.indistraw.core.remote.api
-import com.danbam.indistraw.core.data.remote.response.funding.FundingPageResponse
-import com.danbam.indistraw.core.data.remote.response.movie.MoviePageResponse
-import com.danbam.indistraw.core.data.remote.response.search.PopularTagResponse
-import com.danbam.indistraw.core.data.remote.util.EndPoint
+import com.danbam.indistraw.core.remote.response.funding.FundingPageResponse
+import com.danbam.indistraw.core.remote.response.movie.MoviePageResponse
+import com.danbam.indistraw.core.remote.response.search.PopularTagResponse
+import com.danbam.indistraw.core.remote.util.EndPoint
import retrofit2.http.GET
import retrofit2.http.Query
diff --git a/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/AccountRemoteDataSource.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/AccountRemoteDataSource.kt
new file mode 100644
index 00000000..a417b1ac
--- /dev/null
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/AccountRemoteDataSource.kt
@@ -0,0 +1,18 @@
+package com.danbam.indistraw.core.remote.datasource
+
+import com.danbam.indistraw.core.remote.request.auth.ChangeAddressRequest
+import com.danbam.indistraw.core.remote.request.auth.ChangePasswordRequest
+import com.danbam.indistraw.core.remote.request.auth.EditProfileRequest
+import com.danbam.indistraw.core.remote.response.auth.ProfileResponse
+import com.danbam.indistraw.core.remote.response.funding.FindIdResponse
+
+interface AccountRemoteDataSource {
+ suspend fun findId(phoneNumber: String): FindIdResponse
+ suspend fun changePassword(changePasswordRequest: ChangePasswordRequest)
+ suspend fun getProfile(): ProfileResponse
+ suspend fun changePhoneNumber(phoneNumber: String)
+ suspend fun changeAddress(changeAddressRequest: ChangeAddressRequest)
+ suspend fun editProfile(editProfileRequest: EditProfileRequest)
+ suspend fun enrollMoviePeople(peopleType: String, actorIdx: Long)
+ suspend fun withdraw()
+}
\ No newline at end of file
diff --git a/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/AccountRemoteDataSourceImpl.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/AccountRemoteDataSourceImpl.kt
new file mode 100644
index 00000000..da56a609
--- /dev/null
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/AccountRemoteDataSourceImpl.kt
@@ -0,0 +1,53 @@
+package com.danbam.indistraw.core.remote.datasource
+
+import com.danbam.indistraw.core.remote.api.AccountAPI
+import com.danbam.indistraw.core.remote.request.auth.ChangeAddressRequest
+import com.danbam.indistraw.core.remote.request.auth.ChangePasswordRequest
+import com.danbam.indistraw.core.remote.request.auth.EditProfileRequest
+import com.danbam.indistraw.core.remote.response.auth.ProfileResponse
+import com.danbam.indistraw.core.remote.response.funding.FindIdResponse
+import com.danbam.indistraw.core.remote.util.errorHandling
+import com.danbam.indistraw.core.remote.util.indiStrawApiCall
+import javax.inject.Inject
+
+class AccountRemoteDataSourceImpl @Inject constructor(
+ private val accountAPI: AccountAPI,
+) : AccountRemoteDataSource {
+ override suspend fun findId(phoneNumber: String): FindIdResponse =
+ indiStrawApiCall {
+ accountAPI.findId(phoneNumber = phoneNumber)
+ }
+
+ override suspend fun changePassword(changePasswordRequest: ChangePasswordRequest) =
+ indiStrawApiCall {
+ accountAPI.changePassword(changePasswordRequest = changePasswordRequest)
+ }
+
+ override suspend fun getProfile(): ProfileResponse =
+ indiStrawApiCall {
+ accountAPI.getProfile()
+ }
+
+ override suspend fun changePhoneNumber(phoneNumber: String) =
+ indiStrawApiCall {
+ accountAPI.changePhoneNumber(phoneNumber = phoneNumber).errorHandling()
+ }
+
+ override suspend fun changeAddress(changeAddressRequest: ChangeAddressRequest) =
+ indiStrawApiCall {
+ accountAPI.changeAddress(changeAddressRequest = changeAddressRequest).errorHandling()
+ }
+
+ override suspend fun editProfile(editProfileRequest: EditProfileRequest) =
+ indiStrawApiCall {
+ accountAPI.editProfile(editProfileRequest = editProfileRequest).errorHandling()
+ }
+
+ override suspend fun enrollMoviePeople(peopleType: String, actorIdx: Long) = indiStrawApiCall {
+ accountAPI.enrollMoviePeople(peopleType = peopleType, actorIdx = actorIdx).errorHandling()
+ }
+
+ override suspend fun withdraw() = indiStrawApiCall {
+ accountAPI.withdraw().errorHandling()
+ }
+}
\ No newline at end of file
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/AddressRemoteDataSource.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/AddressRemoteDataSource.kt
similarity index 60%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/AddressRemoteDataSource.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/AddressRemoteDataSource.kt
index c1b8c175..9f3ee8f7 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/AddressRemoteDataSource.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/AddressRemoteDataSource.kt
@@ -1,7 +1,7 @@
-package com.danbam.indistraw.core.data.remote.datasource
+package com.danbam.indistraw.core.remote.datasource
import androidx.paging.PagingData
-import com.danbam.indistraw.core.data.remote.response.auth.AddressResponse
+import com.danbam.indistraw.core.remote.response.auth.AddressResponse
import kotlinx.coroutines.flow.Flow
interface AddressRemoteDataSource {
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/AddressRemoteDataSourceImpl.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/AddressRemoteDataSourceImpl.kt
similarity index 70%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/AddressRemoteDataSourceImpl.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/AddressRemoteDataSourceImpl.kt
index 5e376db9..e36c0090 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/AddressRemoteDataSourceImpl.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/AddressRemoteDataSourceImpl.kt
@@ -1,11 +1,11 @@
-package com.danbam.indistraw.core.data.remote.datasource
+package com.danbam.indistraw.core.remote.datasource
import androidx.paging.Pager
import androidx.paging.PagingConfig
import androidx.paging.PagingData
-import com.danbam.indistraw.core.data.remote.api.AddressAPI
-import com.danbam.indistraw.core.data.remote.pagingsource.AddressPagingSource
-import com.danbam.indistraw.core.data.remote.response.auth.AddressResponse
+import com.danbam.indistraw.core.remote.api.AddressAPI
+import com.danbam.indistraw.core.remote.pagingsource.AddressPagingSource
+import com.danbam.indistraw.core.remote.response.auth.AddressResponse
import kotlinx.coroutines.flow.Flow
import javax.inject.Inject
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/AuthRemoteDataSource.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/AuthRemoteDataSource.kt
similarity index 64%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/AuthRemoteDataSource.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/AuthRemoteDataSource.kt
index e231959c..937c71cd 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/AuthRemoteDataSource.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/AuthRemoteDataSource.kt
@@ -1,8 +1,8 @@
-package com.danbam.indistraw.core.data.remote.datasource
+package com.danbam.indistraw.core.remote.datasource
-import com.danbam.indistraw.core.data.remote.request.auth.LoginRequest
-import com.danbam.indistraw.core.data.remote.request.auth.SignUpRequest
-import com.danbam.indistraw.core.data.remote.response.auth.LoginResponse
+import com.danbam.indistraw.core.remote.request.auth.LoginRequest
+import com.danbam.indistraw.core.remote.request.auth.SignUpRequest
+import com.danbam.indistraw.core.remote.response.auth.LoginResponse
interface AuthRemoteDataSource {
suspend fun signup(signUpRequest: SignUpRequest)
diff --git a/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/AuthRemoteDataSourceImpl.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/AuthRemoteDataSourceImpl.kt
new file mode 100644
index 00000000..0b380f40
--- /dev/null
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/AuthRemoteDataSourceImpl.kt
@@ -0,0 +1,54 @@
+package com.danbam.indistraw.core.remote.datasource
+
+import com.danbam.indistraw.core.remote.api.AuthAPI
+import com.danbam.indistraw.core.remote.request.auth.LoginRequest
+import com.danbam.indistraw.core.remote.request.auth.SignUpRequest
+import com.danbam.indistraw.core.remote.response.auth.LoginResponse
+import com.danbam.indistraw.core.remote.util.errorHandling
+import com.danbam.indistraw.core.remote.util.indiStrawApiCall
+import javax.inject.Inject
+
+class AuthRemoteDataSourceImpl @Inject constructor(
+ private val authAPI: AuthAPI,
+) : AuthRemoteDataSource {
+ override suspend fun signup(signUpRequest: SignUpRequest) =
+ indiStrawApiCall {
+ authAPI.signup(signUpRequest = signUpRequest)
+ }
+
+ override suspend fun login(loginRequest: LoginRequest): LoginResponse =
+ indiStrawApiCall {
+ authAPI.login(loginRequest = loginRequest)
+ }
+
+ override suspend fun refresh(refreshToken: String): LoginResponse =
+ indiStrawApiCall {
+ authAPI.refresh(refreshToken = "Bearer $refreshToken")
+ }
+
+ override suspend fun checkPhoneNumber(phoneNumber: String, type: String) =
+ indiStrawApiCall {
+ authAPI.checkPhoneNumber(phoneNumber = phoneNumber, type = type).errorHandling()
+ }
+
+ override suspend fun checkId(id: String) =
+ indiStrawApiCall {
+ authAPI.checkId(id = id).errorHandling()
+ }
+
+ override suspend fun sendCertificateNumber(phoneNumber: String) =
+ indiStrawApiCall {
+ authAPI.sendCertificateNumber(phoneNumber = phoneNumber).errorHandling()
+ }
+
+ override suspend fun checkCertificateNumber(authCode: Int, phoneNumber: String) =
+ indiStrawApiCall {
+ authAPI.checkCertificateNumber(authCode = authCode, phoneNumber = phoneNumber)
+ .errorHandling()
+ }
+
+ override suspend fun logout(refreshToken: String) =
+ indiStrawApiCall {
+ authAPI.logout(refreshToken = "Bearer $refreshToken").errorHandling()
+ }
+}
\ No newline at end of file
diff --git a/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/BannerRemoteDataSource.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/BannerRemoteDataSource.kt
new file mode 100644
index 00000000..8fdc70bd
--- /dev/null
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/BannerRemoteDataSource.kt
@@ -0,0 +1,7 @@
+package com.danbam.indistraw.core.remote.datasource
+
+import com.danbam.indistraw.core.remote.response.banner.BannerResponse
+
+interface BannerRemoteDataSource {
+ suspend fun getBanner(): List
+}
\ No newline at end of file
diff --git a/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/BannerRemoteDataSourceImpl.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/BannerRemoteDataSourceImpl.kt
new file mode 100644
index 00000000..7cb31035
--- /dev/null
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/BannerRemoteDataSourceImpl.kt
@@ -0,0 +1,15 @@
+package com.danbam.indistraw.core.remote.datasource
+
+import com.danbam.indistraw.core.remote.api.BannerAPI
+import com.danbam.indistraw.core.remote.response.banner.BannerResponse
+import com.danbam.indistraw.core.remote.util.indiStrawApiCall
+import javax.inject.Inject
+
+class BannerRemoteDataSourceImpl @Inject constructor(
+ private val bannerAPI: BannerAPI
+) : BannerRemoteDataSource {
+ override suspend fun getBanner(): List =
+ indiStrawApiCall {
+ bannerAPI.getBanner()
+ }
+}
\ No newline at end of file
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/CrowdFundingRemoteDataSource.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/CrowdFundingRemoteDataSource.kt
similarity index 56%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/CrowdFundingRemoteDataSource.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/CrowdFundingRemoteDataSource.kt
index eaeaec46..b060a569 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/CrowdFundingRemoteDataSource.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/CrowdFundingRemoteDataSource.kt
@@ -1,10 +1,10 @@
-package com.danbam.indistraw.core.data.remote.datasource
+package com.danbam.indistraw.core.remote.datasource
import androidx.paging.PagingData
-import com.danbam.indistraw.core.data.remote.request.funding.FundingCreateRequest
-import com.danbam.indistraw.core.data.remote.response.funding.FundingDetailResponse
-import com.danbam.indistraw.core.data.remote.response.funding.FundingResponse
-import com.danbam.indistraw.core.data.remote.response.funding.MyFundingResponse
+import com.danbam.indistraw.core.remote.request.funding.FundingCreateRequest
+import com.danbam.indistraw.core.remote.response.funding.FundingDetailResponse
+import com.danbam.indistraw.core.remote.response.funding.FundingResponse
+import com.danbam.indistraw.core.remote.response.funding.MyFundingResponse
import kotlinx.coroutines.flow.Flow
interface CrowdFundingRemoteDataSource {
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/CrowdFundingRemoteDataSourceImpl.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/CrowdFundingRemoteDataSourceImpl.kt
similarity index 60%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/CrowdFundingRemoteDataSourceImpl.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/CrowdFundingRemoteDataSourceImpl.kt
index 76391214..e93eb37c 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/CrowdFundingRemoteDataSourceImpl.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/CrowdFundingRemoteDataSourceImpl.kt
@@ -1,16 +1,16 @@
-package com.danbam.indistraw.core.data.remote.datasource
+package com.danbam.indistraw.core.remote.datasource
import androidx.paging.Pager
import androidx.paging.PagingConfig
import androidx.paging.PagingData
-import com.danbam.indistraw.core.data.remote.api.CrowdFundingAPI
-import com.danbam.indistraw.core.data.remote.pagingsource.FundingPagingSource
-import com.danbam.indistraw.core.data.remote.request.funding.FundingCreateRequest
-import com.danbam.indistraw.core.data.remote.response.funding.FundingDetailResponse
-import com.danbam.indistraw.core.data.remote.response.funding.FundingResponse
-import com.danbam.indistraw.core.data.remote.response.funding.MyFundingResponse
-import com.danbam.indistraw.core.data.remote.util.errorHandling
-import com.danbam.indistraw.core.data.remote.util.indiStrawApiCall
+import com.danbam.indistraw.core.remote.api.CrowdFundingAPI
+import com.danbam.indistraw.core.remote.pagingsource.FundingPagingSource
+import com.danbam.indistraw.core.remote.request.funding.FundingCreateRequest
+import com.danbam.indistraw.core.remote.response.funding.FundingDetailResponse
+import com.danbam.indistraw.core.remote.response.funding.FundingResponse
+import com.danbam.indistraw.core.remote.response.funding.MyFundingResponse
+import com.danbam.indistraw.core.remote.util.errorHandling
+import com.danbam.indistraw.core.remote.util.indiStrawApiCall
import kotlinx.coroutines.flow.Flow
import javax.inject.Inject
@@ -23,9 +23,10 @@ class CrowdFundingRemoteDataSourceImpl @Inject constructor(
.errorHandling()
}
- override suspend fun fundingPopularList(): List = indiStrawApiCall {
- crowdFundingAPI.fundingPopularList()
- }
+ override suspend fun fundingPopularList(): List =
+ indiStrawApiCall {
+ crowdFundingAPI.fundingPopularList()
+ }
override suspend fun fundingDetail(fundingIdx: Long): FundingDetailResponse =
indiStrawApiCall {
@@ -40,9 +41,10 @@ class CrowdFundingRemoteDataSourceImpl @Inject constructor(
)
}).flow
- override suspend fun fundingMy(): List = indiStrawApiCall {
- crowdFundingAPI.fundingMy()
- }
+ override suspend fun fundingMy(): List =
+ indiStrawApiCall {
+ crowdFundingAPI.fundingMy()
+ }
override suspend fun fundingMyDetail(fundingIdx: Long): MyFundingResponse =
indiStrawApiCall {
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/FileRemoteDataSource.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/FileRemoteDataSource.kt
similarity index 50%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/FileRemoteDataSource.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/FileRemoteDataSource.kt
index 3a5867cc..b21ce3e8 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/FileRemoteDataSource.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/FileRemoteDataSource.kt
@@ -1,6 +1,6 @@
-package com.danbam.indistraw.core.data.remote.datasource
+package com.danbam.indistraw.core.remote.datasource
-import com.danbam.indistraw.core.data.remote.response.file.FileResponse
+import com.danbam.indistraw.core.remote.response.file.FileResponse
import okhttp3.MultipartBody
interface FileRemoteDataSource {
diff --git a/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/FileRemoteDataSourceImpl.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/FileRemoteDataSourceImpl.kt
new file mode 100644
index 00000000..5178924a
--- /dev/null
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/FileRemoteDataSourceImpl.kt
@@ -0,0 +1,16 @@
+package com.danbam.indistraw.core.remote.datasource
+
+import com.danbam.indistraw.core.remote.api.FileAPI
+import com.danbam.indistraw.core.remote.response.file.FileResponse
+import com.danbam.indistraw.core.remote.util.indiStrawApiCall
+import okhttp3.MultipartBody
+import javax.inject.Inject
+
+class FileRemoteDataSourceImpl @Inject constructor(
+ private val fileAPI: FileAPI,
+) : FileRemoteDataSource {
+ override suspend fun sendFile(file: MultipartBody.Part): FileResponse =
+ indiStrawApiCall {
+ fileAPI.sendFile(file = file)
+ }
+}
\ No newline at end of file
diff --git a/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/FundingRemoteDataSource.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/FundingRemoteDataSource.kt
new file mode 100644
index 00000000..e838290c
--- /dev/null
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/FundingRemoteDataSource.kt
@@ -0,0 +1,11 @@
+package com.danbam.indistraw.core.remote.datasource
+
+import com.danbam.indistraw.core.remote.request.funding.FundingRequest
+import com.danbam.indistraw.core.remote.response.funding.FundingResponse
+import com.danbam.indistraw.core.remote.response.funding.ReceiptResponse
+
+interface FundingRemoteDataSource {
+ suspend fun getReceipt(): ReceiptResponse
+ suspend fun funding(fundingIdx: Long, rewardIdx: Long, fundingRequest: FundingRequest)
+ suspend fun fundingList(): List
+}
\ No newline at end of file
diff --git a/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/FundingRemoteDataSourceImpl.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/FundingRemoteDataSourceImpl.kt
new file mode 100644
index 00000000..60458c6a
--- /dev/null
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/FundingRemoteDataSourceImpl.kt
@@ -0,0 +1,35 @@
+package com.danbam.indistraw.core.remote.datasource
+
+import com.danbam.indistraw.core.remote.api.FundingAPI
+import com.danbam.indistraw.core.remote.request.funding.FundingRequest
+import com.danbam.indistraw.core.remote.response.funding.FundingResponse
+import com.danbam.indistraw.core.remote.response.funding.ReceiptResponse
+import com.danbam.indistraw.core.remote.util.errorHandling
+import com.danbam.indistraw.core.remote.util.indiStrawApiCall
+import javax.inject.Inject
+
+class FundingRemoteDataSourceImpl @Inject constructor(
+ private val fundingAPI: FundingAPI
+) : FundingRemoteDataSource {
+ override suspend fun getReceipt(): ReceiptResponse =
+ indiStrawApiCall {
+ fundingAPI.getReceipt()
+ }
+
+ override suspend fun funding(
+ fundingIdx: Long,
+ rewardIdx: Long,
+ fundingRequest: FundingRequest
+ ) = indiStrawApiCall {
+ fundingAPI.funding(
+ fundingIdx = fundingIdx,
+ rewardIdx = rewardIdx,
+ fundingRequest = fundingRequest
+ ).errorHandling()
+ }
+
+ override suspend fun fundingList(): List =
+ indiStrawApiCall {
+ fundingAPI.fundingList()
+ }
+}
\ No newline at end of file
diff --git a/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/MovieRemoteDataSource.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/MovieRemoteDataSource.kt
new file mode 100644
index 00000000..23fb268f
--- /dev/null
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/MovieRemoteDataSource.kt
@@ -0,0 +1,36 @@
+package com.danbam.indistraw.core.remote.datasource
+
+import androidx.paging.PagingData
+import com.danbam.indistraw.core.remote.request.movie.MovieCreateRequest
+import com.danbam.indistraw.core.remote.request.movie.MovieHistoryRequest
+import com.danbam.indistraw.core.remote.request.movie.MoviePeopleRequest
+import com.danbam.indistraw.core.remote.response.movie.AddMoviePeopleResponse
+import com.danbam.indistraw.core.remote.response.movie.DetailMovieHistoryResponse
+import com.danbam.indistraw.core.remote.response.movie.MovieDetailResponse
+import com.danbam.indistraw.core.remote.response.movie.MovieHistoryResponse
+import com.danbam.indistraw.core.remote.response.movie.MoviePeopleDetailResponse
+import com.danbam.indistraw.core.remote.response.movie.MoviePeopleResponse
+import com.danbam.indistraw.core.remote.response.movie.MovieResponse
+import kotlinx.coroutines.flow.Flow
+
+interface MovieRemoteDataSource {
+ suspend fun movieCreate(movieCreateRequest: MovieCreateRequest)
+ suspend fun movieList(genre: String? = null): Flow>
+ suspend fun movieDetail(movieIdx: Long): MovieDetailResponse
+ suspend fun searchMoviePeople(peopleType: String, name: String): List
+ suspend fun moviePeopleDetail(peopleType: String, actorIdx: Long): MoviePeopleDetailResponse
+ suspend fun addMoviePeople(
+ peopleType: String,
+ moviePeopleRequest: MoviePeopleRequest
+ ): AddMoviePeopleResponse
+
+ suspend fun movieRecentList(): List
+ suspend fun moviePopularList(): List
+ suspend fun movieRecommendList(): List
+
+ suspend fun movieHistoryList(): List
+ suspend fun addMovieHistory(movieHistoryRequest: MovieHistoryRequest)
+ suspend fun movieHistory(movieIdx: Long): DetailMovieHistoryResponse
+
+ suspend fun movieFilmography(): List
+}
\ No newline at end of file
diff --git a/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/MovieRemoteDataSourceImpl.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/MovieRemoteDataSourceImpl.kt
new file mode 100644
index 00000000..2911eb98
--- /dev/null
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/MovieRemoteDataSourceImpl.kt
@@ -0,0 +1,99 @@
+package com.danbam.indistraw.core.remote.datasource
+
+import androidx.paging.Pager
+import androidx.paging.PagingConfig
+import androidx.paging.PagingData
+import com.danbam.indistraw.core.remote.api.MovieAPI
+import com.danbam.indistraw.core.remote.pagingsource.MoviePagingSource
+import com.danbam.indistraw.core.remote.request.movie.MovieCreateRequest
+import com.danbam.indistraw.core.remote.request.movie.MovieHistoryRequest
+import com.danbam.indistraw.core.remote.request.movie.MoviePeopleRequest
+import com.danbam.indistraw.core.remote.response.movie.DetailMovieHistoryResponse
+import com.danbam.indistraw.core.remote.response.movie.MovieDetailResponse
+import com.danbam.indistraw.core.remote.response.movie.MovieHistoryResponse
+import com.danbam.indistraw.core.remote.response.movie.MoviePeopleDetailResponse
+import com.danbam.indistraw.core.remote.response.movie.MoviePeopleResponse
+import com.danbam.indistraw.core.remote.response.movie.MovieResponse
+import com.danbam.indistraw.core.remote.util.errorHandling
+import com.danbam.indistraw.core.remote.util.indiStrawApiCall
+import kotlinx.coroutines.flow.Flow
+import javax.inject.Inject
+
+class MovieRemoteDataSourceImpl @Inject constructor(
+ private val movieAPI: MovieAPI
+) : MovieRemoteDataSource {
+ override suspend fun movieCreate(movieCreateRequest: MovieCreateRequest) =
+ indiStrawApiCall {
+ movieAPI.movieCreate(movieCreateRequest = movieCreateRequest).errorHandling()
+ }
+
+ override suspend fun movieList(genre: String?): Flow> =
+ Pager(config = PagingConfig(pageSize = 20),
+ pagingSourceFactory = {
+ MoviePagingSource(
+ movieAPI = movieAPI,
+ genre = genre
+ )
+ }).flow
+
+ override suspend fun movieDetail(movieIdx: Long): MovieDetailResponse =
+ indiStrawApiCall {
+ movieAPI.movieDetail(movieIdx = movieIdx)
+ }
+
+ override suspend fun searchMoviePeople(
+ peopleType: String,
+ name: String
+ ): List = indiStrawApiCall {
+ movieAPI.searchMoviePeople(peopleType = peopleType, name = name)
+ }
+
+ override suspend fun addMoviePeople(peopleType: String, moviePeopleRequest: MoviePeopleRequest) =
+ indiStrawApiCall {
+ movieAPI.addMoviePeople(peopleType = peopleType, moviePeopleRequest = moviePeopleRequest)
+ }
+
+ override suspend fun moviePeopleDetail(
+ peopleType: String,
+ actorIdx: Long
+ ): MoviePeopleDetailResponse =
+ indiStrawApiCall {
+ movieAPI.moviePeopleDetail(peopleType = peopleType, actorIdx = actorIdx)
+ }
+
+ override suspend fun movieRecentList(): List =
+ indiStrawApiCall {
+ movieAPI.movieList().list.let {
+ it.slice(0 until if (it.size <= 10) it.size else 10)
+ }
+ }
+
+ override suspend fun moviePopularList(): List =
+ indiStrawApiCall {
+ movieAPI.moviePopularList()
+ }
+
+ override suspend fun movieRecommendList(): List =
+ indiStrawApiCall {
+ movieAPI.movieRecommendList()
+ }
+
+ override suspend fun movieHistoryList(): List =
+ indiStrawApiCall {
+ movieAPI.movieHistoryList()
+ }
+
+ override suspend fun addMovieHistory(movieHistoryRequest: MovieHistoryRequest) =
+ indiStrawApiCall {
+ movieAPI.addMovieHistory(movieHistoryRequest = movieHistoryRequest).errorHandling()
+ }
+
+ override suspend fun movieHistory(movieIdx: Long): DetailMovieHistoryResponse =
+ indiStrawApiCall {
+ movieAPI.movieHistory(movieIdx = movieIdx)
+ }
+
+ override suspend fun movieFilmography(): List = indiStrawApiCall {
+ movieAPI.movieFilmography()
+ }
+}
\ No newline at end of file
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/QRCodeRemoteDataSource.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/QRCodeRemoteDataSource.kt
similarity index 52%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/QRCodeRemoteDataSource.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/QRCodeRemoteDataSource.kt
index dc936021..18d31853 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/QRCodeRemoteDataSource.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/QRCodeRemoteDataSource.kt
@@ -1,7 +1,7 @@
-package com.danbam.indistraw.core.data.remote.datasource
+package com.danbam.indistraw.core.remote.datasource
-import com.danbam.indistraw.core.data.remote.response.auth.GetQRCodeResponse
-import com.danbam.indistraw.core.data.remote.response.auth.LoginResponse
+import com.danbam.indistraw.core.remote.response.auth.GetQRCodeResponse
+import com.danbam.indistraw.core.remote.response.auth.LoginResponse
import java.util.UUID
interface QRCodeRemoteDataSource {
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/QRCodeRemoteDataSourceImpl.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/QRCodeRemoteDataSourceImpl.kt
similarity index 63%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/QRCodeRemoteDataSourceImpl.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/QRCodeRemoteDataSourceImpl.kt
index b9e76b81..a678ac98 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/QRCodeRemoteDataSourceImpl.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/QRCodeRemoteDataSourceImpl.kt
@@ -1,13 +1,13 @@
-package com.danbam.indistraw.core.data.remote.datasource
+package com.danbam.indistraw.core.remote.datasource
-import com.danbam.indistraw.core.data.BuildConfig
-import com.danbam.indistraw.core.data.remote.api.QRCodeAPI
-import com.danbam.indistraw.core.data.remote.request.auth.CheckQRCodeRequest
-import com.danbam.indistraw.core.data.remote.response.auth.GetQRCodeResponse
-import com.danbam.indistraw.core.data.remote.response.auth.LoginResponse
-import com.danbam.indistraw.core.data.remote.util.EndPoint
-import com.danbam.indistraw.core.data.remote.util.errorHandling
-import com.danbam.indistraw.core.data.remote.util.indiStrawApiCall
+import com.danbam.indistraw.core.remote.BuildConfig
+import com.danbam.indistraw.core.remote.api.QRCodeAPI
+import com.danbam.indistraw.core.remote.request.auth.CheckQRCodeRequest
+import com.danbam.indistraw.core.remote.response.auth.GetQRCodeResponse
+import com.danbam.indistraw.core.remote.response.auth.LoginResponse
+import com.danbam.indistraw.core.remote.util.EndPoint
+import com.danbam.indistraw.core.remote.util.errorHandling
+import com.danbam.indistraw.core.remote.util.indiStrawApiCall
import com.google.gson.Gson
import okhttp3.CacheControl
import okhttp3.OkHttpClient
@@ -22,13 +22,19 @@ import javax.inject.Inject
class QRCodeRemoteDataSourceImpl @Inject constructor(
private val qrCodeAPI: QRCodeAPI
) : QRCodeRemoteDataSource {
- override suspend fun getQRCode(): GetQRCodeResponse = indiStrawApiCall {
- qrCodeAPI.getQRCode()
- }
+ override suspend fun getQRCode(): GetQRCodeResponse =
+ indiStrawApiCall {
+ qrCodeAPI.getQRCode()
+ }
- override suspend fun checkQRCode(uuid: UUID) = indiStrawApiCall {
- qrCodeAPI.checkQRCode(checkQRCodeRequest = CheckQRCodeRequest(uuid = uuid)).errorHandling()
- }
+ override suspend fun checkQRCode(uuid: UUID) =
+ indiStrawApiCall {
+ qrCodeAPI.checkQRCode(
+ checkQRCodeRequest = CheckQRCodeRequest(
+ uuid = uuid
+ )
+ ).errorHandling()
+ }
override suspend fun connectQRCode(uuid: UUID, onSuccess: (LoginResponse) -> Unit) {
val eventSourceListener = object : EventSourceListener() {
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/SearchRemoteDataSource.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/SearchRemoteDataSource.kt
similarity index 56%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/SearchRemoteDataSource.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/SearchRemoteDataSource.kt
index 2a95fb3c..79b31152 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/SearchRemoteDataSource.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/SearchRemoteDataSource.kt
@@ -1,9 +1,9 @@
-package com.danbam.indistraw.core.data.remote.datasource
+package com.danbam.indistraw.core.remote.datasource
import androidx.paging.PagingData
-import com.danbam.indistraw.core.data.remote.response.funding.FundingResponse
-import com.danbam.indistraw.core.data.remote.response.movie.MovieResponse
-import com.danbam.indistraw.core.data.remote.response.search.PopularTagResponse
+import com.danbam.indistraw.core.remote.response.funding.FundingResponse
+import com.danbam.indistraw.core.remote.response.movie.MovieResponse
+import com.danbam.indistraw.core.remote.response.search.PopularTagResponse
import kotlinx.coroutines.flow.Flow
interface SearchRemoteDataSource {
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/SearchRemoteDataSourceImpl.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/SearchRemoteDataSourceImpl.kt
similarity index 61%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/SearchRemoteDataSourceImpl.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/SearchRemoteDataSourceImpl.kt
index b6c0ba0b..9da131e6 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/datasource/SearchRemoteDataSourceImpl.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/datasource/SearchRemoteDataSourceImpl.kt
@@ -1,15 +1,15 @@
-package com.danbam.indistraw.core.data.remote.datasource
+package com.danbam.indistraw.core.remote.datasource
import androidx.paging.Pager
import androidx.paging.PagingConfig
import androidx.paging.PagingData
-import com.danbam.indistraw.core.data.remote.api.SearchAPI
-import com.danbam.indistraw.core.data.remote.pagingsource.SearchFundingPagingSource
-import com.danbam.indistraw.core.data.remote.pagingsource.SearchMoviePagingSource
-import com.danbam.indistraw.core.data.remote.response.funding.FundingResponse
-import com.danbam.indistraw.core.data.remote.response.movie.MovieResponse
-import com.danbam.indistraw.core.data.remote.response.search.PopularTagResponse
-import com.danbam.indistraw.core.data.remote.util.indiStrawApiCall
+import com.danbam.indistraw.core.remote.api.SearchAPI
+import com.danbam.indistraw.core.remote.pagingsource.SearchFundingPagingSource
+import com.danbam.indistraw.core.remote.pagingsource.SearchMoviePagingSource
+import com.danbam.indistraw.core.remote.response.funding.FundingResponse
+import com.danbam.indistraw.core.remote.response.movie.MovieResponse
+import com.danbam.indistraw.core.remote.response.search.PopularTagResponse
+import com.danbam.indistraw.core.remote.util.indiStrawApiCall
import kotlinx.coroutines.flow.Flow
import javax.inject.Inject
@@ -39,7 +39,8 @@ class SearchRemoteDataSourceImpl @Inject constructor(
)
}).flow
- override suspend fun popularTag(): PopularTagResponse = indiStrawApiCall {
- searchAPI.popularTag()
- }
+ override suspend fun popularTag(): PopularTagResponse =
+ indiStrawApiCall {
+ searchAPI.popularTag()
+ }
}
\ No newline at end of file
diff --git a/core/di/src/main/kotlin/com/danbam/indistraw/core/di/RemoteDataSourceModule.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/di/RemoteDataSourceModule.kt
similarity index 51%
rename from core/di/src/main/kotlin/com/danbam/indistraw/core/di/RemoteDataSourceModule.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/di/RemoteDataSourceModule.kt
index a3ea396f..2b89d555 100644
--- a/core/di/src/main/kotlin/com/danbam/indistraw/core/di/RemoteDataSourceModule.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/di/RemoteDataSourceModule.kt
@@ -1,25 +1,25 @@
-package com.danbam.indistraw.core.di
+package com.danbam.indistraw.core.remote.di
-import com.danbam.indistraw.core.data.remote.datasource.AccountRemoteDataSource
-import com.danbam.indistraw.core.data.remote.datasource.AccountRemoteDataSourceImpl
-import com.danbam.indistraw.core.data.remote.datasource.AddressRemoteDataSource
-import com.danbam.indistraw.core.data.remote.datasource.AddressRemoteDataSourceImpl
-import com.danbam.indistraw.core.data.remote.datasource.AuthRemoteDataSource
-import com.danbam.indistraw.core.data.remote.datasource.AuthRemoteDataSourceImpl
-import com.danbam.indistraw.core.data.remote.datasource.BannerRemoteDataSource
-import com.danbam.indistraw.core.data.remote.datasource.BannerRemoteDataSourceImpl
-import com.danbam.indistraw.core.data.remote.datasource.CrowdFundingRemoteDataSource
-import com.danbam.indistraw.core.data.remote.datasource.CrowdFundingRemoteDataSourceImpl
-import com.danbam.indistraw.core.data.remote.datasource.FileRemoteDataSource
-import com.danbam.indistraw.core.data.remote.datasource.FileRemoteDataSourceImpl
-import com.danbam.indistraw.core.data.remote.datasource.FundingRemoteDataSource
-import com.danbam.indistraw.core.data.remote.datasource.FundingRemoteDataSourceImpl
-import com.danbam.indistraw.core.data.remote.datasource.MovieRemoteDataSource
-import com.danbam.indistraw.core.data.remote.datasource.MovieRemoteDataSourceImpl
-import com.danbam.indistraw.core.data.remote.datasource.QRCodeRemoteDataSource
-import com.danbam.indistraw.core.data.remote.datasource.QRCodeRemoteDataSourceImpl
-import com.danbam.indistraw.core.data.remote.datasource.SearchRemoteDataSource
-import com.danbam.indistraw.core.data.remote.datasource.SearchRemoteDataSourceImpl
+import com.danbam.indistraw.core.remote.datasource.AccountRemoteDataSource
+import com.danbam.indistraw.core.remote.datasource.AccountRemoteDataSourceImpl
+import com.danbam.indistraw.core.remote.datasource.AddressRemoteDataSource
+import com.danbam.indistraw.core.remote.datasource.AddressRemoteDataSourceImpl
+import com.danbam.indistraw.core.remote.datasource.AuthRemoteDataSource
+import com.danbam.indistraw.core.remote.datasource.AuthRemoteDataSourceImpl
+import com.danbam.indistraw.core.remote.datasource.BannerRemoteDataSource
+import com.danbam.indistraw.core.remote.datasource.BannerRemoteDataSourceImpl
+import com.danbam.indistraw.core.remote.datasource.CrowdFundingRemoteDataSource
+import com.danbam.indistraw.core.remote.datasource.CrowdFundingRemoteDataSourceImpl
+import com.danbam.indistraw.core.remote.datasource.FileRemoteDataSource
+import com.danbam.indistraw.core.remote.datasource.FileRemoteDataSourceImpl
+import com.danbam.indistraw.core.remote.datasource.FundingRemoteDataSource
+import com.danbam.indistraw.core.remote.datasource.FundingRemoteDataSourceImpl
+import com.danbam.indistraw.core.remote.datasource.MovieRemoteDataSource
+import com.danbam.indistraw.core.remote.datasource.MovieRemoteDataSourceImpl
+import com.danbam.indistraw.core.remote.datasource.QRCodeRemoteDataSource
+import com.danbam.indistraw.core.remote.datasource.QRCodeRemoteDataSourceImpl
+import com.danbam.indistraw.core.remote.datasource.SearchRemoteDataSource
+import com.danbam.indistraw.core.remote.datasource.SearchRemoteDataSourceImpl
import dagger.Binds
import dagger.Module
import dagger.hilt.InstallIn
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/pagingsource/AddressPagingSource.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/pagingsource/AddressPagingSource.kt
similarity index 81%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/pagingsource/AddressPagingSource.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/pagingsource/AddressPagingSource.kt
index 469716ac..9052c688 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/pagingsource/AddressPagingSource.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/pagingsource/AddressPagingSource.kt
@@ -1,13 +1,13 @@
-package com.danbam.indistraw.core.data.remote.pagingsource
+package com.danbam.indistraw.core.remote.pagingsource
import androidx.paging.PagingSource
import androidx.paging.PagingState
-import com.danbam.indistraw.core.data.remote.api.AddressAPI
-import com.danbam.indistraw.core.data.remote.response.auth.AddressResponse
+import com.danbam.indistraw.core.remote.api.AddressAPI
+import com.danbam.indistraw.core.remote.response.auth.AddressResponse
import javax.inject.Inject
class AddressPagingSource(
- @Inject private val addressAPI: AddressAPI,
+ private val addressAPI: AddressAPI,
private val keyword: String,
) : PagingSource() {
override fun getRefreshKey(state: PagingState): Int? =
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/pagingsource/FundingPagingSource.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/pagingsource/FundingPagingSource.kt
similarity index 79%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/pagingsource/FundingPagingSource.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/pagingsource/FundingPagingSource.kt
index 298cae5f..7790b82e 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/pagingsource/FundingPagingSource.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/pagingsource/FundingPagingSource.kt
@@ -1,13 +1,13 @@
-package com.danbam.indistraw.core.data.remote.pagingsource
+package com.danbam.indistraw.core.remote.pagingsource
import androidx.paging.PagingSource
import androidx.paging.PagingState
-import com.danbam.indistraw.core.data.remote.api.CrowdFundingAPI
-import com.danbam.indistraw.core.data.remote.response.funding.FundingResponse
+import com.danbam.indistraw.core.remote.api.CrowdFundingAPI
+import com.danbam.indistraw.core.remote.response.funding.FundingResponse
import javax.inject.Inject
class FundingPagingSource(
- @Inject private val crowdFundingAPI: CrowdFundingAPI,
+ private val crowdFundingAPI: CrowdFundingAPI,
) : PagingSource() {
override fun getRefreshKey(state: PagingState): Int? =
state.anchorPosition?.let { anchorPosition ->
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/pagingsource/MoviePagingSource.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/pagingsource/MoviePagingSource.kt
similarity index 81%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/pagingsource/MoviePagingSource.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/pagingsource/MoviePagingSource.kt
index 4cd0ea20..bb0531e8 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/pagingsource/MoviePagingSource.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/pagingsource/MoviePagingSource.kt
@@ -1,13 +1,13 @@
-package com.danbam.indistraw.core.data.remote.pagingsource
+package com.danbam.indistraw.core.remote.pagingsource
import androidx.paging.PagingSource
import androidx.paging.PagingState
-import com.danbam.indistraw.core.data.remote.api.MovieAPI
-import com.danbam.indistraw.core.data.remote.response.movie.MovieResponse
+import com.danbam.indistraw.core.remote.api.MovieAPI
+import com.danbam.indistraw.core.remote.response.movie.MovieResponse
import javax.inject.Inject
class MoviePagingSource(
- @Inject private val movieAPI: MovieAPI,
+ private val movieAPI: MovieAPI,
private val genre: String? = null,
) : PagingSource() {
override fun getRefreshKey(state: PagingState): Int? =
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/pagingsource/SearchFundingPagingSource.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/pagingsource/SearchFundingPagingSource.kt
similarity index 81%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/pagingsource/SearchFundingPagingSource.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/pagingsource/SearchFundingPagingSource.kt
index b6967701..1bccafff 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/pagingsource/SearchFundingPagingSource.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/pagingsource/SearchFundingPagingSource.kt
@@ -1,13 +1,13 @@
-package com.danbam.indistraw.core.data.remote.pagingsource
+package com.danbam.indistraw.core.remote.pagingsource
import androidx.paging.PagingSource
import androidx.paging.PagingState
-import com.danbam.indistraw.core.data.remote.api.SearchAPI
-import com.danbam.indistraw.core.data.remote.response.funding.FundingResponse
+import com.danbam.indistraw.core.remote.api.SearchAPI
+import com.danbam.indistraw.core.remote.response.funding.FundingResponse
import javax.inject.Inject
class SearchFundingPagingSource(
- @Inject private val searchAPI: SearchAPI,
+ private val searchAPI: SearchAPI,
private val keyword: String,
) : PagingSource() {
override fun getRefreshKey(state: PagingState): Int? =
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/pagingsource/SearchMoviePagingSource.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/pagingsource/SearchMoviePagingSource.kt
similarity index 81%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/pagingsource/SearchMoviePagingSource.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/pagingsource/SearchMoviePagingSource.kt
index 0ccf55a0..5829ae5e 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/pagingsource/SearchMoviePagingSource.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/pagingsource/SearchMoviePagingSource.kt
@@ -1,13 +1,13 @@
-package com.danbam.indistraw.core.data.remote.pagingsource
+package com.danbam.indistraw.core.remote.pagingsource
import androidx.paging.PagingSource
import androidx.paging.PagingState
-import com.danbam.indistraw.core.data.remote.api.SearchAPI
-import com.danbam.indistraw.core.data.remote.response.movie.MovieResponse
+import com.danbam.indistraw.core.remote.api.SearchAPI
+import com.danbam.indistraw.core.remote.response.movie.MovieResponse
import javax.inject.Inject
class SearchMoviePagingSource(
- @Inject private val searchAPI: SearchAPI,
+ private val searchAPI: SearchAPI,
private val keyword: String,
) : PagingSource() {
override fun getRefreshKey(state: PagingState): Int? =
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/request/auth/ChangeAddressRequest.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/request/auth/ChangeAddressRequest.kt
similarity index 77%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/request/auth/ChangeAddressRequest.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/request/auth/ChangeAddressRequest.kt
index 11358a1a..8969ea41 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/request/auth/ChangeAddressRequest.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/request/auth/ChangeAddressRequest.kt
@@ -1,6 +1,6 @@
-package com.danbam.indistraw.core.data.remote.request.auth
+package com.danbam.indistraw.core.remote.request.auth
-import com.danbam.indistraw.core.param.auth.ChangeAddressParam
+import com.danbam.indistraw.core.domain.param.auth.ChangeAddressParam
import com.google.gson.annotations.SerializedName
data class ChangeAddressRequest(
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/request/auth/ChangePasswordRequest.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/request/auth/ChangePasswordRequest.kt
similarity index 72%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/request/auth/ChangePasswordRequest.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/request/auth/ChangePasswordRequest.kt
index 99be37f1..afbdf6ea 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/request/auth/ChangePasswordRequest.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/request/auth/ChangePasswordRequest.kt
@@ -1,6 +1,6 @@
-package com.danbam.indistraw.core.data.remote.request.auth
+package com.danbam.indistraw.core.remote.request.auth
-import com.danbam.indistraw.core.param.auth.ChangePasswordParam
+import com.danbam.indistraw.core.domain.param.auth.ChangePasswordParam
import com.google.gson.annotations.SerializedName
data class ChangePasswordRequest(
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/request/auth/CheckQRCodeRequest.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/request/auth/CheckQRCodeRequest.kt
similarity index 72%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/request/auth/CheckQRCodeRequest.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/request/auth/CheckQRCodeRequest.kt
index cfb7d007..fc4ad907 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/request/auth/CheckQRCodeRequest.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/request/auth/CheckQRCodeRequest.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.data.remote.request.auth
+package com.danbam.indistraw.core.remote.request.auth
import com.google.gson.annotations.SerializedName
import java.util.UUID
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/request/auth/EditProfileRequest.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/request/auth/EditProfileRequest.kt
similarity index 71%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/request/auth/EditProfileRequest.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/request/auth/EditProfileRequest.kt
index 059792cf..b8bdad12 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/request/auth/EditProfileRequest.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/request/auth/EditProfileRequest.kt
@@ -1,6 +1,6 @@
-package com.danbam.indistraw.core.data.remote.request.auth
+package com.danbam.indistraw.core.remote.request.auth
-import com.danbam.indistraw.core.param.auth.EditProfileParam
+import com.danbam.indistraw.core.domain.param.auth.EditProfileParam
import com.google.gson.annotations.SerializedName
data class EditProfileRequest(
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/request/auth/LoginRequest.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/request/auth/LoginRequest.kt
similarity index 66%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/request/auth/LoginRequest.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/request/auth/LoginRequest.kt
index e8a153a9..3cf3e7b9 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/request/auth/LoginRequest.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/request/auth/LoginRequest.kt
@@ -1,6 +1,6 @@
-package com.danbam.indistraw.core.data.remote.request.auth
+package com.danbam.indistraw.core.remote.request.auth
-import com.danbam.indistraw.core.param.auth.LoginParam
+import com.danbam.indistraw.core.domain.param.auth.LoginParam
import com.google.gson.annotations.SerializedName
data class LoginRequest(
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/request/auth/SignUpRequest.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/request/auth/SignUpRequest.kt
similarity index 81%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/request/auth/SignUpRequest.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/request/auth/SignUpRequest.kt
index 6900f4f8..f2d9a940 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/request/auth/SignUpRequest.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/request/auth/SignUpRequest.kt
@@ -1,6 +1,6 @@
-package com.danbam.indistraw.core.data.remote.request.auth
+package com.danbam.indistraw.core.remote.request.auth
-import com.danbam.indistraw.core.param.auth.SignUpParam
+import com.danbam.indistraw.core.domain.param.auth.SignUpParam
import com.google.gson.annotations.SerializedName
data class SignUpRequest(
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/request/funding/FundingCreateRequest.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/request/funding/FundingCreateRequest.kt
similarity index 92%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/request/funding/FundingCreateRequest.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/request/funding/FundingCreateRequest.kt
index 4fa9ba9d..83fcd086 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/request/funding/FundingCreateRequest.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/request/funding/FundingCreateRequest.kt
@@ -1,6 +1,6 @@
-package com.danbam.indistraw.core.data.remote.request.funding
+package com.danbam.indistraw.core.remote.request.funding
-import com.danbam.indistraw.core.param.funding.FundingCreateParam
+import com.danbam.indistraw.core.domain.param.funding.FundingCreateParam
import com.google.gson.annotations.SerializedName
data class FundingCreateRequest(
@@ -37,7 +37,7 @@ data class FundingCreateRequest(
val description: String,
@SerializedName("price")
val price: Long,
- @SerializedName("imageUrl")
+ @SerializedName("imageList")
val imageList: List,
@SerializedName("isReal")
val isReal: Boolean,
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/request/funding/FundingRequest.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/request/funding/FundingRequest.kt
similarity index 75%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/request/funding/FundingRequest.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/request/funding/FundingRequest.kt
index 3fdae0cd..745eecde 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/request/funding/FundingRequest.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/request/funding/FundingRequest.kt
@@ -1,6 +1,6 @@
-package com.danbam.indistraw.core.data.remote.request.funding
+package com.danbam.indistraw.core.remote.request.funding
-import com.danbam.indistraw.core.param.funding.FundingParam
+import com.danbam.indistraw.core.domain.param.funding.FundingParam
import com.google.gson.annotations.SerializedName
data class FundingRequest(
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/request/movie/MovieCreateRequest.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/request/movie/MovieCreateRequest.kt
similarity index 87%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/request/movie/MovieCreateRequest.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/request/movie/MovieCreateRequest.kt
index c078cdd0..6abc521f 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/request/movie/MovieCreateRequest.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/request/movie/MovieCreateRequest.kt
@@ -1,6 +1,6 @@
-package com.danbam.indistraw.core.data.remote.request.movie
+package com.danbam.indistraw.core.remote.request.movie
-import com.danbam.indistraw.core.param.movie.MovieCreateParam
+import com.danbam.indistraw.core.domain.param.movie.MovieCreateParam
import com.google.gson.annotations.SerializedName
data class MovieCreateRequest(
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/request/movie/MovieHistoryRequest.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/request/movie/MovieHistoryRequest.kt
similarity index 71%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/request/movie/MovieHistoryRequest.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/request/movie/MovieHistoryRequest.kt
index bb364e0d..c00fcafd 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/request/movie/MovieHistoryRequest.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/request/movie/MovieHistoryRequest.kt
@@ -1,6 +1,6 @@
-package com.danbam.indistraw.core.data.remote.request.movie
+package com.danbam.indistraw.core.remote.request.movie
-import com.danbam.indistraw.core.param.movie.MovieHistoryParam
+import com.danbam.indistraw.core.domain.param.movie.MovieHistoryParam
import com.google.gson.annotations.SerializedName
data class MovieHistoryRequest(
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/request/movie/MoviePeopleRequest.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/request/movie/MoviePeopleRequest.kt
similarity index 70%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/request/movie/MoviePeopleRequest.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/request/movie/MoviePeopleRequest.kt
index 329fdd9a..04916a35 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/request/movie/MoviePeopleRequest.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/request/movie/MoviePeopleRequest.kt
@@ -1,6 +1,6 @@
-package com.danbam.indistraw.core.data.remote.request.movie
+package com.danbam.indistraw.core.remote.request.movie
-import com.danbam.indistraw.core.param.movie.MoviePeopleParam
+import com.danbam.indistraw.core.domain.param.movie.MoviePeopleParam
import com.google.gson.annotations.SerializedName
data class MoviePeopleRequest(
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/auth/AddressResponse.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/auth/AddressResponse.kt
similarity index 61%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/auth/AddressResponse.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/auth/AddressResponse.kt
index a601cf88..c58211cb 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/auth/AddressResponse.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/auth/AddressResponse.kt
@@ -1,15 +1,15 @@
-package com.danbam.indistraw.core.data.remote.response.auth
+package com.danbam.indistraw.core.remote.response.auth
import com.danbam.indistraw.core.domain.entity.auth.AddressEntity
import com.google.gson.annotations.SerializedName
data class AddressResponse(
@SerializedName("results")
- val results: com.danbam.indistraw.core.data.remote.response.auth.AddressResponse.Results,
+ val results: Results,
) {
data class Results(
@SerializedName("juso")
- val juso: List,
+ val juso: List,
) {
data class Juso(
@SerializedName("zipNo")
@@ -22,7 +22,7 @@ data class AddressResponse(
}
}
-fun com.danbam.indistraw.core.data.remote.response.auth.AddressResponse.Results.Juso.toEntity() = AddressEntity(
+fun AddressResponse.Results.Juso.toEntity() = AddressEntity(
zipcode = zipNo,
streetAddress = roadAddr,
buildName = buildName
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/auth/GetQRCodeResponse.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/auth/GetQRCodeResponse.kt
similarity index 71%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/auth/GetQRCodeResponse.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/auth/GetQRCodeResponse.kt
index 8c997d69..09cf95bd 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/auth/GetQRCodeResponse.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/auth/GetQRCodeResponse.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.data.remote.response.auth
+package com.danbam.indistraw.core.remote.response.auth
import com.google.gson.annotations.SerializedName
import java.util.UUID
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/auth/LoginResponse.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/auth/LoginResponse.kt
similarity index 91%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/auth/LoginResponse.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/auth/LoginResponse.kt
index 9544f22a..40f238d9 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/auth/LoginResponse.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/auth/LoginResponse.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.data.remote.response.auth
+package com.danbam.indistraw.core.remote.response.auth
import com.danbam.indistraw.core.domain.entity.auth.LoginEntity
import com.google.gson.annotations.SerializedName
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/auth/ProfileResponse.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/auth/ProfileResponse.kt
similarity index 91%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/auth/ProfileResponse.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/auth/ProfileResponse.kt
index 4e81936c..d6ebf797 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/auth/ProfileResponse.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/auth/ProfileResponse.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.data.remote.response.auth
+package com.danbam.indistraw.core.remote.response.auth
import com.danbam.indistraw.core.domain.entity.auth.ProfileEntity
import com.google.gson.annotations.SerializedName
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/banner/BannerResponse.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/banner/BannerResponse.kt
similarity index 64%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/banner/BannerResponse.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/banner/BannerResponse.kt
index 9104a757..459535a2 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/banner/BannerResponse.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/banner/BannerResponse.kt
@@ -1,6 +1,6 @@
-package com.danbam.indistraw.core.data.remote.response.banner
+package com.danbam.indistraw.core.remote.response.banner
-import com.danbam.indistraw.core.entity.banner.BannerEntity
+import com.danbam.indistraw.core.domain.entity.banner.BannerEntity
import com.google.gson.annotations.SerializedName
data class BannerResponse(
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/file/FileResponse.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/file/FileResponse.kt
similarity index 67%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/file/FileResponse.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/file/FileResponse.kt
index 8c93b423..f36f42f8 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/file/FileResponse.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/file/FileResponse.kt
@@ -1,6 +1,6 @@
-package com.danbam.indistraw.core.data.remote.response.file
+package com.danbam.indistraw.core.remote.response.file
-import com.danbam.indistraw.core.entity.file.FileEntity
+import com.danbam.indistraw.core.domain.entity.file.FileEntity
import com.google.gson.annotations.SerializedName
data class FileResponse(
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/funding/FindIdResponse.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/funding/FindIdResponse.kt
similarity index 80%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/funding/FindIdResponse.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/funding/FindIdResponse.kt
index 4382abf8..990e5bbd 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/funding/FindIdResponse.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/funding/FindIdResponse.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.data.remote.response.funding
+package com.danbam.indistraw.core.remote.response.funding
import com.danbam.indistraw.core.domain.entity.auth.FindIdEntity
import com.google.gson.annotations.SerializedName
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/funding/FundingDetailResponse.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/funding/FundingDetailResponse.kt
similarity index 95%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/funding/FundingDetailResponse.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/funding/FundingDetailResponse.kt
index 67167f3b..969d19d5 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/funding/FundingDetailResponse.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/funding/FundingDetailResponse.kt
@@ -1,6 +1,6 @@
-package com.danbam.indistraw.core.data.remote.response.funding
+package com.danbam.indistraw.core.remote.response.funding
-import com.danbam.indistraw.core.entity.funding.FundingDetailEntity
+import com.danbam.indistraw.core.domain.entity.funding.FundingDetailEntity
import com.google.gson.annotations.SerializedName
import java.util.UUID
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/funding/FundingPageResponse.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/funding/FundingPageResponse.kt
similarity index 76%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/funding/FundingPageResponse.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/funding/FundingPageResponse.kt
index de0ab910..58da4087 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/funding/FundingPageResponse.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/funding/FundingPageResponse.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.data.remote.response.funding
+package com.danbam.indistraw.core.remote.response.funding
import com.google.gson.annotations.SerializedName
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/funding/FundingResponse.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/funding/FundingResponse.kt
similarity index 82%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/funding/FundingResponse.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/funding/FundingResponse.kt
index c389d8ad..ed96cd6e 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/funding/FundingResponse.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/funding/FundingResponse.kt
@@ -1,6 +1,6 @@
-package com.danbam.indistraw.core.data.remote.response.funding
+package com.danbam.indistraw.core.remote.response.funding
-import com.danbam.indistraw.core.entity.funding.FundingEntity
+import com.danbam.indistraw.core.domain.entity.funding.FundingEntity
import com.google.gson.annotations.SerializedName
data class FundingResponse(
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/funding/MyFundingResponse.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/funding/MyFundingResponse.kt
similarity index 95%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/funding/MyFundingResponse.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/funding/MyFundingResponse.kt
index e4827968..4f821b1c 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/funding/MyFundingResponse.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/funding/MyFundingResponse.kt
@@ -1,6 +1,6 @@
-package com.danbam.indistraw.core.data.remote.response.funding
+package com.danbam.indistraw.core.remote.response.funding
-import com.danbam.indistraw.core.entity.funding.MyFundingEntity
+import com.danbam.indistraw.core.domain.entity.funding.MyFundingEntity
import com.google.gson.annotations.SerializedName
import java.util.UUID
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/funding/ReceiptResponse.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/funding/ReceiptResponse.kt
similarity index 69%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/funding/ReceiptResponse.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/funding/ReceiptResponse.kt
index dd63c5ad..522c7021 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/funding/ReceiptResponse.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/funding/ReceiptResponse.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.data.remote.response.funding
+package com.danbam.indistraw.core.remote.response.funding
import com.google.gson.annotations.SerializedName
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/movie/AddMoviePeopleResponse.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/movie/AddMoviePeopleResponse.kt
similarity index 69%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/movie/AddMoviePeopleResponse.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/movie/AddMoviePeopleResponse.kt
index 31c2b42a..1f53313e 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/movie/AddMoviePeopleResponse.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/movie/AddMoviePeopleResponse.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.data.remote.response.movie
+package com.danbam.indistraw.core.remote.response.movie
import com.google.gson.annotations.SerializedName
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/movie/DetailMovieHistoryResponse.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/movie/DetailMovieHistoryResponse.kt
similarity index 65%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/movie/DetailMovieHistoryResponse.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/movie/DetailMovieHistoryResponse.kt
index 92ffa50a..8fa36c1b 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/movie/DetailMovieHistoryResponse.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/movie/DetailMovieHistoryResponse.kt
@@ -1,6 +1,6 @@
-package com.danbam.indistraw.core.data.remote.response.movie
+package com.danbam.indistraw.core.remote.response.movie
-import com.danbam.indistraw.core.entity.movie.DetailMovieHistoryEntity
+import com.danbam.indistraw.core.domain.entity.movie.DetailMovieHistoryEntity
import com.google.gson.annotations.SerializedName
data class DetailMovieHistoryResponse(
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/movie/MovieDetailResponse.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/movie/MovieDetailResponse.kt
similarity index 88%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/movie/MovieDetailResponse.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/movie/MovieDetailResponse.kt
index 50b9b6f0..4013d5d0 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/movie/MovieDetailResponse.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/movie/MovieDetailResponse.kt
@@ -1,6 +1,6 @@
-package com.danbam.indistraw.core.data.remote.response.movie
+package com.danbam.indistraw.core.remote.response.movie
-import com.danbam.indistraw.core.entity.movie.MovieDetailEntity
+import com.danbam.indistraw.core.domain.entity.movie.MovieDetailEntity
import com.google.gson.annotations.SerializedName
data class MovieDetailResponse(
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/movie/MovieHistoryResponse.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/movie/MovieHistoryResponse.kt
similarity index 79%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/movie/MovieHistoryResponse.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/movie/MovieHistoryResponse.kt
index c154acf4..f1d01eba 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/movie/MovieHistoryResponse.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/movie/MovieHistoryResponse.kt
@@ -1,6 +1,6 @@
-package com.danbam.indistraw.core.data.remote.response.movie
+package com.danbam.indistraw.core.remote.response.movie
-import com.danbam.indistraw.core.entity.movie.MovieHistoryEntity
+import com.danbam.indistraw.core.domain.entity.movie.MovieHistoryEntity
import com.google.gson.annotations.SerializedName
data class MovieHistoryResponse(
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/movie/MoviePageResponse.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/movie/MoviePageResponse.kt
similarity index 76%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/movie/MoviePageResponse.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/movie/MoviePageResponse.kt
index 1b559e28..fa2f3e5e 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/movie/MoviePageResponse.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/movie/MoviePageResponse.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.data.remote.response.movie
+package com.danbam.indistraw.core.remote.response.movie
import com.google.gson.annotations.SerializedName
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/movie/MoviePeopleDetailResponse.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/movie/MoviePeopleDetailResponse.kt
similarity index 79%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/movie/MoviePeopleDetailResponse.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/movie/MoviePeopleDetailResponse.kt
index cb037010..c9236741 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/movie/MoviePeopleDetailResponse.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/movie/MoviePeopleDetailResponse.kt
@@ -1,6 +1,6 @@
-package com.danbam.indistraw.core.data.remote.response.movie
+package com.danbam.indistraw.core.remote.response.movie
-import com.danbam.indistraw.core.entity.movie.MoviePeopleDetailEntity
+import com.danbam.indistraw.core.domain.entity.movie.MoviePeopleDetailEntity
import com.google.gson.annotations.SerializedName
data class MoviePeopleDetailResponse(
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/movie/MoviePeopleResponse.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/movie/MoviePeopleResponse.kt
similarity index 74%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/movie/MoviePeopleResponse.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/movie/MoviePeopleResponse.kt
index 2456fb69..57daca44 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/movie/MoviePeopleResponse.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/movie/MoviePeopleResponse.kt
@@ -1,6 +1,6 @@
-package com.danbam.indistraw.core.data.remote.response.movie
+package com.danbam.indistraw.core.remote.response.movie
-import com.danbam.indistraw.core.entity.movie.MoviePeopleEntity
+import com.danbam.indistraw.core.domain.entity.movie.MoviePeopleEntity
import com.google.gson.annotations.SerializedName
data class MoviePeopleResponse(
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/movie/MovieResponse.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/movie/MovieResponse.kt
similarity index 71%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/movie/MovieResponse.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/movie/MovieResponse.kt
index 5c2141d4..2a34b98c 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/movie/MovieResponse.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/movie/MovieResponse.kt
@@ -1,6 +1,6 @@
-package com.danbam.indistraw.core.data.remote.response.movie
+package com.danbam.indistraw.core.remote.response.movie
-import com.danbam.indistraw.core.entity.movie.MovieEntity
+import com.danbam.indistraw.core.domain.entity.movie.MovieEntity
import com.google.gson.annotations.SerializedName
data class MovieResponse(
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/search/PopularTagResponse.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/search/PopularTagResponse.kt
similarity index 70%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/search/PopularTagResponse.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/search/PopularTagResponse.kt
index fa1b947f..32d76c26 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/response/search/PopularTagResponse.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/response/search/PopularTagResponse.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.data.remote.response.search
+package com.danbam.indistraw.core.remote.response.search
import com.google.gson.annotations.SerializedName
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/util/EndPoint.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/util/EndPoint.kt
similarity index 88%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/util/EndPoint.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/util/EndPoint.kt
index 71d3eff1..d1e2b447 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/util/EndPoint.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/util/EndPoint.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.data.remote.util
+package com.danbam.indistraw.core.remote.util
class EndPoint {
companion object {
diff --git a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/util/IndiStrawApiCall.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/util/IndiStrawApiCall.kt
similarity index 97%
rename from core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/util/IndiStrawApiCall.kt
rename to core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/util/IndiStrawApiCall.kt
index fe52c167..beb2ef63 100644
--- a/core/data/src/main/kotlin/com/danbam/indistraw/core/data/remote/util/IndiStrawApiCall.kt
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/util/IndiStrawApiCall.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.data.remote.util
+package com.danbam.indistraw.core.remote.util
import com.danbam.indistraw.core.domain.exception.ConflictDataException
import com.danbam.indistraw.core.domain.exception.ExpiredTokenException
diff --git a/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/util/TimeUtil.kt b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/util/TimeUtil.kt
new file mode 100644
index 00000000..d4ae09e5
--- /dev/null
+++ b/core/remote/src/main/kotlin/com/danbam/indistraw/core/remote/util/TimeUtil.kt
@@ -0,0 +1,6 @@
+package com.danbam.indistraw.core.remote.util
+
+import java.time.LocalDateTime
+import java.time.ZoneId
+
+fun LocalDateTime.default(): LocalDateTime = LocalDateTime.now(ZoneId.of("Asia/Seoul"))
\ No newline at end of file
diff --git a/core/ui/.gitignore b/core/ui/.gitignore
new file mode 100644
index 00000000..42afabfd
--- /dev/null
+++ b/core/ui/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/core/ui/build.gradle.kts b/core/ui/build.gradle.kts
new file mode 100644
index 00000000..451a8b1a
--- /dev/null
+++ b/core/ui/build.gradle.kts
@@ -0,0 +1,40 @@
+import com.android.build.gradle.internal.cxx.configure.gradleLocalProperties
+
+plugins {
+ id("indistraw-core")
+}
+
+android {
+ namespace = "com.danbam.indistraw.core.ui"
+ defaultConfig {
+ buildConfigField(
+ "String",
+ "VIDEO_PRE_PATH",
+ gradleLocalProperties(rootDir).getProperty("VIDEO_PRE_PATH")
+ )
+ buildConfigField(
+ "String",
+ "PAY_KEY",
+ gradleLocalProperties(rootDir).getProperty("PAY_KEY")
+ )
+ }
+ buildFeatures {
+ compose = true
+ }
+ composeOptions {
+ kotlinCompilerExtensionVersion = libs.versions.compose.get()
+ }
+}
+
+dependencies {
+ implementation(project(":core:domain"))
+ implementation(project(":core:design-system"))
+ implementation(libs.bundles.compose)
+ implementation(libs.coil)
+ implementation(libs.bundles.exoplayer)
+ implementation(libs.bundles.camera)
+ implementation(libs.bundles.barcode)
+ implementation(libs.bundles.tv)
+ implementation(libs.bundles.retrofit)
+ implementation(libs.bootpay)
+}
\ No newline at end of file
diff --git a/core/ui/src/main/AndroidManifest.xml b/core/ui/src/main/AndroidManifest.xml
new file mode 100644
index 00000000..a5918e68
--- /dev/null
+++ b/core/ui/src/main/AndroidManifest.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/util/bootpay/BootPay.kt b/core/ui/src/main/kotlin/com/danbam/indistraw/core/ui/bootpay/BootPay.kt
similarity index 94%
rename from core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/util/bootpay/BootPay.kt
rename to core/ui/src/main/kotlin/com/danbam/indistraw/core/ui/bootpay/BootPay.kt
index e2362369..8dada7a6 100644
--- a/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/util/bootpay/BootPay.kt
+++ b/core/ui/src/main/kotlin/com/danbam/indistraw/core/ui/bootpay/BootPay.kt
@@ -1,8 +1,8 @@
-package com.danbam.indistraw.core.design_system.util.bootpay
+package com.danbam.indistraw.core.ui.bootpay
import android.app.Activity
import android.content.Context
-import com.danbam.indistraw.core.design_system.BuildConfig
+import com.danbam.indistraw.core.ui.BuildConfig
import com.google.gson.Gson
import com.google.gson.annotations.SerializedName
import kr.co.bootpay.android.Bootpay
diff --git a/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/component/Item.kt b/core/ui/src/main/kotlin/com/danbam/indistraw/core/ui/component/Item.kt
similarity index 93%
rename from core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/component/Item.kt
rename to core/ui/src/main/kotlin/com/danbam/indistraw/core/ui/component/Item.kt
index 6f124021..c5bfb95b 100644
--- a/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/component/Item.kt
+++ b/core/ui/src/main/kotlin/com/danbam/indistraw/core/ui/component/Item.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.design_system.component
+package com.danbam.indistraw.core.ui.component
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.ExperimentalFoundationApi
@@ -34,12 +34,21 @@ import com.danbam.indistraw.core.design_system.IndiStrawTheme
import com.danbam.indistraw.core.design_system.R
import com.danbam.indistraw.core.design_system.attribute.IndiStrawIcon
import com.danbam.indistraw.core.design_system.attribute.IndiStrawIconList
+import com.danbam.indistraw.core.design_system.component.ExampleTextMedium
+import com.danbam.indistraw.core.design_system.component.HeadLineBold
+import com.danbam.indistraw.core.design_system.component.ImageButton
+import com.danbam.indistraw.core.design_system.component.IndiStrawButton
+import com.danbam.indistraw.core.design_system.component.IndiStrawProgress
+import com.danbam.indistraw.core.design_system.component.PriceRegular
+import com.danbam.indistraw.core.design_system.component.Shape
+import com.danbam.indistraw.core.design_system.component.TitleRegular
+import com.danbam.indistraw.core.design_system.component.TitleSemiBold
import com.danbam.indistraw.core.design_system.util.androidx.indiStrawClickable
import com.danbam.indistraw.core.design_system.util.internal.toCommaString
-import com.danbam.indistraw.core.entity.funding.FundingDetailEntity
-import com.danbam.indistraw.core.entity.funding.FundingEntity
-import com.danbam.indistraw.core.entity.funding.MyFundingEntity
-import com.danbam.indistraw.core.entity.movie.MovieEntity
+import com.danbam.indistraw.core.domain.entity.funding.FundingDetailEntity
+import com.danbam.indistraw.core.domain.entity.funding.FundingEntity
+import com.danbam.indistraw.core.domain.entity.funding.MyFundingEntity
+import com.danbam.indistraw.core.domain.entity.movie.MovieEntity
sealed class RewardType {
object Default : RewardType()
@@ -203,7 +212,9 @@ fun RewardItem(
}
is RewardType.Expand -> {
- val state = rememberPagerState()
+ val state = rememberPagerState {
+ item.imageList.size
+ }
Box(
modifier = Modifier
.padding(horizontal = 15.dp)
@@ -225,7 +236,7 @@ fun RewardItem(
) {
Spacer(modifier = Modifier.height(16.dp))
Box {
- HorizontalPager(pageCount = item.imageList.size, state = state) {
+ HorizontalPager(state = state) {
AsyncImage(
modifier = Modifier
.clip(IndiStrawTheme.shapes.defaultRounded)
@@ -355,7 +366,9 @@ fun MyRewardItem(
}
is RewardType.Expand -> {
- val state = rememberPagerState()
+ val state = rememberPagerState {
+ item.imageList.size
+ }
Box(
modifier = Modifier
.padding(horizontal = 15.dp)
@@ -364,7 +377,7 @@ fun MyRewardItem(
Column {
Spacer(modifier = Modifier.height(16.dp))
Box {
- HorizontalPager(pageCount = item.imageList.size, state = state) {
+ HorizontalPager(state = state) {
AsyncImage(
modifier = Modifier
.clip(IndiStrawTheme.shapes.defaultRounded)
diff --git a/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/component/List.kt b/core/ui/src/main/kotlin/com/danbam/indistraw/core/ui/component/List.kt
similarity index 96%
rename from core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/component/List.kt
rename to core/ui/src/main/kotlin/com/danbam/indistraw/core/ui/component/List.kt
index 5646aab1..c75f2188 100644
--- a/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/component/List.kt
+++ b/core/ui/src/main/kotlin/com/danbam/indistraw/core/ui/component/List.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.design_system.component
+package com.danbam.indistraw.core.ui.component
import android.net.Uri
import androidx.compose.foundation.BorderStroke
@@ -25,12 +25,14 @@ import com.danbam.indistraw.core.design_system.IndiStrawTheme
import com.danbam.indistraw.core.design_system.R
import com.danbam.indistraw.core.design_system.attribute.IndiStrawIcon
import com.danbam.indistraw.core.design_system.attribute.IndiStrawIconList
+import com.danbam.indistraw.core.design_system.component.TitleRegular
+import com.danbam.indistraw.core.design_system.component.TitleSemiBold
import com.danbam.indistraw.core.design_system.util.androidx.LaunchType
import com.danbam.indistraw.core.design_system.util.androidx.RemoveOverScrollLazyRow
import com.danbam.indistraw.core.design_system.util.androidx.indiStrawClickable
import com.danbam.indistraw.core.design_system.util.androidx.rememberLauncher
import com.danbam.indistraw.core.design_system.util.androidx.typedLaunch
-import com.danbam.indistraw.core.entity.movie.MoviePeopleEntity
+import com.danbam.indistraw.core.domain.entity.movie.MoviePeopleEntity
@Composable
fun AddImageList(
diff --git a/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/component/TabLayout.kt b/core/ui/src/main/kotlin/com/danbam/indistraw/core/ui/component/TabLayout.kt
similarity index 95%
rename from core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/component/TabLayout.kt
rename to core/ui/src/main/kotlin/com/danbam/indistraw/core/ui/component/TabLayout.kt
index e7c2c2a3..577b8b73 100644
--- a/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/component/TabLayout.kt
+++ b/core/ui/src/main/kotlin/com/danbam/indistraw/core/ui/component/TabLayout.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.design_system.component
+package com.danbam.indistraw.core.ui.component
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
@@ -33,11 +33,14 @@ import androidx.tv.material3.ExperimentalTvMaterial3Api
import androidx.tv.material3.Surface
import com.danbam.indistraw.core.design_system.IndiStrawTheme
import com.danbam.indistraw.core.design_system.R
+import com.danbam.indistraw.core.design_system.component.ExampleTextMedium
+import com.danbam.indistraw.core.design_system.component.TitleRegular
+import com.danbam.indistraw.core.design_system.component.TitleSemiBold
import com.danbam.indistraw.core.design_system.util.androidx.RemoveOverScrollLazyRow
import com.danbam.indistraw.core.design_system.util.androidx.indiStrawClickable
import com.danbam.indistraw.core.design_system.util.internal.toDp
-import com.danbam.indistraw.core.entity.funding.FundingEntity
-import com.danbam.indistraw.core.entity.movie.MovieEntity
+import com.danbam.indistraw.core.domain.entity.funding.FundingEntity
+import com.danbam.indistraw.core.domain.entity.movie.MovieEntity
import kotlinx.coroutines.NonCancellable
import kotlinx.coroutines.withContext
diff --git a/core/ui/src/main/kotlin/com/danbam/indistraw/core/ui/exoplayer/ExoPlayer.kt b/core/ui/src/main/kotlin/com/danbam/indistraw/core/ui/exoplayer/ExoPlayer.kt
new file mode 100644
index 00000000..6cfb2d29
--- /dev/null
+++ b/core/ui/src/main/kotlin/com/danbam/indistraw/core/ui/exoplayer/ExoPlayer.kt
@@ -0,0 +1,185 @@
+package com.danbam.indistraw.core.ui.exoplayer
+
+import android.content.pm.ActivityInfo
+import android.view.ViewGroup.LayoutParams.MATCH_PARENT
+import android.widget.FrameLayout
+import androidx.activity.compose.BackHandler
+import androidx.compose.foundation.focusable
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.DisposableEffect
+import androidx.compose.runtime.LaunchedEffect
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.remember
+import androidx.compose.runtime.setValue
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.input.key.onPreviewKeyEvent
+import androidx.compose.ui.platform.LocalContext
+import androidx.compose.ui.viewinterop.AndroidView
+import androidx.media3.common.C
+import androidx.media3.common.MediaItem
+import androidx.media3.common.Player
+import androidx.media3.common.Player.STATE_ENDED
+import androidx.media3.common.util.UnstableApi
+import androidx.media3.exoplayer.ExoPlayer
+import androidx.media3.ui.AspectRatioFrameLayout
+import androidx.media3.ui.PlayerView
+import com.danbam.indistraw.core.ui.BuildConfig
+import com.danbam.indistraw.core.design_system.util.androidx.HideSystemUI
+import com.danbam.indistraw.core.design_system.util.androidx.LockScreenOrientation
+import com.danbam.indistraw.core.design_system.util.androidx.indiStrawClickable
+import kotlinx.coroutines.delay
+
+@Composable
+@androidx.annotation.OptIn(UnstableApi::class)
+fun IndiStrawPlayer(
+ modifier: Modifier = Modifier,
+ movieUrl: String,
+ movieName: String,
+ position: Float,
+ isMobile: Boolean,
+ isVertical: Boolean,
+ onPIP: () -> Unit,
+ onDispose: (Long) -> Unit
+) {
+ HideSystemUI()
+ val context = LocalContext.current
+ val exoPlayer = remember {
+ ExoPlayer.Builder(context)
+ .setSeekBackIncrementMs(5000)
+ .setSeekForwardIncrementMs(5000)
+ .build()
+ .apply {
+ val mediaItem = MediaItem.Builder()
+ .setUri("${BuildConfig.VIDEO_PRE_PATH}$movieUrl")
+ .build()
+ setMediaItem(mediaItem)
+ videoScalingMode = C.VIDEO_SCALING_MODE_SCALE_TO_FIT
+ prepare()
+ playWhenReady = true
+ seekTo((position * 1000).toLong())
+ }
+ }
+ var isVisible by remember { mutableStateOf(false) }
+ var isPlaying by remember { mutableStateOf(exoPlayer.isPlaying) }
+ var isLock by remember { mutableStateOf(false) }
+
+ if (!isVertical && isMobile) {
+ LockScreenOrientation(orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
+ }
+
+ BackHandler {
+ if (isVisible) {
+ isVisible = false
+ } else {
+ onDispose(exoPlayer.currentPosition)
+ }
+ }
+
+ LaunchedEffect(isVisible) {
+ if (isVisible && exoPlayer.playbackState != STATE_ENDED) {
+ delay(if (isMobile) 1500L else 5000L)
+ isVisible = false
+ }
+ }
+
+ Box(modifier = modifier
+ .fillMaxSize()
+ .focusable()
+ .onPreviewKeyEvent {
+ it.nativeKeyEvent.let {
+ exoPlayer.detectKeyEvent(event = it, onShowController = {
+ isVisible = true
+ }, onFinish = {
+ if (isVisible) {
+ isVisible = false
+ } else {
+ onDispose(exoPlayer.currentPosition)
+ }
+ })
+ }
+ }
+ .indiStrawClickable {
+ isVisible = !isVisible
+ }) {
+ DisposableEffect(
+ AndroidView(
+ factory = {
+ PlayerView(context).apply {
+ player = exoPlayer
+ resizeMode = AspectRatioFrameLayout.RESIZE_MODE_FIT
+ useController = false
+ layoutParams = FrameLayout.LayoutParams(MATCH_PARENT, MATCH_PARENT)
+ }
+ }
+ )
+ ) {
+ val listener = object : Player.Listener {
+ override fun onEvents(player: Player, events: Player.Events) {
+ super.onEvents(player, events)
+ isPlaying = player.isPlaying
+ }
+ }
+ exoPlayer.addListener(listener)
+ onDispose {
+ exoPlayer.removeListener(listener)
+ exoPlayer.release()
+ }
+ }
+
+ if (isMobile) {
+ IndiStrawMobileController(
+ exoPlayer = exoPlayer,
+ movieName = movieName,
+ isVisible = isVisible,
+ isLock = isLock,
+ isPlaying = isPlaying,
+ onBack = { exoPlayer.seekBack() },
+ onForward = { exoPlayer.seekForward() },
+ onPause = {
+ when {
+ isPlaying -> {
+ exoPlayer.pause()
+ }
+
+ !isPlaying -> {
+ exoPlayer.play()
+ }
+ }
+ },
+ onFinish = { onDispose(exoPlayer.currentPosition) },
+ onLock = { isLock = !isLock },
+ onPIP = {
+ isVisible = false
+ onPIP()
+ },
+ onTouchPlayer = { isVisible = !isVisible },
+ onSeekChanged = { exoPlayer.seekTo(it.toLong()) }
+ )
+ } else {
+ IndiStrawTvController(
+ exoPlayer = exoPlayer,
+ movieName = movieName,
+ isVisible = isVisible,
+ isPlaying = isPlaying,
+ onBack = { exoPlayer.seekBack() },
+ onForward = { exoPlayer.seekForward() },
+ onPause = {
+ when {
+ isPlaying -> {
+ exoPlayer.pause()
+ }
+
+ !isPlaying -> {
+ exoPlayer.play()
+ }
+ }
+ },
+ onFinish = { onDispose(exoPlayer.currentPosition) },
+ onSeekChanged = { exoPlayer.seekTo(it.toLong()) }
+ )
+ }
+ }
+}
\ No newline at end of file
diff --git a/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/util/google/ExoPlayerUtil.kt b/core/ui/src/main/kotlin/com/danbam/indistraw/core/ui/exoplayer/ExoPlayerUtil.kt
similarity index 60%
rename from core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/util/google/ExoPlayerUtil.kt
rename to core/ui/src/main/kotlin/com/danbam/indistraw/core/ui/exoplayer/ExoPlayerUtil.kt
index 8c85c53f..b8db8b05 100644
--- a/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/util/google/ExoPlayerUtil.kt
+++ b/core/ui/src/main/kotlin/com/danbam/indistraw/core/ui/exoplayer/ExoPlayerUtil.kt
@@ -1,36 +1,45 @@
-package com.danbam.indistraw.core.design_system.util.google
+package com.danbam.indistraw.core.ui.exoplayer
import android.view.KeyEvent
-import com.google.android.exoplayer2.C
-import com.google.android.exoplayer2.ExoPlayer
-import com.google.android.exoplayer2.Player
+import androidx.media3.common.C
+import androidx.media3.common.Player.STATE_ENDED
+import androidx.media3.common.Player.STATE_IDLE
+import androidx.media3.exoplayer.ExoPlayer
-fun ExoPlayer.detectKeyEvent(event: KeyEvent): Boolean {
+fun ExoPlayer.detectKeyEvent(
+ event: KeyEvent,
+ onShowController: () -> Unit,
+ onFinish: (Long) -> Unit
+): Boolean {
val keyCode: Int = event.keyCode
if (event.action == KeyEvent.ACTION_DOWN) {
if (keyCode == KeyEvent.KEYCODE_MEDIA_FAST_FORWARD) {
- if (playbackState != Player.STATE_ENDED) {
+ if (playbackState != STATE_ENDED) {
seekForward()
}
} else if (keyCode == KeyEvent.KEYCODE_MEDIA_REWIND) {
seekBack()
} else if (event.repeatCount == 0) {
+ if (keyCode != KeyEvent.KEYCODE_BACK) {
+ onShowController()
+ }
when (keyCode) {
KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE, KeyEvent.KEYCODE_HEADSETHOOK -> dispatchPlayPause()
KeyEvent.KEYCODE_MEDIA_PLAY -> dispatchPlay()
KeyEvent.KEYCODE_MEDIA_PAUSE -> pause()
KeyEvent.KEYCODE_MEDIA_NEXT -> seekToNext()
KeyEvent.KEYCODE_MEDIA_PREVIOUS -> seekToPrevious()
+ KeyEvent.KEYCODE_BACK -> onFinish(currentPosition)
else -> {}
}
}
}
- return true
+ return false
}
private fun ExoPlayer.dispatchPlayPause() {
val state = playbackState
- if (state == Player.STATE_IDLE || state == Player.STATE_ENDED || !playWhenReady) {
+ if (state == STATE_IDLE || state == STATE_ENDED || !playWhenReady) {
dispatchPlay()
} else {
pause()
@@ -39,9 +48,9 @@ private fun ExoPlayer.dispatchPlayPause() {
private fun ExoPlayer.dispatchPlay() {
val state = playbackState
- if (state == Player.STATE_IDLE) {
+ if (state == STATE_IDLE) {
prepare()
- } else if (state == Player.STATE_ENDED) {
+ } else if (state == STATE_ENDED) {
seekTo(currentMediaItemIndex, C.TIME_UNSET)
}
play()
diff --git a/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/component/ExoPlayer.kt b/core/ui/src/main/kotlin/com/danbam/indistraw/core/ui/exoplayer/IndiStrawMobileController.kt
similarity index 66%
rename from core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/component/ExoPlayer.kt
rename to core/ui/src/main/kotlin/com/danbam/indistraw/core/ui/exoplayer/IndiStrawMobileController.kt
index 8f9b026c..1b82e465 100644
--- a/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/component/ExoPlayer.kt
+++ b/core/ui/src/main/kotlin/com/danbam/indistraw/core/ui/exoplayer/IndiStrawMobileController.kt
@@ -1,9 +1,5 @@
-package com.danbam.indistraw.core.design_system.component
+package com.danbam.indistraw.core.ui.exoplayer
-import android.content.pm.ActivityInfo
-import android.view.ViewGroup
-import android.widget.FrameLayout
-import androidx.activity.compose.BackHandler
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.ExperimentalAnimationApi
import androidx.compose.animation.fadeIn
@@ -31,176 +27,25 @@ import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.Slider
import androidx.compose.material.SliderDefaults
import androidx.compose.runtime.Composable
-import androidx.compose.runtime.DisposableEffect
-import androidx.compose.runtime.LaunchedEffect
-import androidx.compose.runtime.getValue
-import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
-import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.input.key.onKeyEvent
import androidx.compose.ui.input.pointer.pointerInput
-import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.unit.dp
-import androidx.compose.ui.viewinterop.AndroidView
-import com.danbam.indistraw.core.design_system.BuildConfig
+import androidx.media3.exoplayer.ExoPlayer
import com.danbam.indistraw.core.design_system.IndiStrawTheme
import com.danbam.indistraw.core.design_system.attribute.IndiStrawIcon
import com.danbam.indistraw.core.design_system.attribute.IndiStrawIconList
-import com.danbam.indistraw.core.design_system.util.androidx.HideSystemUI
-import com.danbam.indistraw.core.design_system.util.androidx.LockScreenOrientation
-import com.danbam.indistraw.core.design_system.util.google.detectKeyEvent
-import com.danbam.indistraw.core.design_system.util.internal.formatMinSec
+import com.danbam.indistraw.core.design_system.component.DialogMedium
+import com.danbam.indistraw.core.design_system.component.ExampleTextRegular
import com.danbam.indistraw.core.design_system.util.androidx.indiStrawClickable
-import com.google.android.exoplayer2.C
-import com.google.android.exoplayer2.ExoPlayer
-import com.google.android.exoplayer2.MediaItem
-import com.google.android.exoplayer2.Player
-import com.google.android.exoplayer2.Player.STATE_ENDED
-import com.google.android.exoplayer2.source.ProgressiveMediaSource
-import com.google.android.exoplayer2.source.hls.HlsMediaSource
-import com.google.android.exoplayer2.ui.StyledPlayerView
-import com.google.android.exoplayer2.upstream.DefaultHttpDataSource
-import com.google.android.exoplayer2.util.Util
+import com.danbam.indistraw.core.design_system.util.internal.formatMinSec
import kotlinx.coroutines.MainScope
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
-@Composable
-fun IndiStrawPlayer(
- modifier: Modifier = Modifier,
- movieUrl: String,
- movieName: String,
- position: Float,
- isMobile: Boolean,
- isVertical: Boolean,
- onPIP: () -> Unit,
- onDispose: (Long) -> Unit
-) {
- HideSystemUI()
- val context = LocalContext.current
- val exoPlayer = remember {
- ExoPlayer.Builder(context)
- .setSeekBackIncrementMs(5000)
- .setSeekForwardIncrementMs(5000)
- .build()
- .apply {
- val mediaItem = MediaItem.Builder()
- .setUri("${BuildConfig.VIDEO_PRE_PATH}$movieUrl")
- .build()
- val userAgent = Util.getUserAgent(context, context.applicationInfo.name)
- val factory = DefaultHttpDataSource.Factory().apply {
- setUserAgent(userAgent)
- }
- val hlsMediaSource = HlsMediaSource.Factory(factory).createMediaSource(mediaItem)
- val progressiveMediaSource =
- ProgressiveMediaSource.Factory(factory).createMediaSource(mediaItem)
- setMediaSource(progressiveMediaSource)
- videoScalingMode = C.VIDEO_SCALING_MODE_SCALE_TO_FIT
- prepare()
- playWhenReady = true
- seekTo((position * 1000).toLong())
- }
- }
- var isVisible by remember { mutableStateOf(false) }
- var isPlaying by remember { mutableStateOf(exoPlayer.isPlaying) }
- var isLock by remember { mutableStateOf(false) }
-
- if (!isVertical && isMobile) {
- LockScreenOrientation(orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
- }
-
- BackHandler {
- onDispose(exoPlayer.currentPosition)
- }
-
- LaunchedEffect(isVisible) {
- if (isVisible && exoPlayer.playbackState != STATE_ENDED) {
- delay(1500L)
- isVisible = false
- }
- }
-
- DisposableEffect(
- Box(
- modifier = modifier
- .fillMaxSize()
- .onKeyEvent {
- exoPlayer.detectKeyEvent(it.nativeKeyEvent)
- }
- .indiStrawClickable {
- isVisible = !isVisible
- }
- ) {
- AndroidView(
- factory = {
- StyledPlayerView(context).apply {
- player = exoPlayer
- useController = false
- layoutParams = FrameLayout.LayoutParams(
- ViewGroup.LayoutParams.MATCH_PARENT,
- ViewGroup.LayoutParams.MATCH_PARENT
- )
- }
- })
- }
- ) {
- val listener = object : Player.Listener {
- override fun onEvents(player: Player, events: Player.Events) {
- super.onEvents(player, events)
- isPlaying = player.isPlaying
- }
- }
- exoPlayer.addListener(listener)
- onDispose {
- exoPlayer.removeListener(listener)
- exoPlayer.release()
- }
- }
-
- if (isMobile) {
- IndiStrawMobileController(
- exoPlayer = exoPlayer,
- movieName = movieName,
- isVisible = isVisible,
- isLock = isLock,
- isPlaying = isPlaying,
- onBack = { exoPlayer.seekBack() },
- onForward = { exoPlayer.seekForward() },
- onPause = {
- when {
- isPlaying -> {
- exoPlayer.pause()
- }
-
- !isPlaying -> {
- exoPlayer.play()
- }
- }
- },
- onFinish = { onDispose(exoPlayer.currentPosition) },
- onLock = { isLock = !isLock },
- onPIP = {
- isVisible = false
- onPIP()
- },
- onTouchPlayer = { isVisible = !isVisible },
- onSeekChanged = { exoPlayer.seekTo(it.toLong()) }
- )
- } else {
-
- }
-}
-
-fun IndiStrawTvController(
-
-) {
-
-}
-
@OptIn(ExperimentalAnimationApi::class)
@Composable
fun IndiStrawMobileController(
@@ -422,7 +267,7 @@ private fun ControllerBottom(
verticalAlignment = Alignment.CenterVertically
) {
Box(
- modifier = Modifier.weight(0.9F)
+ modifier = Modifier.weight(1F)
) {
Slider(
value = exoPlayer.bufferedPercentage.toFloat(),
@@ -447,8 +292,6 @@ private fun ControllerBottom(
}
Spacer(modifier = Modifier.width(12.dp))
ExampleTextRegular(
- modifier = Modifier
- .weight(0.1F),
text = (exoPlayer.duration - exoPlayer.currentPosition).formatMinSec(),
fontSize = 14
)
diff --git a/core/ui/src/main/kotlin/com/danbam/indistraw/core/ui/exoplayer/IndiStrawTvController.kt b/core/ui/src/main/kotlin/com/danbam/indistraw/core/ui/exoplayer/IndiStrawTvController.kt
new file mode 100644
index 00000000..e8b12f4f
--- /dev/null
+++ b/core/ui/src/main/kotlin/com/danbam/indistraw/core/ui/exoplayer/IndiStrawTvController.kt
@@ -0,0 +1,167 @@
+package com.danbam.indistraw.core.ui.exoplayer
+
+import android.view.KeyEvent
+import androidx.compose.animation.AnimatedVisibility
+import androidx.compose.animation.fadeIn
+import androidx.compose.animation.fadeOut
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.width
+import androidx.compose.material.Slider
+import androidx.compose.material.SliderDefaults
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.LaunchedEffect
+import androidx.compose.runtime.remember
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.focus.FocusRequester
+import androidx.compose.ui.focus.focusRequester
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.input.key.onPreviewKeyEvent
+import androidx.compose.ui.unit.dp
+import androidx.media3.exoplayer.ExoPlayer
+import androidx.tv.material3.ClickableSurfaceDefaults
+import androidx.tv.material3.ExperimentalTvMaterial3Api
+import androidx.tv.material3.Surface
+import com.danbam.indistraw.core.design_system.IndiStrawTheme
+import com.danbam.indistraw.core.design_system.attribute.IndiStrawIcon
+import com.danbam.indistraw.core.design_system.attribute.IndiStrawIconList
+import com.danbam.indistraw.core.design_system.component.DialogMedium
+import com.danbam.indistraw.core.design_system.component.ExampleTextRegular
+import com.danbam.indistraw.core.design_system.util.internal.formatMinSec
+
+@OptIn(ExperimentalTvMaterial3Api::class)
+@Composable
+fun IndiStrawTvController(
+ exoPlayer: ExoPlayer,
+ movieName: String,
+ isVisible: Boolean,
+ isPlaying: Boolean,
+ onBack: () -> Unit,
+ onForward: () -> Unit,
+ onPause: () -> Unit,
+ onFinish: () -> Unit,
+ onSeekChanged: (Float) -> Unit,
+) {
+ val focusRequester = remember { FocusRequester() }
+ LaunchedEffect(isVisible) {
+ if (isVisible) {
+ focusRequester.requestFocus()
+ }
+ }
+ AnimatedVisibility(visible = isVisible, enter = fadeIn(), exit = fadeOut()) {
+ Box(
+ modifier = Modifier
+ .fillMaxSize()
+ .padding(vertical = 30.dp, horizontal = 35.dp)
+ ) {
+ Row(
+ modifier = Modifier.align(Alignment.TopStart),
+ verticalAlignment = Alignment.CenterVertically
+ ) {
+ PlayerIcon(onClick = onFinish, icon = IndiStrawIconList.PlayerFinish)
+ Spacer(modifier = Modifier.width(10.dp))
+ DialogMedium(text = movieName, fontSize = 30)
+ }
+ Column(
+ modifier = Modifier.align(Alignment.BottomStart)
+ ) {
+ Row(
+ modifier = Modifier
+ .focusRequester(focusRequester)
+ .fillMaxWidth(),
+ verticalAlignment = Alignment.CenterVertically
+ ) {
+ ExampleTextRegular(
+ text = exoPlayer.currentPosition.formatMinSec(),
+ fontSize = 18
+ )
+ Spacer(modifier = Modifier.width(10.dp))
+ Box(
+ modifier = Modifier.weight(1F)
+ ) {
+ Slider(
+ value = exoPlayer.bufferedPercentage.toFloat(),
+ enabled = false,
+ onValueChange = { },
+ valueRange = 0f..100f,
+ colors = SliderDefaults.colors(
+ disabledThumbColor = Color.Transparent,
+ disabledActiveTrackColor = Color.Gray
+ )
+ )
+ Slider(
+ modifier = Modifier.onPreviewKeyEvent {
+ it.nativeKeyEvent.let { event ->
+ if (event.action == KeyEvent.ACTION_DOWN && event.repeatCount == 0) {
+ when (event.keyCode) {
+ KeyEvent.KEYCODE_DPAD_LEFT -> {
+ onSeekChanged(exoPlayer.currentPosition - 1000F)
+ return@onPreviewKeyEvent true
+ }
+ KeyEvent.KEYCODE_DPAD_RIGHT -> {
+ onSeekChanged(exoPlayer.currentPosition + 1000F)
+ return@onPreviewKeyEvent true
+ }
+ }
+ }
+ }
+ false
+ },
+ value = exoPlayer.currentPosition.toFloat(),
+ onValueChange = onSeekChanged,
+ valueRange = 0f..exoPlayer.duration.toFloat(),
+ colors = SliderDefaults.colors(
+ thumbColor = IndiStrawTheme.colors.main,
+ activeTrackColor = IndiStrawTheme.colors.main
+ )
+ )
+ }
+ Spacer(modifier = Modifier.width(10.dp))
+ ExampleTextRegular(
+ text = exoPlayer.duration.formatMinSec(),
+ fontSize = 18
+ )
+ }
+ Spacer(modifier = Modifier.height(15.dp))
+ Row(
+ verticalAlignment = Alignment.CenterVertically
+ ) {
+ PlayerIcon(onClick = onBack, icon = IndiStrawIconList.PlayerBack)
+ Spacer(modifier = Modifier.width(10.dp))
+ PlayerIcon(
+ onClick = onPause,
+ icon = if (isPlaying) IndiStrawIconList.PlayerPlay else IndiStrawIconList.PlayerStop
+ )
+ Spacer(modifier = Modifier.width(10.dp))
+ PlayerIcon(onClick = onForward, icon = IndiStrawIconList.PlayerForward)
+ }
+ }
+ }
+ }
+}
+
+@OptIn(ExperimentalTvMaterial3Api::class)
+@Composable
+private fun PlayerIcon(
+ onClick: () -> Unit,
+ icon: IndiStrawIconList
+) {
+ Surface(
+ color = ClickableSurfaceDefaults.color(
+ color = Color.Transparent,
+ focusedColor = Color.Transparent,
+ pressedColor = Color.Transparent,
+ disabledColor = Color.Transparent
+ ),
+ onClick = onClick
+ ) {
+ IndiStrawIcon(icon = icon)
+ }
+}
\ No newline at end of file
diff --git a/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/util/danbam/ErrorHandlingUtil.kt b/core/ui/src/main/kotlin/com/danbam/indistraw/core/ui/handling/ErrorHandlingUtil.kt
similarity index 97%
rename from core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/util/danbam/ErrorHandlingUtil.kt
rename to core/ui/src/main/kotlin/com/danbam/indistraw/core/ui/handling/ErrorHandlingUtil.kt
index c2275d61..c4341ce4 100644
--- a/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/util/danbam/ErrorHandlingUtil.kt
+++ b/core/ui/src/main/kotlin/com/danbam/indistraw/core/ui/handling/ErrorHandlingUtil.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.design_system.util.danbam
+package com.danbam.indistraw.core.ui.handling
import android.util.Log
import com.danbam.indistraw.core.domain.exception.ConflictDataException
diff --git a/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/component/QRPainter.kt b/core/ui/src/main/kotlin/com/danbam/indistraw/core/ui/qr/QRPainter.kt
similarity index 90%
rename from core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/component/QRPainter.kt
rename to core/ui/src/main/kotlin/com/danbam/indistraw/core/ui/qr/QRPainter.kt
index 0a6ceae6..639026a1 100644
--- a/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/component/QRPainter.kt
+++ b/core/ui/src/main/kotlin/com/danbam/indistraw/core/ui/qr/QRPainter.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.design_system.component
+package com.danbam.indistraw.core.ui.qr
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.runtime.Composable
diff --git a/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/component/QRScanner.kt b/core/ui/src/main/kotlin/com/danbam/indistraw/core/ui/qr/QRScanner.kt
similarity index 98%
rename from core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/component/QRScanner.kt
rename to core/ui/src/main/kotlin/com/danbam/indistraw/core/ui/qr/QRScanner.kt
index 62cf96b8..d5a7f585 100644
--- a/core/design-system/src/main/kotlin/com/danbam/indistraw/core/design_system/component/QRScanner.kt
+++ b/core/ui/src/main/kotlin/com/danbam/indistraw/core/ui/qr/QRScanner.kt
@@ -1,4 +1,4 @@
-package com.danbam.indistraw.core.design_system.component
+package com.danbam.indistraw.core.ui.qr
import android.annotation.SuppressLint
import androidx.activity.ComponentActivity
diff --git a/feature/mobile/auth/src/main/kotlin/com/danbam/indistraw/feature/mobile/auth/certificate/CertificateViewModel.kt b/feature/mobile/auth/src/main/kotlin/com/danbam/indistraw/feature/mobile/auth/certificate/CertificateViewModel.kt
index 8917da90..bf72cc48 100644
--- a/feature/mobile/auth/src/main/kotlin/com/danbam/indistraw/feature/mobile/auth/certificate/CertificateViewModel.kt
+++ b/feature/mobile/auth/src/main/kotlin/com/danbam/indistraw/feature/mobile/auth/certificate/CertificateViewModel.kt
@@ -2,7 +2,7 @@ package com.danbam.indistraw.feature.mobile.auth.certificate
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
-import com.danbam.indistraw.core.design_system.util.danbam.errorHandling
+import com.danbam.indistraw.core.ui.handling.errorHandling
import com.danbam.indistraw.core.design_system.util.internal.isPhoneNumber
import com.danbam.indistraw.core.domain.usecase.account.ChangePhoneNumberUseCase
import com.danbam.indistraw.core.domain.usecase.auth.CheckCertificateNumberUseCase
diff --git a/feature/mobile/auth/src/main/kotlin/com/danbam/indistraw/feature/mobile/auth/find/find_id/FindIdViewModel.kt b/feature/mobile/auth/src/main/kotlin/com/danbam/indistraw/feature/mobile/auth/find/find_id/FindIdViewModel.kt
index 3dadfc08..55f27a41 100644
--- a/feature/mobile/auth/src/main/kotlin/com/danbam/indistraw/feature/mobile/auth/find/find_id/FindIdViewModel.kt
+++ b/feature/mobile/auth/src/main/kotlin/com/danbam/indistraw/feature/mobile/auth/find/find_id/FindIdViewModel.kt
@@ -2,7 +2,7 @@ package com.danbam.indistraw.feature.mobile.auth.find.find_id
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
-import com.danbam.indistraw.core.design_system.util.danbam.errorHandling
+import com.danbam.indistraw.core.ui.handling.errorHandling
import com.danbam.indistraw.core.domain.usecase.account.FindIdUseCase
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.launch
diff --git a/feature/mobile/auth/src/main/kotlin/com/danbam/indistraw/feature/mobile/auth/find/find_password/FindPasswordViewModel.kt b/feature/mobile/auth/src/main/kotlin/com/danbam/indistraw/feature/mobile/auth/find/find_password/FindPasswordViewModel.kt
index 30ed54aa..09062e79 100644
--- a/feature/mobile/auth/src/main/kotlin/com/danbam/indistraw/feature/mobile/auth/find/find_password/FindPasswordViewModel.kt
+++ b/feature/mobile/auth/src/main/kotlin/com/danbam/indistraw/feature/mobile/auth/find/find_password/FindPasswordViewModel.kt
@@ -2,9 +2,9 @@ package com.danbam.indistraw.feature.mobile.auth.find.find_password
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
-import com.danbam.indistraw.core.design_system.util.danbam.errorHandling
+import com.danbam.indistraw.core.ui.handling.errorHandling
import com.danbam.indistraw.core.design_system.util.internal.isPassword
-import com.danbam.indistraw.core.param.auth.ChangePasswordParam
+import com.danbam.indistraw.core.domain.param.auth.ChangePasswordParam
import com.danbam.indistraw.core.domain.usecase.account.ChangePasswordUseCase
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.launch
diff --git a/feature/mobile/auth/src/main/kotlin/com/danbam/indistraw/feature/mobile/auth/login/LoginViewModel.kt b/feature/mobile/auth/src/main/kotlin/com/danbam/indistraw/feature/mobile/auth/login/LoginViewModel.kt
index a73fbc15..720615ca 100644
--- a/feature/mobile/auth/src/main/kotlin/com/danbam/indistraw/feature/mobile/auth/login/LoginViewModel.kt
+++ b/feature/mobile/auth/src/main/kotlin/com/danbam/indistraw/feature/mobile/auth/login/LoginViewModel.kt
@@ -2,10 +2,10 @@ package com.danbam.indistraw.feature.mobile.auth.login
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
-import com.danbam.indistraw.core.design_system.util.danbam.errorHandling
+import com.danbam.indistraw.core.ui.handling.errorHandling
import com.danbam.indistraw.core.design_system.util.internal.isId
import com.danbam.indistraw.core.design_system.util.internal.isPassword
-import com.danbam.indistraw.core.param.auth.LoginParam
+import com.danbam.indistraw.core.domain.param.auth.LoginParam
import com.danbam.indistraw.core.domain.usecase.auth.LoginUseCase
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.launch
diff --git a/feature/mobile/auth/src/main/kotlin/com/danbam/indistraw/feature/mobile/auth/signup/SetProfileScreen.kt b/feature/mobile/auth/src/main/kotlin/com/danbam/indistraw/feature/mobile/auth/signup/SetProfileScreen.kt
index 61447614..b9562f48 100644
--- a/feature/mobile/auth/src/main/kotlin/com/danbam/indistraw/feature/mobile/auth/signup/SetProfileScreen.kt
+++ b/feature/mobile/auth/src/main/kotlin/com/danbam/indistraw/feature/mobile/auth/signup/SetProfileScreen.kt
@@ -24,11 +24,8 @@ import com.danbam.indistraw.core.design_system.component.SelectProfileButton
import com.danbam.indistraw.core.design_system.R
import com.danbam.indistraw.core.design_system.util.android.toFile
import com.danbam.indistraw.core.design_system.util.androidx.getActivity
-import com.danbam.indistraw.core.design_system.util.androidx.observeWithLifecycle
import com.danbam.indistraw.feature.mobile.navigation.auth.AuthNavigationItem
-import kotlinx.coroutines.InternalCoroutinesApi
-@OptIn(InternalCoroutinesApi::class)
@Composable
fun SetProfileScreen(
navController: NavController,
@@ -40,21 +37,16 @@ fun SetProfileScreen(
val sideEffect = container.sideEffectFlow
val context = LocalContext.current
- var file: String? by remember { mutableStateOf(null) }
+ var profileUrl: String? by remember { mutableStateOf(null) }
+ var isLoading by remember { mutableStateOf(false) }
LaunchedEffect(Unit) {
signUpViewModel.setPhoneNumber(phoneNumber = phoneNumber)
}
- sideEffect.observeWithLifecycle {
- if (it is SignUpSideEffect.SuccessUpload) {
- file = it.imageUrl
- } else {
-
- }
- }
-
- IndiStrawColumnBackground {
+ IndiStrawColumnBackground(
+ isLoading = isLoading
+ ) {
IndiStrawHeader(pressBackBtn = {
navController.popBackStack()
})
@@ -69,12 +61,24 @@ fun SetProfileScreen(
.align(CenterHorizontally),
paddingValues = PaddingValues(36.dp),
isSignUp = true,
- imageUrl = file,
+ imageUrl = profileUrl,
selectGallery = {
- it?.let { signUpViewModel.setProfile(it.toFile(context)) }
+ it?.let {
+ isLoading = true
+ signUpViewModel.setProfile(it.toFile(context)) {
+ isLoading = false
+ profileUrl = it
+ }
+ }
},
selectCamera = {
- it?.let { signUpViewModel.setProfile(it.toFile(context)) }
+ it?.let {
+ isLoading = true
+ signUpViewModel.setProfile(it.toFile(context)) {
+ isLoading = false
+ profileUrl = it
+ }
+ }
}) {
IndiStrawButton(
modifier = Modifier.padding(top = 156.dp),
diff --git a/feature/mobile/auth/src/main/kotlin/com/danbam/indistraw/feature/mobile/auth/signup/SignUpContract.kt b/feature/mobile/auth/src/main/kotlin/com/danbam/indistraw/feature/mobile/auth/signup/SignUpContract.kt
index a1d97264..8e2c9169 100644
--- a/feature/mobile/auth/src/main/kotlin/com/danbam/indistraw/feature/mobile/auth/signup/SignUpContract.kt
+++ b/feature/mobile/auth/src/main/kotlin/com/danbam/indistraw/feature/mobile/auth/signup/SignUpContract.kt
@@ -21,5 +21,4 @@ sealed class SignUpSideEffect {
object Next : SignUpSideEffect()
object SuccessSignUp : SignUpSideEffect()
object FailSignUp : SignUpSideEffect()
- data class SuccessUpload(val imageUrl: String) : SignUpSideEffect()
}
\ No newline at end of file
diff --git a/feature/mobile/auth/src/main/kotlin/com/danbam/indistraw/feature/mobile/auth/signup/SignUpViewModel.kt b/feature/mobile/auth/src/main/kotlin/com/danbam/indistraw/feature/mobile/auth/signup/SignUpViewModel.kt
index 56ba309a..601db673 100644
--- a/feature/mobile/auth/src/main/kotlin/com/danbam/indistraw/feature/mobile/auth/signup/SignUpViewModel.kt
+++ b/feature/mobile/auth/src/main/kotlin/com/danbam/indistraw/feature/mobile/auth/signup/SignUpViewModel.kt
@@ -2,10 +2,10 @@ package com.danbam.indistraw.feature.mobile.auth.signup
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
-import com.danbam.indistraw.core.design_system.util.danbam.errorHandling
+import com.danbam.indistraw.core.ui.handling.errorHandling
import com.danbam.indistraw.core.design_system.util.internal.isId
import com.danbam.indistraw.core.design_system.util.internal.isPassword
-import com.danbam.indistraw.core.param.auth.SignUpParam
+import com.danbam.indistraw.core.domain.param.auth.SignUpParam
import com.danbam.indistraw.core.domain.usecase.auth.CheckIdUseCase
import com.danbam.indistraw.core.domain.usecase.auth.SignUpUseCase
import com.danbam.indistraw.core.domain.usecase.file.SendFileUseCase
@@ -39,11 +39,11 @@ class SignUpViewModel @Inject constructor(
reduce { state.copy(phoneNumber = phoneNumber) }
}
- fun setProfile(file: File) = intent {
+ fun setProfile(file: File, onUploaded: (String) -> Unit) = intent {
viewModelScope.launch {
sendFileUseCase(file = file).onSuccess {
- postSideEffect(SignUpSideEffect.SuccessUpload(it.file))
reduce { state.copy(profileUrl = it.file) }
+ onUploaded(it.file)
}.onFailure {
it.errorHandling(unknownAction = {})
}
diff --git a/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/all/FundingAllContract.kt b/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/all/FundingAllContract.kt
index 025c69dd..1aa31fad 100644
--- a/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/all/FundingAllContract.kt
+++ b/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/all/FundingAllContract.kt
@@ -1,7 +1,7 @@
package com.danbam.indistraw.feature.mobile.funding.all
import androidx.paging.PagingData
-import com.danbam.indistraw.core.entity.funding.FundingEntity
+import com.danbam.indistraw.core.domain.entity.funding.FundingEntity
import kotlinx.coroutines.flow.Flow
data class FundingAllState(
diff --git a/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/all/FundingAllScreen.kt b/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/all/FundingAllScreen.kt
index d8aee5ac..2d62ac2d 100644
--- a/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/all/FundingAllScreen.kt
+++ b/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/all/FundingAllScreen.kt
@@ -11,8 +11,7 @@ import androidx.hilt.navigation.compose.hiltViewModel
import androidx.navigation.NavController
import androidx.paging.LoadState
import androidx.paging.compose.collectAsLazyPagingItems
-import androidx.paging.compose.items
-import com.danbam.indistraw.core.design_system.component.FundingItem
+import com.danbam.indistraw.core.ui.component.FundingItem
import com.danbam.indistraw.core.design_system.component.IndiStrawColumnBackground
import com.danbam.indistraw.core.design_system.component.IndiStrawHeader
import com.danbam.indistraw.core.design_system.util.androidx.RemoveOverScrollLazyColumn
@@ -51,9 +50,9 @@ fun FundingAllScreen(
else -> {
RemoveOverScrollLazyColumn {
- items(it) {
- it?.let {
- FundingItem(
+ items(it.itemCount) { index ->
+ it[index]?.let {
+ com.danbam.indistraw.core.ui.component.FundingItem(
item = it,
onClickItem = { navController.navigate(FundingNavigationItem.Detail.route + FundingDeepLinkKey.FUNDING_INDEX + it) }
)
diff --git a/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/all/FundingAllViewModel.kt b/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/all/FundingAllViewModel.kt
index 6ac05c40..24af866c 100644
--- a/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/all/FundingAllViewModel.kt
+++ b/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/all/FundingAllViewModel.kt
@@ -14,10 +14,8 @@ import javax.inject.Inject
@HiltViewModel
class FundingAllViewModel @Inject constructor(
private val fundingAllUseCase: FundingAllUseCase
-) : ContainerHost, ViewModel() {
- override val container = container(
- com.danbam.indistraw.feature.mobile.funding.all.FundingAllState()
- )
+) : ContainerHost, ViewModel() {
+ override val container = container(FundingAllState())
fun fundingList() = intent {
viewModelScope.launch {
diff --git a/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/detail/FundingDetailContract.kt b/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/detail/FundingDetailContract.kt
index 1adda982..ed6f4673 100644
--- a/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/detail/FundingDetailContract.kt
+++ b/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/detail/FundingDetailContract.kt
@@ -1,6 +1,6 @@
package com.danbam.indistraw.feature.mobile.funding.detail
-import com.danbam.indistraw.core.entity.funding.FundingDetailEntity
+import com.danbam.indistraw.core.domain.entity.funding.FundingDetailEntity
import java.util.UUID
data class FundingDetailState(
diff --git a/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/detail/FundingDetailScreen.kt b/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/detail/FundingDetailScreen.kt
index 137c2f97..4e178b32 100644
--- a/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/detail/FundingDetailScreen.kt
+++ b/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/detail/FundingDetailScreen.kt
@@ -43,10 +43,10 @@ import com.danbam.indistraw.core.design_system.attribute.IndiStrawIcon
import com.danbam.indistraw.core.design_system.attribute.IndiStrawIconList
import com.danbam.indistraw.core.design_system.component.IndiStrawBottomSheetLayout
import com.danbam.indistraw.core.design_system.component.IndiStrawSlider
-import com.danbam.indistraw.core.design_system.component.RewardItem
-import com.danbam.indistraw.core.design_system.component.RewardType
+import com.danbam.indistraw.core.ui.component.RewardItem
+import com.danbam.indistraw.core.ui.component.RewardType
import com.danbam.indistraw.core.design_system.util.internal.toCommaString
-import com.danbam.indistraw.core.entity.funding.FundingDetailEntity
+import com.danbam.indistraw.core.domain.entity.funding.FundingDetailEntity
import com.danbam.indistraw.feature.mobile.navigation.funding.FundingDeepLinkKey
import com.danbam.indistraw.feature.mobile.navigation.funding.FundingNavigationItem
@@ -70,9 +70,12 @@ fun FundingDetailScreen(
IndiStrawBottomSheetLayout(sheetContent = {
selectRewardItem?.let {
- RewardItem(rewardType = RewardType.Expand, item = it, onClickItem = {
- navController.navigate(FundingNavigationItem.FundingReward.route + FundingDeepLinkKey.FUNDING_INDEX + fundingIdx + FundingDeepLinkKey.REWARD_INDEX + it.idx + FundingDeepLinkKey.REWARD_TITLE + it.title + FundingDeepLinkKey.REWARD_DESCRIPTION + it.description + FundingDeepLinkKey.REWARD_PRICE + it.price)
- })
+ com.danbam.indistraw.core.ui.component.RewardItem(
+ rewardType = com.danbam.indistraw.core.ui.component.RewardType.Expand,
+ item = it,
+ onClickItem = {
+ navController.navigate(FundingNavigationItem.FundingReward.route + FundingDeepLinkKey.FUNDING_INDEX + fundingIdx + FundingDeepLinkKey.REWARD_INDEX + it.idx + FundingDeepLinkKey.REWARD_TITLE + it.title + FundingDeepLinkKey.REWARD_DESCRIPTION + it.description + FundingDeepLinkKey.REWARD_PRICE + it.price)
+ })
}
}) { _, openSheet ->
IndiStrawColumnBackground(
@@ -219,12 +222,14 @@ fun FundingDetailScreen(
)
)
repeat(state.fundingDetailEntity.reward.size) {
- RewardItem(item = state.fundingDetailEntity.reward[it], onClickItem = {
- if (!state.fundingDetailEntity.isFunding) {
- selectRewardItem = it
- openSheet()
- }
- })
+ com.danbam.indistraw.core.ui.component.RewardItem(
+ item = state.fundingDetailEntity.reward[it],
+ onClickItem = {
+ if (!state.fundingDetailEntity.isFunding) {
+ selectRewardItem = it
+ openSheet()
+ }
+ })
Spacer(modifier = Modifier.height(16.dp))
}
Spacer(modifier = Modifier.height(54.dp))
diff --git a/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/detail/FundingDetailViewModel.kt b/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/detail/FundingDetailViewModel.kt
index ae715924..df2fbbc1 100644
--- a/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/detail/FundingDetailViewModel.kt
+++ b/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/detail/FundingDetailViewModel.kt
@@ -2,7 +2,7 @@ package com.danbam.indistraw.feature.mobile.funding.detail
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
-import com.danbam.indistraw.core.design_system.util.danbam.errorHandling
+import com.danbam.indistraw.core.ui.handling.errorHandling
import com.danbam.indistraw.core.domain.usecase.crowd_funding.FundingDetailUseCase
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.launch
diff --git a/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/make/AddRewardScreen.kt b/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/make/AddRewardScreen.kt
index 7fa40b20..6c554575 100644
--- a/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/make/AddRewardScreen.kt
+++ b/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/make/AddRewardScreen.kt
@@ -22,12 +22,12 @@ import com.danbam.indistraw.core.design_system.R
import com.danbam.indistraw.core.design_system.attribute.IndiStrawIcon
import com.danbam.indistraw.core.design_system.attribute.IndiStrawIconList
import com.danbam.indistraw.core.design_system.component.HeadLineBold
-import com.danbam.indistraw.core.design_system.component.RewardItem
-import com.danbam.indistraw.core.design_system.component.RewardType
+import com.danbam.indistraw.core.ui.component.RewardItem
+import com.danbam.indistraw.core.ui.component.RewardType
import com.danbam.indistraw.core.design_system.component.TitleRegular
import com.danbam.indistraw.core.design_system.util.androidx.RemoveOverScrollLazyColumn
import com.danbam.indistraw.core.design_system.util.androidx.indiStrawClickable
-import com.danbam.indistraw.core.entity.funding.FundingDetailEntity
+import com.danbam.indistraw.core.domain.entity.funding.FundingDetailEntity
@Composable
fun AddRewardScreen(
@@ -50,8 +50,8 @@ fun AddRewardScreen(
verticalArrangement = if (state.rewardList.isEmpty()) Arrangement.Center else Arrangement.Top
) {
itemsIndexed(state.rewardList) { index, item ->
- RewardItem(
- rewardType = RewardType.Expand,
+ com.danbam.indistraw.core.ui.component.RewardItem(
+ rewardType = com.danbam.indistraw.core.ui.component.RewardType.Expand,
item = FundingDetailEntity.RewardEntity(
idx = 0L,
title = item.title,
diff --git a/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/make/MakeFundingContract.kt b/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/make/MakeFundingContract.kt
index f414eb8a..d3907ecc 100644
--- a/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/make/MakeFundingContract.kt
+++ b/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/make/MakeFundingContract.kt
@@ -1,6 +1,6 @@
package com.danbam.indistraw.feature.mobile.funding.make
-import com.danbam.indistraw.core.param.funding.FundingCreateParam
+import com.danbam.indistraw.core.domain.param.funding.FundingCreateParam
import java.time.LocalDate
data class MakeFundingState(
diff --git a/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/make/MakeFundingViewModel.kt b/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/make/MakeFundingViewModel.kt
index e7cf66ac..83a286ce 100644
--- a/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/make/MakeFundingViewModel.kt
+++ b/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/make/MakeFundingViewModel.kt
@@ -2,7 +2,7 @@ package com.danbam.indistraw.feature.mobile.funding.make
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
-import com.danbam.indistraw.core.param.funding.FundingCreateParam
+import com.danbam.indistraw.core.domain.param.funding.FundingCreateParam
import com.danbam.indistraw.core.domain.usecase.crowd_funding.FundingCreateUseCase
import com.danbam.indistraw.core.domain.usecase.file.SendFileUseCase
import dagger.hilt.android.lifecycle.HiltViewModel
diff --git a/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/make/WriteIntroduceScreen.kt b/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/make/WriteIntroduceScreen.kt
index d3e099ea..1861576a 100644
--- a/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/make/WriteIntroduceScreen.kt
+++ b/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/make/WriteIntroduceScreen.kt
@@ -18,7 +18,7 @@ import com.danbam.indistraw.core.design_system.component.IndiStrawButton
import com.danbam.indistraw.core.design_system.component.IndiStrawColumnBackground
import com.danbam.indistraw.core.design_system.component.TitleRegular
import com.danbam.indistraw.core.design_system.R
-import com.danbam.indistraw.core.design_system.component.AddImageList
+import com.danbam.indistraw.core.ui.component.AddImageList
import com.danbam.indistraw.core.design_system.component.IndiStrawTextField
import com.danbam.indistraw.core.design_system.component.SelectImageButton
import com.danbam.indistraw.core.design_system.util.android.toFile
@@ -36,9 +36,11 @@ fun WriteIntroduceScreen(
var title by remember { mutableStateOf(state.title) }
var description by remember { mutableStateOf(state.description) }
var thumbnailUrl: String? by remember { mutableStateOf(state.thumbnailUrl) }
+ var isLoading by remember { mutableStateOf(false) }
val imageList = remember { mutableStateListOf(*state.imageList.toTypedArray()) }
Spacer(modifier = Modifier.height(36.dp))
IndiStrawColumnBackground(
+ isLoading = isLoading,
scrollEnabled = true
) {
TitleRegular(
@@ -49,7 +51,9 @@ fun WriteIntroduceScreen(
imageUrl = thumbnailUrl,
selectGallery = {
it?.let {
+ isLoading = true
makeFundingViewModel.uploadImage(it.toFile(context)) { thumbnail ->
+ isLoading = false
thumbnailUrl = thumbnail
}
}
@@ -75,12 +79,14 @@ fun WriteIntroduceScreen(
text = stringResource(id = R.string.highlight)
)
Spacer(modifier = Modifier.height(16.dp))
- AddImageList(
+ com.danbam.indistraw.core.ui.component.AddImageList(
modifier = Modifier.padding(start = 15.dp),
imageList = imageList,
onRemove = { imageList.removeAt(it) }) {
it?.let {
+ isLoading = true
makeFundingViewModel.uploadImage(it.toFile(context)) {
+ isLoading = false
imageList.add(it)
}
}
diff --git a/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/make/WriteRewardScreen.kt b/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/make/WriteRewardScreen.kt
index 081cce54..2550b224 100644
--- a/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/make/WriteRewardScreen.kt
+++ b/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/make/WriteRewardScreen.kt
@@ -22,7 +22,7 @@ import com.danbam.indistraw.core.design_system.IndiStrawTheme
import com.danbam.indistraw.core.design_system.component.IndiStrawButton
import com.danbam.indistraw.core.design_system.component.IndiStrawColumnBackground
import com.danbam.indistraw.core.design_system.R
-import com.danbam.indistraw.core.design_system.component.AddImageList
+import com.danbam.indistraw.core.ui.component.AddImageList
import com.danbam.indistraw.core.design_system.component.ExampleTextMedium
import com.danbam.indistraw.core.design_system.component.IndiStrawTextField
import com.danbam.indistraw.core.design_system.component.IndiStrawToggle
@@ -42,8 +42,10 @@ fun WriteRewardScreen(
var isReal by remember { mutableStateOf(false) }
val imageList = remember { mutableStateListOf() }
var amount by remember { mutableStateOf("") }
+ var isLoading by remember { mutableStateOf(false) }
Spacer(modifier = Modifier.height(34.dp))
IndiStrawColumnBackground(
+ isLoading = isLoading,
scrollEnabled = true
) {
TitleRegular(
@@ -101,12 +103,14 @@ fun WriteRewardScreen(
text = stringResource(id = R.string.highlight)
)
Spacer(modifier = Modifier.height(16.dp))
- AddImageList(
+ com.danbam.indistraw.core.ui.component.AddImageList(
modifier = Modifier.padding(start = 15.dp),
imageList = imageList,
onRemove = { imageList.removeAt(it) }) {
it?.let {
+ isLoading = true
makeFundingViewModel.uploadImage(it.toFile(context)) {
+ isLoading = false
imageList.add(it)
}
}
diff --git a/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/make/WriteTargetScreen.kt b/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/make/WriteTargetScreen.kt
index fc299417..9255d6a3 100644
--- a/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/make/WriteTargetScreen.kt
+++ b/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/make/WriteTargetScreen.kt
@@ -25,7 +25,7 @@ import com.danbam.indistraw.core.design_system.component.IndiStrawColumnBackgrou
import com.danbam.indistraw.core.design_system.R
import com.danbam.indistraw.core.design_system.attribute.IndiStrawIcon
import com.danbam.indistraw.core.design_system.attribute.IndiStrawIconList
-import com.danbam.indistraw.core.design_system.component.AddFileList
+import com.danbam.indistraw.core.ui.component.AddFileList
import com.danbam.indistraw.core.design_system.component.DatePicker
import com.danbam.indistraw.core.design_system.component.ExampleTextMedium
import com.danbam.indistraw.core.design_system.component.IndiStrawBottomSheetLayout
@@ -51,6 +51,7 @@ fun WriteTargetScreen(
var year by remember { mutableStateOf(state.endDate.year) }
var month by remember { mutableStateOf(state.endDate.monthValue) }
var day by remember { mutableStateOf(state.endDate.dayOfMonth) }
+ var isLoading by remember { mutableStateOf(false) }
val fileList = remember { mutableStateListOf(*state.fileList.toTypedArray()) }
Spacer(modifier = Modifier.height(36.dp))
@@ -80,6 +81,7 @@ fun WriteTargetScreen(
}
}) { _, openSheet ->
IndiStrawColumnBackground(
+ isLoading = isLoading,
scrollEnabled = true
) {
TitleRegular(
@@ -115,9 +117,13 @@ fun WriteTargetScreen(
text = stringResource(id = R.string.file)
)
Spacer(modifier = Modifier.height(16.dp))
- AddFileList(fileList = fileList, onDelete = { fileList.removeAt(it) }) {
+ com.danbam.indistraw.core.ui.component.AddFileList(
+ fileList = fileList,
+ onDelete = { fileList.removeAt(it) }) {
it?.let {
+ isLoading = true
makeFundingViewModel.uploadImage(it.toFile(context)) {
+ isLoading = false
fileList.add(it)
}
}
diff --git a/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/my/MyFundingContract.kt b/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/my/MyFundingContract.kt
index c68cfd17..93503845 100644
--- a/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/my/MyFundingContract.kt
+++ b/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/my/MyFundingContract.kt
@@ -1,7 +1,6 @@
package com.danbam.indistraw.feature.mobile.funding.my
-import com.danbam.indistraw.core.entity.funding.MyFundingEntity
-
+import com.danbam.indistraw.core.domain.entity.funding.MyFundingEntity
data class MyFundingState(
val myFundingEntity: MyFundingEntity = MyFundingEntity(
diff --git a/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/my/MyFundingScreen.kt b/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/my/MyFundingScreen.kt
index 01efda14..63795869 100644
--- a/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/my/MyFundingScreen.kt
+++ b/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/my/MyFundingScreen.kt
@@ -41,15 +41,15 @@ import com.danbam.indistraw.core.design_system.component.FindPasswordMedium
import com.danbam.indistraw.core.design_system.component.IndiStrawBottomSheetLayout
import com.danbam.indistraw.core.design_system.component.IndiStrawColumnBackground
import com.danbam.indistraw.core.design_system.component.IndiStrawHeader
-import com.danbam.indistraw.core.design_system.component.MyRewardItem
+import com.danbam.indistraw.core.ui.component.MyRewardItem
import com.danbam.indistraw.core.design_system.component.PriceRegular
-import com.danbam.indistraw.core.design_system.component.RewardType
+import com.danbam.indistraw.core.ui.component.RewardType
import com.danbam.indistraw.core.design_system.component.TitleRegular
import com.danbam.indistraw.core.design_system.component.TitleSemiBold
import com.danbam.indistraw.core.design_system.util.androidx.RemoveOverScrollLazyRow
import com.danbam.indistraw.core.design_system.util.androidx.indiStrawClickable
import com.danbam.indistraw.core.design_system.util.internal.toCommaString
-import com.danbam.indistraw.core.entity.funding.MyFundingEntity
+import com.danbam.indistraw.core.domain.entity.funding.MyFundingEntity
@OptIn(ExperimentalMaterialApi::class)
@Composable
@@ -160,7 +160,10 @@ fun MyFundingScreen(
Spacer(modifier = Modifier.height(30.dp))
} else {
selectedReward?.let {
- MyRewardItem(rewardType = RewardType.Expand, item = it) {
+ com.danbam.indistraw.core.ui.component.MyRewardItem(
+ rewardType = com.danbam.indistraw.core.ui.component.RewardType.Expand,
+ item = it
+ ) {
}
Spacer(modifier = Modifier.height(45.dp))
@@ -272,7 +275,7 @@ fun MyFundingScreen(
)
)
repeat(state.myFundingEntity.reward.size) { index ->
- MyRewardItem(item = state.myFundingEntity.reward[index]) {
+ com.danbam.indistraw.core.ui.component.MyRewardItem(item = state.myFundingEntity.reward[index]) {
isActor = false
selectedReward = it
openSheet()
diff --git a/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/pay/FundingRewardScreen.kt b/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/pay/FundingRewardScreen.kt
index 5d209015..56d1cefc 100644
--- a/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/pay/FundingRewardScreen.kt
+++ b/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/pay/FundingRewardScreen.kt
@@ -40,8 +40,8 @@ import com.danbam.indistraw.core.design_system.component.IndiStrawTextField
import com.danbam.indistraw.core.design_system.util.android.findActivity
import com.danbam.indistraw.core.design_system.util.androidx.indiStrawClickable
import com.danbam.indistraw.core.design_system.util.androidx.observeWithLifecycle
-import com.danbam.indistraw.core.design_system.util.bootpay.bootPayCreate
-import com.danbam.indistraw.core.design_system.util.bootpay.bootPayPayload
+import com.danbam.indistraw.core.ui.bootpay.bootPayCreate
+import com.danbam.indistraw.core.ui.bootpay.bootPayPayload
import kotlinx.coroutines.InternalCoroutinesApi
sealed class Payment(val stringId: Int, val method: String) {
@@ -292,10 +292,10 @@ fun FundingRewardScreen(
)
IndiStrawButton(text = stringResource(id = R.string.pay)) {
context.findActivity()?.let {
- bootPayCreate(
+ com.danbam.indistraw.core.ui.bootpay.bootPayCreate(
activity = it,
applicationContext = it.applicationContext,
- payload = bootPayPayload(
+ payload = com.danbam.indistraw.core.ui.bootpay.bootPayPayload(
title = rewardTitle,
price = (rewardPrice + addFundingMoney).toDouble(),
orderId = state.receiptId,
diff --git a/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/pay/FundingRewardViewModel.kt b/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/pay/FundingRewardViewModel.kt
index d027e44d..bd71a7d8 100644
--- a/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/pay/FundingRewardViewModel.kt
+++ b/feature/mobile/funding/src/main/kotlin/com/danbam/indistraw/feature/mobile/funding/pay/FundingRewardViewModel.kt
@@ -2,7 +2,7 @@ package com.danbam.indistraw.feature.mobile.funding.pay
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
-import com.danbam.indistraw.core.param.funding.FundingParam
+import com.danbam.indistraw.core.domain.param.funding.FundingParam
import com.danbam.indistraw.core.domain.usecase.account.GetProfileUseCase
import com.danbam.indistraw.core.domain.usecase.funding.FundingUseCase
import com.danbam.indistraw.core.domain.usecase.funding.GetReceiptUseCase
diff --git a/feature/mobile/main/src/main/kotlin/com/danbam/indistraw/feature/mobile/main/intro/IntroViewModel.kt b/feature/mobile/main/src/main/kotlin/com/danbam/indistraw/feature/mobile/main/intro/IntroViewModel.kt
index c9bf144b..bfb63b48 100644
--- a/feature/mobile/main/src/main/kotlin/com/danbam/indistraw/feature/mobile/main/intro/IntroViewModel.kt
+++ b/feature/mobile/main/src/main/kotlin/com/danbam/indistraw/feature/mobile/main/intro/IntroViewModel.kt
@@ -2,7 +2,7 @@ package com.danbam.indistraw.feature.mobile.main.intro
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
-import com.danbam.indistraw.core.design_system.util.danbam.errorHandling
+import com.danbam.indistraw.core.ui.handling.errorHandling
import com.danbam.indistraw.core.domain.usecase.auth.IsLoginUseCase
import com.danbam.indistraw.core.domain.usecase.system.FetchLanguageUseCase
import dagger.hilt.android.lifecycle.HiltViewModel
diff --git a/feature/mobile/main/src/main/kotlin/com/danbam/indistraw/feature/mobile/main/main/MainContract.kt b/feature/mobile/main/src/main/kotlin/com/danbam/indistraw/feature/mobile/main/main/MainContract.kt
index 37d268a7..fb006b7d 100644
--- a/feature/mobile/main/src/main/kotlin/com/danbam/indistraw/feature/mobile/main/main/MainContract.kt
+++ b/feature/mobile/main/src/main/kotlin/com/danbam/indistraw/feature/mobile/main/main/MainContract.kt
@@ -1,8 +1,8 @@
package com.danbam.indistraw.feature.mobile.main.main
-import com.danbam.indistraw.core.entity.banner.BannerEntity
-import com.danbam.indistraw.core.entity.funding.FundingEntity
-import com.danbam.indistraw.core.entity.movie.MovieEntity
+import com.danbam.indistraw.core.domain.entity.banner.BannerEntity
+import com.danbam.indistraw.core.domain.entity.funding.FundingEntity
+import com.danbam.indistraw.core.domain.entity.movie.MovieEntity
data class MainState(
diff --git a/feature/mobile/main/src/main/kotlin/com/danbam/indistraw/feature/mobile/main/main/MainScreen.kt b/feature/mobile/main/src/main/kotlin/com/danbam/indistraw/feature/mobile/main/main/MainScreen.kt
index 1d162090..3038248c 100644
--- a/feature/mobile/main/src/main/kotlin/com/danbam/indistraw/feature/mobile/main/main/MainScreen.kt
+++ b/feature/mobile/main/src/main/kotlin/com/danbam/indistraw/feature/mobile/main/main/MainScreen.kt
@@ -12,6 +12,7 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.material.Divider
+import androidx.compose.material.ExperimentalMaterialApi
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState
@@ -34,23 +35,27 @@ import com.danbam.indistraw.core.design_system.attribute.IndiStrawIconList
import com.danbam.indistraw.core.design_system.component.ExampleTextMedium
import com.danbam.indistraw.core.design_system.component.ImageButton
import com.danbam.indistraw.core.design_system.component.IndiStrawBanner
+import com.danbam.indistraw.core.design_system.component.IndiStrawBottomSheetLayout
import com.danbam.indistraw.core.design_system.component.IndiStrawColumnBackground
-import com.danbam.indistraw.core.design_system.component.IndiStrawColumnTab
+import com.danbam.indistraw.core.ui.component.IndiStrawColumnTab
import com.danbam.indistraw.core.design_system.component.IndiStrawHeader
-import com.danbam.indistraw.core.design_system.component.IndiStrawRowTab
-import com.danbam.indistraw.core.design_system.component.IndiStrawTab
-import com.danbam.indistraw.core.design_system.component.MovieTab
+import com.danbam.indistraw.core.ui.component.IndiStrawRowTab
+import com.danbam.indistraw.core.ui.component.IndiStrawTab
+import com.danbam.indistraw.core.ui.component.MovieTab
import com.danbam.indistraw.core.design_system.component.Shape
+import com.danbam.indistraw.core.design_system.component.TitleRegular
import com.danbam.indistraw.core.design_system.component.TitleSemiBold
import com.danbam.indistraw.core.design_system.util.android.findActivity
import com.danbam.indistraw.core.design_system.util.androidx.indiStrawClickable
import com.danbam.indistraw.feature.mobile.navigation.funding.FundingDeepLinkKey
import com.danbam.indistraw.feature.mobile.navigation.funding.FundingNavigationItem
+import com.danbam.indistraw.feature.mobile.navigation.movie.PeopleType
import com.danbam.indistraw.feature.mobile.navigation.movie.MovieDeepLinkKey
import com.danbam.indistraw.feature.mobile.navigation.movie.MovieNavigationItem
import com.danbam.indistraw.feature.mobile.navigation.profile.ProfileNavigationItem
import com.danbam.indistraw.feature.mobile.navigation.search.SearchNavigationItem
+@OptIn(ExperimentalMaterialApi::class)
@Composable
fun MainScreen(
navController: NavController,
@@ -61,7 +66,8 @@ fun MainScreen(
val sideEffect = container.sideEffectFlow
val context = LocalContext.current
- var currentMovieTab: MovieTab by remember { mutableStateOf(MovieTab.PopularMovie) }
+ var currentMovieTab: com.danbam.indistraw.core.ui.component.MovieTab by remember { mutableStateOf(
+ com.danbam.indistraw.core.ui.component.MovieTab.PopularMovie) }
BackHandler {
context.findActivity()?.finish()
@@ -77,133 +83,216 @@ fun MainScreen(
mainViewModel.movieList(currentMovieTab)
}
- IndiStrawColumnBackground(
- scrollEnabled = true
- ) {
- IndiStrawHeader(
- isBackBtn = false
+ IndiStrawBottomSheetLayout(sheetContent = {
+ Divider(
+ modifier = Modifier
+ .padding(top = 53.dp)
+ .height(1.dp)
+ .fillMaxWidth()
+ .background(IndiStrawTheme.colors.gray2)
+ )
+ TitleRegular(
+ modifier = Modifier
+ .fillMaxWidth()
+ .padding(horizontal = 25.dp, vertical = 20.dp)
+ .indiStrawClickable { navController.navigate(MovieNavigationItem.SearchPeople.route + MovieDeepLinkKey.PEOPLE_TYPE + PeopleType.DIRECTOR.route + MovieDeepLinkKey.IS_ENROLL + true) },
+ text = stringResource(id = R.string.enroll_search_director)
+ )
+ Divider(
+ modifier = Modifier
+ .height(1.dp)
+ .fillMaxWidth()
+ .background(IndiStrawTheme.colors.gray2)
+ )
+ TitleRegular(
+ modifier = Modifier
+ .fillMaxWidth()
+ .padding(horizontal = 25.dp, vertical = 20.dp)
+ .indiStrawClickable { navController.navigate(MovieNavigationItem.WritePeople.route + MovieDeepLinkKey.PEOPLE_TYPE + PeopleType.DIRECTOR.route + MovieDeepLinkKey.IS_ENROLL + true) },
+ text = stringResource(id = R.string.enroll_new_director)
+ )
+ Divider(
+ modifier = Modifier
+ .height(1.dp)
+ .fillMaxWidth()
+ .background(IndiStrawTheme.colors.gray2)
+ )
+ TitleRegular(
+ modifier = Modifier
+ .fillMaxWidth()
+ .padding(horizontal = 25.dp, vertical = 20.dp)
+ .indiStrawClickable { navController.navigate(MovieNavigationItem.SearchPeople.route + MovieDeepLinkKey.PEOPLE_TYPE + PeopleType.ACTOR.route + MovieDeepLinkKey.IS_ENROLL + true) },
+ text = stringResource(id = R.string.enroll_search_actor)
+ )
+ Divider(
+ modifier = Modifier
+ .height(1.dp)
+ .fillMaxWidth()
+ .background(IndiStrawTheme.colors.gray2)
+ )
+ TitleRegular(
+ modifier = Modifier
+ .fillMaxWidth()
+ .padding(horizontal = 25.dp, vertical = 20.dp)
+ .indiStrawClickable { navController.navigate(MovieNavigationItem.WritePeople.route + MovieDeepLinkKey.PEOPLE_TYPE + PeopleType.ACTOR.route + MovieDeepLinkKey.IS_ENROLL + true) },
+ text = stringResource(id = R.string.enroll_new_actor)
+ )
+ Divider(
+ modifier = Modifier
+ .height(1.dp)
+ .fillMaxWidth()
+ .background(IndiStrawTheme.colors.gray2)
+ )
+ Spacer(modifier = Modifier.height(140.dp))
+ }) { _, openBottomSheet ->
+ IndiStrawColumnBackground(
+ scrollEnabled = true
) {
- Row(
- verticalAlignment = Alignment.CenterVertically
+ IndiStrawHeader(
+ isBackBtn = false
) {
- IndiStrawIcon(modifier = Modifier.indiStrawClickable {
- navController.navigate(SearchNavigationItem.Search.route)
- }, icon = IndiStrawIconList.Search)
- if (state.profileUrl != null) {
- ImageButton(
- modifier = Modifier
- .padding(start = 26.dp)
- .size(30.dp),
- imgSrc = state.profileUrl,
- shape = Shape.Circle
- ) {
- navController.navigate(ProfileNavigationItem.Profile.route)
- }
- } else {
- Box(
- modifier = Modifier
- .indiStrawClickable { navController.navigate(ProfileNavigationItem.Profile.route) }
- .padding(start = 26.dp)
- .size(30.dp)
- .background(
- color = IndiStrawTheme.colors.gray,
- shape = IndiStrawTheme.shapes.circle
- )
- ) {
- IndiStrawIcon(
+ Row(
+ verticalAlignment = Alignment.CenterVertically
+ ) {
+ IndiStrawIcon(modifier = Modifier.indiStrawClickable {
+ navController.navigate(SearchNavigationItem.Search.route)
+ }, icon = IndiStrawIconList.Search)
+ if (state.profileUrl != null) {
+ ImageButton(
modifier = Modifier
- .align(Alignment.Center),
- icon = IndiStrawIconList.Profile,
- contentScale = ContentScale.Crop
- )
+ .padding(start = 26.dp)
+ .size(30.dp),
+ imgSrc = state.profileUrl,
+ shape = Shape.Circle
+ ) {
+ navController.navigate(ProfileNavigationItem.Profile.route)
+ }
+ } else {
+ Box(
+ modifier = Modifier
+ .indiStrawClickable { navController.navigate(ProfileNavigationItem.Profile.route) }
+ .padding(start = 26.dp)
+ .size(30.dp)
+ .background(
+ color = IndiStrawTheme.colors.gray,
+ shape = IndiStrawTheme.shapes.circle
+ )
+ ) {
+ IndiStrawIcon(
+ modifier = Modifier
+ .align(Alignment.Center),
+ icon = IndiStrawIconList.Profile,
+ contentScale = ContentScale.Crop
+ )
+ }
}
}
}
- }
- IndiStrawBanner(itemCount = state.bannerList.size) {
- ImageButton(
- modifier = Modifier
- .padding(horizontal = 15.dp)
- .fillMaxWidth(),
- imgSrc = state.bannerList[it].thumbnailUrl,
- shape = Shape.Rectangle
- ) {
- }
- }
- IndiStrawRowTab(
- modifier = Modifier
- .padding(start = 15.dp, top = 20.dp),
- itemList = state.movieList,
- tabHeader = {
- IndiStrawTab(
- text = stringResource(id = R.string.popular),
- isSelect = currentMovieTab == MovieTab.PopularMovie
- ) {
- currentMovieTab = MovieTab.PopularMovie
- }
- Spacer(modifier = Modifier.width(16.dp))
- IndiStrawTab(
- text = stringResource(id = R.string.recommend),
- isSelect = currentMovieTab == MovieTab.RecommendMovie
- ) {
- currentMovieTab = MovieTab.RecommendMovie
- }
- Spacer(modifier = Modifier.width(16.dp))
- IndiStrawTab(
- text = stringResource(id = R.string.recent),
- isSelect = currentMovieTab == MovieTab.RecentMovie
+ IndiStrawBanner(itemCount = state.bannerList.size) {
+ ImageButton(
+ modifier = Modifier
+ .padding(horizontal = 15.dp)
+ .fillMaxWidth(),
+ imgSrc = state.bannerList[it].thumbnailUrl,
+ shape = Shape.Rectangle
) {
- currentMovieTab = MovieTab.RecentMovie
}
- }, moreData = {
- navController.navigate(MovieNavigationItem.All.route)
}
- ) {
- navController.navigate(MovieNavigationItem.Detail.route + MovieDeepLinkKey.MOVIE_INDEX + it)
- }
- IndiStrawColumnTab(
- itemList = state.fundingPopularList,
- tabHeader = {
- TitleSemiBold(
- modifier = Modifier.padding(start = 15.dp, top = 28.dp),
- text = stringResource(id = R.string.crowd_funding),
- fontSize = 16
- )
- },
- moreData = { navController.navigate(FundingNavigationItem.All.route) },
- ) {
- navController.navigate(FundingNavigationItem.Detail.route + FundingDeepLinkKey.FUNDING_INDEX + it)
- }
- Spacer(modifier = Modifier.height(16.dp))
- Column(
- modifier = Modifier
- .padding(horizontal = 15.dp)
- .fillMaxWidth()
- .background(IndiStrawTheme.colors.lightBlack, IndiStrawTheme.shapes.defaultRounded)
- .padding(vertical = 18.dp),
- ) {
- ExampleTextMedium(
- modifier = Modifier
- .fillMaxWidth()
- .padding(horizontal = 13.dp)
- .indiStrawClickable { navController.navigate(MovieNavigationItem.WriteIntroduce.route) },
- text = stringResource(id = R.string.make_indi_movie)
- )
- Divider(
+ com.danbam.indistraw.core.ui.component.IndiStrawRowTab(
modifier = Modifier
- .padding(vertical = 18.dp)
- .height(1.dp)
- .fillMaxWidth()
- .background(IndiStrawTheme.colors.darkGray3)
- )
- ExampleTextMedium(
+ .padding(start = 15.dp, top = 20.dp),
+ itemList = state.movieList,
+ tabHeader = {
+ com.danbam.indistraw.core.ui.component.IndiStrawTab(
+ text = stringResource(id = R.string.popular),
+ isSelect = currentMovieTab == com.danbam.indistraw.core.ui.component.MovieTab.PopularMovie
+ ) {
+ currentMovieTab =
+ com.danbam.indistraw.core.ui.component.MovieTab.PopularMovie
+ }
+ Spacer(modifier = Modifier.width(16.dp))
+ com.danbam.indistraw.core.ui.component.IndiStrawTab(
+ text = stringResource(id = R.string.recommend),
+ isSelect = currentMovieTab == com.danbam.indistraw.core.ui.component.MovieTab.RecommendMovie
+ ) {
+ currentMovieTab =
+ com.danbam.indistraw.core.ui.component.MovieTab.RecommendMovie
+ }
+ Spacer(modifier = Modifier.width(16.dp))
+ com.danbam.indistraw.core.ui.component.IndiStrawTab(
+ text = stringResource(id = R.string.recent),
+ isSelect = currentMovieTab == com.danbam.indistraw.core.ui.component.MovieTab.RecentMovie
+ ) {
+ currentMovieTab =
+ com.danbam.indistraw.core.ui.component.MovieTab.RecentMovie
+ }
+ }, moreData = {
+ navController.navigate(MovieNavigationItem.All.route)
+ }
+ ) {
+ navController.navigate(MovieNavigationItem.Detail.route + MovieDeepLinkKey.MOVIE_INDEX + it)
+ }
+ com.danbam.indistraw.core.ui.component.IndiStrawColumnTab(
+ itemList = state.fundingPopularList,
+ tabHeader = {
+ TitleSemiBold(
+ modifier = Modifier.padding(start = 15.dp, top = 28.dp),
+ text = stringResource(id = R.string.crowd_funding),
+ fontSize = 16
+ )
+ },
+ moreData = { navController.navigate(FundingNavigationItem.All.route) },
+ ) {
+ navController.navigate(FundingNavigationItem.Detail.route + FundingDeepLinkKey.FUNDING_INDEX + it)
+ }
+ Spacer(modifier = Modifier.height(16.dp))
+ Column(
modifier = Modifier
+ .padding(horizontal = 15.dp)
.fillMaxWidth()
- .padding(horizontal = 13.dp)
- .indiStrawClickable { navController.navigate(FundingNavigationItem.Make.route) },
- text = stringResource(id = R.string.make_crowd_fund)
- )
+ .background(
+ IndiStrawTheme.colors.lightBlack,
+ IndiStrawTheme.shapes.defaultRounded
+ )
+ .padding(vertical = 18.dp),
+ ) {
+ ExampleTextMedium(
+ modifier = Modifier
+ .fillMaxWidth()
+ .padding(horizontal = 13.dp)
+ .indiStrawClickable { navController.navigate(MovieNavigationItem.WriteIntroduce.route) },
+ text = stringResource(id = R.string.make_indi_movie)
+ )
+ Divider(
+ modifier = Modifier
+ .padding(vertical = 18.dp)
+ .height(1.dp)
+ .fillMaxWidth()
+ .background(IndiStrawTheme.colors.darkGray3)
+ )
+ ExampleTextMedium(
+ modifier = Modifier
+ .fillMaxWidth()
+ .padding(horizontal = 13.dp)
+ .indiStrawClickable { navController.navigate(FundingNavigationItem.Make.route) },
+ text = stringResource(id = R.string.make_crowd_fund)
+ )
+ Divider(
+ modifier = Modifier
+ .padding(vertical = 18.dp)
+ .height(1.dp)
+ .fillMaxWidth()
+ .background(IndiStrawTheme.colors.darkGray3)
+ )
+ ExampleTextMedium(
+ modifier = Modifier
+ .fillMaxWidth()
+ .padding(horizontal = 13.dp)
+ .indiStrawClickable { openBottomSheet() },
+ text = stringResource(id = R.string.enroll_director_or_actor)
+ )
+ }
+ Spacer(modifier = Modifier.height(40.dp))
}
- Spacer(modifier = Modifier.height(40.dp))
}
}
\ No newline at end of file
diff --git a/feature/mobile/main/src/main/kotlin/com/danbam/indistraw/feature/mobile/main/main/MainViewModel.kt b/feature/mobile/main/src/main/kotlin/com/danbam/indistraw/feature/mobile/main/main/MainViewModel.kt
index 8077830d..cac230d6 100644
--- a/feature/mobile/main/src/main/kotlin/com/danbam/indistraw/feature/mobile/main/main/MainViewModel.kt
+++ b/feature/mobile/main/src/main/kotlin/com/danbam/indistraw/feature/mobile/main/main/MainViewModel.kt
@@ -2,7 +2,7 @@ package com.danbam.indistraw.feature.mobile.main.main
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
-import com.danbam.indistraw.core.design_system.component.MovieTab
+import com.danbam.indistraw.core.ui.component.MovieTab
import com.danbam.indistraw.core.domain.usecase.account.GetProfileUseCase
import com.danbam.indistraw.core.domain.usecase.banner.GetBannerUseCase
import com.danbam.indistraw.core.domain.usecase.crowd_funding.FundingPopularListUseCase
@@ -52,16 +52,16 @@ class MainViewModel @Inject constructor(
}
}
- fun movieList(movieType: MovieTab) = intent {
+ fun movieList(movieType: com.danbam.indistraw.core.ui.component.MovieTab) = intent {
viewModelScope.launch {
when (movieType) {
- is MovieTab.PopularMovie -> {
+ is com.danbam.indistraw.core.ui.component.MovieTab.PopularMovie -> {
moviePopularListUseCase().onSuccess {
reduce { state.copy(movieList = it) }
}
}
- is MovieTab.RecommendMovie -> {
+ is com.danbam.indistraw.core.ui.component.MovieTab.RecommendMovie -> {
movieRecommendListUseCase().onSuccess {
reduce { state.copy(movieList = it) }
}
diff --git a/feature/mobile/movie/build.gradle.kts b/feature/mobile/movie/build.gradle.kts
index 2a96011e..c0094591 100644
--- a/feature/mobile/movie/build.gradle.kts
+++ b/feature/mobile/movie/build.gradle.kts
@@ -1,9 +1,18 @@
+import com.android.build.gradle.internal.cxx.configure.gradleLocalProperties
+
plugins {
id("indistraw-feature")
}
android {
namespace = "com.danbam.indistraw.feature.mobile.movie"
+ defaultConfig {
+ buildConfigField(
+ "String",
+ "VIDEO_PRE_PATH",
+ gradleLocalProperties(rootDir).getProperty("VIDEO_PRE_PATH")
+ )
+ }
}
dependencies {
diff --git a/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/all/MovieAllContract.kt b/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/all/MovieAllContract.kt
index bd7c96de..548e065e 100644
--- a/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/all/MovieAllContract.kt
+++ b/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/all/MovieAllContract.kt
@@ -1,7 +1,7 @@
package com.danbam.indistraw.feature.mobile.movie.all
import androidx.paging.PagingData
-import com.danbam.indistraw.core.entity.movie.MovieEntity
+import com.danbam.indistraw.core.domain.entity.movie.MovieEntity
import kotlinx.coroutines.flow.Flow
data class MovieAllState(
diff --git a/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/all/MovieAllScreen.kt b/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/all/MovieAllScreen.kt
index 3d4e9209..35b836af 100644
--- a/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/all/MovieAllScreen.kt
+++ b/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/all/MovieAllScreen.kt
@@ -24,7 +24,7 @@ import com.danbam.indistraw.core.design_system.component.IndiStrawColumnBackgrou
import com.danbam.indistraw.core.design_system.component.IndiStrawGenreList
import com.danbam.indistraw.core.design_system.component.IndiStrawHeader
import com.danbam.indistraw.core.design_system.component.MovieGenre
-import com.danbam.indistraw.core.design_system.component.MovieItem
+import com.danbam.indistraw.core.ui.component.MovieItem
import com.danbam.indistraw.feature.mobile.navigation.movie.MovieDeepLinkKey
import com.danbam.indistraw.feature.mobile.navigation.movie.MovieNavigationItem
@@ -69,7 +69,7 @@ fun MovieAllScreen(
horizontalArrangement = Arrangement.spacedBy(9.dp)
) {
items(pager.itemSnapshotList.items) {
- MovieItem(item = it) {
+ com.danbam.indistraw.core.ui.component.MovieItem(item = it) {
navController.navigate(MovieNavigationItem.Detail.route + MovieDeepLinkKey.MOVIE_INDEX + it)
}
}
diff --git a/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/detail/MovieDetailContract.kt b/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/detail/MovieDetailContract.kt
index 6e93db0f..03a15ab2 100644
--- a/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/detail/MovieDetailContract.kt
+++ b/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/detail/MovieDetailContract.kt
@@ -1,8 +1,7 @@
package com.danbam.indistraw.feature.mobile.movie.detail
-import com.danbam.indistraw.core.entity.movie.MovieDetailEntity
-import com.danbam.indistraw.core.entity.movie.MovieEntity
-
+import com.danbam.indistraw.core.domain.entity.movie.MovieDetailEntity
+import com.danbam.indistraw.core.domain.entity.movie.MovieEntity
data class MovieDetailState(
val movieDetailInfo: MovieDetailEntity = MovieDetailEntity(
diff --git a/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/detail/MovieDetailScreen.kt b/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/detail/MovieDetailScreen.kt
index c31ef973..7d10fb71 100644
--- a/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/detail/MovieDetailScreen.kt
+++ b/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/detail/MovieDetailScreen.kt
@@ -31,7 +31,6 @@ import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.navigation.NavController
import coil.compose.AsyncImage
-import com.danbam.indistraw.core.design_system.BuildConfig
import com.danbam.indistraw.core.design_system.IndiStrawTheme
import com.danbam.indistraw.core.design_system.attribute.IndiStrawIcon
import com.danbam.indistraw.core.design_system.attribute.IndiStrawIconList
@@ -48,7 +47,8 @@ import com.danbam.indistraw.core.design_system.util.androidx.RemoveOverScrollLaz
import com.danbam.indistraw.core.design_system.util.androidx.indiStrawClickable
import com.danbam.indistraw.core.design_system.R
import com.danbam.indistraw.core.design_system.util.androidx.getActivity
-import com.danbam.indistraw.core.entity.movie.MoviePeopleEntity
+import com.danbam.indistraw.core.domain.entity.movie.MoviePeopleEntity
+import com.danbam.indistraw.feature.mobile.movie.BuildConfig
import com.danbam.indistraw.feature.mobile.navigation.movie.MovieDeepLinkKey
import com.danbam.indistraw.feature.mobile.navigation.movie.MovieNavigationItem
diff --git a/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/detail/MovieDetailViewModel.kt b/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/detail/MovieDetailViewModel.kt
index 81a5d760..f6976adf 100644
--- a/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/detail/MovieDetailViewModel.kt
+++ b/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/detail/MovieDetailViewModel.kt
@@ -38,7 +38,7 @@ class MovieDetailViewModel @Inject constructor(
fun moviePeopleDetail(isActor: Boolean, actorIdx: Long) = intent {
viewModelScope.launch {
moviePeopleDetailUseCase(
- actorType = if (isActor) "actor" else "director",
+ peopleType = if (isActor) "actor" else "director",
actorIdx = actorIdx
).onSuccess {
reduce { state.copy(appearanceMovieList = it.movieList) }
diff --git a/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/make/AddActorScreen.kt b/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/make/AddPeopleScreen.kt
similarity index 80%
rename from feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/make/AddActorScreen.kt
rename to feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/make/AddPeopleScreen.kt
index facd1170..1a6ab892 100644
--- a/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/make/AddActorScreen.kt
+++ b/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/make/AddPeopleScreen.kt
@@ -19,7 +19,7 @@ import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.navigation.NavController
import com.danbam.indistraw.core.design_system.IndiStrawTheme
-import com.danbam.indistraw.core.design_system.component.AddPeopleList
+import com.danbam.indistraw.core.ui.component.AddPeopleList
import com.danbam.indistraw.core.design_system.component.IndiStrawBottomSheetLayout
import com.danbam.indistraw.core.design_system.component.IndiStrawColumnBackground
import com.danbam.indistraw.core.design_system.component.IndiStrawHeader
@@ -30,19 +30,14 @@ import com.danbam.indistraw.core.design_system.util.androidx.getActivity
import com.danbam.indistraw.core.design_system.util.androidx.indiStrawClickable
import com.danbam.indistraw.core.design_system.util.androidx.observeWithLifecycle
import com.danbam.indistraw.feature.mobile.navigation.main.MainNavigationItem
-import com.danbam.indistraw.feature.mobile.navigation.movie.ActorType
+import com.danbam.indistraw.feature.mobile.navigation.movie.PeopleType
import com.danbam.indistraw.feature.mobile.navigation.movie.MovieDeepLinkKey
import com.danbam.indistraw.feature.mobile.navigation.movie.MovieNavigationItem
import kotlinx.coroutines.InternalCoroutinesApi
-sealed class AddPeopleType {
- object Director : AddPeopleType()
- object Actor : AddPeopleType()
-}
-
@OptIn(ExperimentalMaterialApi::class, InternalCoroutinesApi::class)
@Composable
-fun AddActorScreen(
+fun AddPeopleScreen(
navController: NavController,
makeMovieViewModel: MakeMovieViewModel = hiltViewModel(getActivity())
) {
@@ -50,7 +45,7 @@ fun AddActorScreen(
val state = container.stateFlow.collectAsState().value
val sideEffect = container.sideEffectFlow
- var addPeopleType: AddPeopleType by remember { mutableStateOf(AddPeopleType.Director) }
+ var addPeopleType: PeopleType by remember { mutableStateOf(PeopleType.DIRECTOR) }
sideEffect.observeWithLifecycle {
if (it is MakeMovieSideEffect.SuccessCreateMovie) {
@@ -72,8 +67,8 @@ fun AddActorScreen(
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 25.dp, vertical = 20.dp)
- .indiStrawClickable { navController.navigate(MovieNavigationItem.SearchActor.route + MovieDeepLinkKey.ADD_ACTOR_TYPE + if (addPeopleType == AddPeopleType.Director) ActorType.DIRECTOR else ActorType.ACTOR) },
- text = stringResource(id = if (addPeopleType == AddPeopleType.Director) R.string.add_search_director else R.string.add_search_actor)
+ .indiStrawClickable { navController.navigate(MovieNavigationItem.SearchPeople.route + MovieDeepLinkKey.PEOPLE_TYPE + addPeopleType.route + MovieDeepLinkKey.IS_ENROLL + false) },
+ text = stringResource(id = if (addPeopleType == PeopleType.DIRECTOR) R.string.add_search_director else R.string.add_search_actor)
)
Divider(
modifier = Modifier
@@ -85,8 +80,8 @@ fun AddActorScreen(
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 25.dp, vertical = 20.dp)
- .indiStrawClickable { navController.navigate(MovieNavigationItem.WriteActor.route + MovieDeepLinkKey.ADD_ACTOR_TYPE + if (addPeopleType == AddPeopleType.Director) ActorType.DIRECTOR else ActorType.ACTOR) },
- text = stringResource(id = if (addPeopleType == AddPeopleType.Director) R.string.add_new_director else R.string.add_new_actor)
+ .indiStrawClickable { navController.navigate(MovieNavigationItem.WritePeople.route + MovieDeepLinkKey.PEOPLE_TYPE + addPeopleType.route + MovieDeepLinkKey.IS_ENROLL + false) },
+ text = stringResource(id = if (addPeopleType == PeopleType.DIRECTOR) R.string.add_new_director else R.string.add_new_actor)
)
Divider(
modifier = Modifier
@@ -104,24 +99,24 @@ fun AddActorScreen(
modifier = Modifier.padding(start = 15.dp, top = 50.dp, bottom = 16.dp),
text = stringResource(id = R.string.add_director)
)
- AddPeopleList(
+ com.danbam.indistraw.core.ui.component.AddPeopleList(
onAddPeople = {
- addPeopleType = AddPeopleType.Director
+ addPeopleType = PeopleType.DIRECTOR
openBottomSheet()
},
peopleList = state.directorList,
- onRemove = { makeMovieViewModel.removeMoviePeople(ActorType.DIRECTOR, it) })
+ onRemove = { makeMovieViewModel.removeMoviePeople(PeopleType.DIRECTOR, it) })
TitleRegular(
modifier = Modifier.padding(start = 15.dp, top = 50.dp, bottom = 16.dp),
text = stringResource(id = R.string.add_actor)
)
- AddPeopleList(
+ com.danbam.indistraw.core.ui.component.AddPeopleList(
onAddPeople = {
- addPeopleType = AddPeopleType.Actor
+ addPeopleType = PeopleType.ACTOR
openBottomSheet()
},
peopleList = state.actorList,
- onRemove = { makeMovieViewModel.removeMoviePeople(ActorType.ACTOR, it) })
+ onRemove = { makeMovieViewModel.removeMoviePeople(PeopleType.ACTOR, it) })
Spacer(modifier = Modifier.weight(1F))
IndiStrawButton(text = stringResource(id = R.string.check)) {
makeMovieViewModel.movieCreate()
diff --git a/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/make/MakeMovieContract.kt b/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/make/MakeMovieContract.kt
index 290be75f..906da642 100644
--- a/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/make/MakeMovieContract.kt
+++ b/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/make/MakeMovieContract.kt
@@ -1,6 +1,6 @@
package com.danbam.indistraw.feature.mobile.movie.make
-import com.danbam.indistraw.core.entity.movie.MoviePeopleEntity
+import com.danbam.indistraw.core.domain.entity.movie.MoviePeopleEntity
data class MakeMovieState(
val thumbnailUrl: String? = null,
@@ -16,5 +16,6 @@ data class MakeMovieState(
sealed class MakeMovieSideEffect {
object Next : MakeMovieSideEffect()
+ object SuccessEnroll : MakeMovieSideEffect()
object SuccessCreateMovie : MakeMovieSideEffect()
}
\ No newline at end of file
diff --git a/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/make/MakeMovieViewModel.kt b/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/make/MakeMovieViewModel.kt
index 12c2b90b..4306c5dd 100644
--- a/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/make/MakeMovieViewModel.kt
+++ b/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/make/MakeMovieViewModel.kt
@@ -2,15 +2,16 @@ package com.danbam.indistraw.feature.mobile.movie.make
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
-import com.danbam.indistraw.core.design_system.util.danbam.errorHandling
-import com.danbam.indistraw.core.entity.movie.MoviePeopleEntity
-import com.danbam.indistraw.core.param.movie.MovieCreateParam
-import com.danbam.indistraw.core.param.movie.MoviePeopleParam
+import com.danbam.indistraw.core.ui.handling.errorHandling
+import com.danbam.indistraw.core.domain.entity.movie.MoviePeopleEntity
+import com.danbam.indistraw.core.domain.param.movie.MovieCreateParam
+import com.danbam.indistraw.core.domain.param.movie.MoviePeopleParam
+import com.danbam.indistraw.core.domain.usecase.account.EnrollMoviePeopleUseCase
import com.danbam.indistraw.core.domain.usecase.file.SendFileUseCase
import com.danbam.indistraw.core.domain.usecase.movie.AddMoviePeopleUseCase
import com.danbam.indistraw.core.domain.usecase.movie.MovieCreateUseCase
import com.danbam.indistraw.core.domain.usecase.movie.SearchMoviePeopleUseCase
-import com.danbam.indistraw.feature.mobile.navigation.movie.ActorType
+import com.danbam.indistraw.feature.mobile.navigation.movie.PeopleType
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.launch
import org.orbitmvi.orbit.ContainerHost
@@ -26,7 +27,8 @@ class MakeMovieViewModel @Inject constructor(
private val sendFileUseCase: SendFileUseCase,
private val searchMoviePeopleUseCase: SearchMoviePeopleUseCase,
private val addMoviePeopleUseCase: AddMoviePeopleUseCase,
- private val movieCreateUseCase: MovieCreateUseCase
+ private val movieCreateUseCase: MovieCreateUseCase,
+ private val enrollMoviePeopleUseCase: EnrollMoviePeopleUseCase
) : ContainerHost, ViewModel() {
override val container = container(MakeMovieState())
@@ -68,10 +70,10 @@ class MakeMovieViewModel @Inject constructor(
}
}
- fun searchMoviePeople(actorType: String, name: String) = intent {
+ fun searchMoviePeople(peopleType: String, name: String) = intent {
viewModelScope.launch {
searchMoviePeopleUseCase(
- actorType = if (actorType == ActorType.ACTOR) "actor" else "director",
+ peopleType = peopleType,
name = name
).onSuccess {
reduce { state.copy(searchMoviePeopleList = it) }
@@ -79,57 +81,67 @@ class MakeMovieViewModel @Inject constructor(
}
}
- fun selectMoviePeople(actorType: String, moviePeople: MoviePeopleEntity) = intent {
- if (actorType == ActorType.ACTOR) {
- reduce {
- state.copy(actorList = state.actorList.plus(moviePeople))
+ fun selectMoviePeople(peopleType: String, moviePeople: MoviePeopleEntity, isEnroll: Boolean) =
+ intent {
+ if (isEnroll) {
+ enrollMoviePeople(peopleType = peopleType, actorIdx = moviePeople.actorIdx)
+ } else {
+ if (peopleType == PeopleType.ACTOR.route) {
+ reduce {
+ state.copy(actorList = state.actorList.plus(moviePeople))
+ }
+ } else reduce {
+ state.copy(directorList = state.directorList.plus(moviePeople))
+ }
+ postSideEffect(MakeMovieSideEffect.Next)
}
- } else reduce {
- state.copy(directorList = state.directorList.plus(moviePeople))
}
- postSideEffect(MakeMovieSideEffect.Next)
- }
- fun addMoviePeople(actorType: String, name: String, profileUrl: String?) = intent {
- if (name.isEmpty()) return@intent
- else if (profileUrl.isNullOrBlank()) return@intent
- else {
- viewModelScope.launch {
- addMoviePeopleUseCase(
- actorType = if (actorType == ActorType.ACTOR) "actor" else "director",
- moviePeopleParam = MoviePeopleParam(name = name, profileUrl = profileUrl)
- ).onSuccess {
- if (actorType == ActorType.ACTOR) {
- reduce {
- state.copy(
- actorList = state.actorList.plus(
- MoviePeopleEntity(
- actorIdx = it,
- name = name,
- profileUrl = profileUrl
+ fun addMoviePeople(peopleType: String, name: String, profileUrl: String?, isEnroll: Boolean) =
+ intent {
+ if (name.isEmpty()) return@intent
+ else if (profileUrl.isNullOrBlank()) return@intent
+ else {
+ viewModelScope.launch {
+ addMoviePeopleUseCase(
+ peopleType = peopleType,
+ moviePeopleParam = MoviePeopleParam(name = name, profileUrl = profileUrl)
+ ).onSuccess {
+ if (isEnroll) {
+ enrollMoviePeople(peopleType = peopleType, actorIdx = it)
+ } else {
+ if (peopleType == PeopleType.ACTOR.route) {
+ reduce {
+ state.copy(
+ actorList = state.actorList.plus(
+ MoviePeopleEntity(
+ actorIdx = it,
+ name = name,
+ profileUrl = profileUrl
+ )
+ )
+ )
+ }
+ } else reduce {
+ state.copy(
+ directorList = state.directorList.plus(
+ MoviePeopleEntity(
+ actorIdx = it,
+ name = name,
+ profileUrl = profileUrl
+ )
)
)
- )
+ }
+ postSideEffect(MakeMovieSideEffect.Next)
}
- } else reduce {
- state.copy(
- directorList = state.directorList.plus(
- MoviePeopleEntity(
- actorIdx = it,
- name = name,
- profileUrl = profileUrl
- )
- )
- )
}
- postSideEffect(MakeMovieSideEffect.Next)
}
}
}
- }
- fun removeMoviePeople(actorType: String, index: Int) = intent {
- if (actorType == ActorType.ACTOR) {
+ fun removeMoviePeople(peopleType: PeopleType, index: Int) = intent {
+ if (peopleType == PeopleType.ACTOR) {
reduce {
state.copy(actorList = state.actorList.filterIndexed { i, _ -> i != index })
}
@@ -160,4 +172,12 @@ class MakeMovieViewModel @Inject constructor(
}
}
}
+
+ fun enrollMoviePeople(peopleType: String, actorIdx: Long) = intent {
+ viewModelScope.launch {
+ enrollMoviePeopleUseCase(peopleType = peopleType, actorIdx = actorIdx).onSuccess {
+ postSideEffect(MakeMovieSideEffect.SuccessEnroll)
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/make/SearchActorScreen.kt b/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/make/SearchPeopleScreen.kt
similarity index 92%
rename from feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/make/SearchActorScreen.kt
rename to feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/make/SearchPeopleScreen.kt
index ede46384..dccb5238 100644
--- a/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/make/SearchActorScreen.kt
+++ b/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/make/SearchPeopleScreen.kt
@@ -43,9 +43,10 @@ import kotlinx.coroutines.InternalCoroutinesApi
@OptIn(ExperimentalComposeUiApi::class, InternalCoroutinesApi::class)
@Composable
-fun SearchActorScreen(
+fun SearchPeopleScreen(
navController: NavController,
- addActorType: String,
+ peopleType: String,
+ isEnroll: Boolean,
makeMovieViewModel: MakeMovieViewModel = hiltViewModel(getActivity())
) {
val container = makeMovieViewModel.container
@@ -57,13 +58,13 @@ fun SearchActorScreen(
var search by remember { mutableStateOf("") }
sideEffect.observeWithLifecycle {
- if (it is MakeMovieSideEffect.Next) {
+ if (it is MakeMovieSideEffect.Next || it is MakeMovieSideEffect.SuccessEnroll) {
navController.popBackStack(keyboardController = keyboardController)
}
}
LaunchedEffect(search) {
- makeMovieViewModel.searchMoviePeople(actorType = addActorType, name = search)
+ makeMovieViewModel.searchMoviePeople(peopleType = peopleType, name = search)
}
IndiStrawColumnBackground {
@@ -91,8 +92,9 @@ fun SearchActorScreen(
.padding(15.dp)
.indiStrawClickable {
makeMovieViewModel.selectMoviePeople(
- addActorType,
- it
+ peopleType = peopleType,
+ moviePeople = it,
+ isEnroll = isEnroll
)
},
verticalAlignment = Alignment.CenterVertically
diff --git a/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/make/WriteIntroduceScreen.kt b/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/make/WriteIntroduceScreen.kt
index 8086c5c5..12021a44 100644
--- a/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/make/WriteIntroduceScreen.kt
+++ b/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/make/WriteIntroduceScreen.kt
@@ -26,7 +26,7 @@ import com.danbam.indistraw.core.design_system.IndiStrawTheme
import com.danbam.indistraw.core.design_system.R
import com.danbam.indistraw.core.design_system.attribute.IndiStrawIcon
import com.danbam.indistraw.core.design_system.attribute.IndiStrawIconList
-import com.danbam.indistraw.core.design_system.component.AddImageList
+import com.danbam.indistraw.core.ui.component.AddImageList
import com.danbam.indistraw.core.design_system.component.ExampleTextMedium
import com.danbam.indistraw.core.design_system.component.IndiStrawButton
import com.danbam.indistraw.core.design_system.component.IndiStrawColumnBackground
@@ -61,10 +61,13 @@ fun WriteIntroduceScreen(
var thumbnailUrl: String? by remember { mutableStateOf(state.thumbnailUrl) }
var movieUrl: String? by remember { mutableStateOf(state.movieUrl) }
var isCrowdFunding by remember { mutableStateOf(state.isFunding) }
+ var isLoading by remember { mutableStateOf(false) }
val imageList = remember { mutableStateListOf(*state.imageList.toTypedArray()) }
val launcher = rememberLauncher(selectFile = {
it?.let {
+ isLoading = true
makeMovieViewModel.uploadFile(it.toFile(context)) {
+ isLoading = false
movieUrl = it.split("/").last()
}
}
@@ -72,11 +75,12 @@ fun WriteIntroduceScreen(
sideEffect.observeWithLifecycle {
if (it is MakeMovieSideEffect.Next) {
- navController.navigate(MovieNavigationItem.AddActor.route)
+ navController.navigate(MovieNavigationItem.AddPeople.route)
}
}
IndiStrawColumnBackground(
+ isLoading = isLoading,
scrollEnabled = true
) {
IndiStrawHeader(
@@ -90,7 +94,9 @@ fun WriteIntroduceScreen(
imageUrl = thumbnailUrl,
selectGallery = {
it?.let {
+ isLoading = true
makeMovieViewModel.uploadFile(it.toFile(context)) {
+ isLoading = false
thumbnailUrl = it
}
}
@@ -153,12 +159,14 @@ fun WriteIntroduceScreen(
text = stringResource(id = R.string.add_image)
)
Spacer(modifier = Modifier.height(12.dp))
- AddImageList(
+ com.danbam.indistraw.core.ui.component.AddImageList(
modifier = Modifier.padding(start = 15.dp),
imageList = imageList,
onRemove = { imageList.removeAt(it) }) {
it?.let {
+ isLoading = true
makeMovieViewModel.uploadFile(it.toFile(context)) {
+ isLoading = false
imageList.add(it)
}
}
diff --git a/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/make/WriteActorScreen.kt b/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/make/WritePeopleScreen.kt
similarity index 92%
rename from feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/make/WriteActorScreen.kt
rename to feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/make/WritePeopleScreen.kt
index 8fa7e8d5..f60c6c7a 100644
--- a/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/make/WriteActorScreen.kt
+++ b/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/make/WritePeopleScreen.kt
@@ -31,9 +31,10 @@ import kotlinx.coroutines.InternalCoroutinesApi
@OptIn(InternalCoroutinesApi::class)
@Composable
-fun WriteActorScreen(
+fun WritePeopleScreen(
navController: NavController,
- addActorType: String,
+ peopleType: String,
+ isEnroll: Boolean,
makeMovieViewModel: MakeMovieViewModel = hiltViewModel(getActivity())
) {
val container = makeMovieViewModel.container
@@ -45,7 +46,7 @@ fun WriteActorScreen(
var profileUrl: String? by remember { mutableStateOf(null) }
sideEffect.observeWithLifecycle {
- if (it is MakeMovieSideEffect.Next) {
+ if (it is MakeMovieSideEffect.Next || it is MakeMovieSideEffect.SuccessEnroll) {
navController.popBackStack()
}
}
@@ -85,9 +86,10 @@ fun WriteActorScreen(
Spacer(modifier = Modifier.height(36.dp))
IndiStrawButton(text = stringResource(id = R.string.check)) {
makeMovieViewModel.addMoviePeople(
- actorType = addActorType,
+ peopleType = peopleType,
name = name,
- profileUrl = profileUrl
+ profileUrl = profileUrl,
+ isEnroll = isEnroll
)
}
}
diff --git a/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/navigation/MovieGraph.kt b/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/navigation/MovieGraph.kt
index 271680f2..beaf477b 100644
--- a/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/navigation/MovieGraph.kt
+++ b/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/navigation/MovieGraph.kt
@@ -7,12 +7,12 @@ import androidx.navigation.NavType
import androidx.navigation.navArgument
import com.danbam.indistraw.feature.mobile.movie.all.MovieAllScreen
import com.danbam.indistraw.feature.mobile.movie.detail.MovieDetailScreen
-import com.danbam.indistraw.feature.mobile.movie.make.AddActorScreen
-import com.danbam.indistraw.feature.mobile.movie.make.SearchActorScreen
-import com.danbam.indistraw.feature.mobile.movie.make.WriteActorScreen
+import com.danbam.indistraw.feature.mobile.movie.make.AddPeopleScreen
+import com.danbam.indistraw.feature.mobile.movie.make.SearchPeopleScreen
+import com.danbam.indistraw.feature.mobile.movie.make.WritePeopleScreen
import com.danbam.indistraw.feature.mobile.movie.make.WriteIntroduceScreen
import com.danbam.indistraw.feature.mobile.movie.play.MoviePlayScreen
-import com.danbam.indistraw.feature.mobile.navigation.movie.ActorType
+import com.danbam.indistraw.feature.mobile.navigation.movie.PeopleType
import com.danbam.indistraw.feature.mobile.navigation.movie.MovieDeepLinkKey
import com.danbam.indistraw.feature.mobile.navigation.movie.MovieNavigationItem
import com.google.accompanist.navigation.animation.composable
@@ -78,39 +78,51 @@ fun NavGraphBuilder.movieGraph(
composable(route = MovieNavigationItem.WriteIntroduce.route) {
WriteIntroduceScreen(navController = navController)
}
- composable(route = MovieNavigationItem.AddActor.route) {
- AddActorScreen(navController = navController)
+ composable(route = MovieNavigationItem.AddPeople.route) {
+ AddPeopleScreen(navController = navController)
}
composable(
- route = MovieNavigationItem.WriteActor.route
- + MovieDeepLinkKey.ADD_ACTOR_TYPE + "{${MovieDeepLinkKey.ADD_ACTOR_TYPE}}",
+ route = MovieNavigationItem.WritePeople.route
+ + MovieDeepLinkKey.PEOPLE_TYPE + "{${MovieDeepLinkKey.PEOPLE_TYPE}}"
+ + MovieDeepLinkKey.IS_ENROLL + "{${MovieDeepLinkKey.IS_ENROLL}}",
arguments = listOf(
- navArgument(MovieDeepLinkKey.ADD_ACTOR_TYPE) {
+ navArgument(MovieDeepLinkKey.PEOPLE_TYPE) {
type = NavType.StringType
+ },
+ navArgument(MovieDeepLinkKey.IS_ENROLL) {
+ type = NavType.BoolType
}
)
) {
- val addActorType =
- it.arguments?.getString(MovieDeepLinkKey.ADD_ACTOR_TYPE) ?: ActorType.ACTOR
- WriteActorScreen(
+ val peopleType =
+ it.arguments?.getString(MovieDeepLinkKey.PEOPLE_TYPE) ?: PeopleType.ACTOR.route
+ val isEnroll = it.arguments?.getBoolean(MovieDeepLinkKey.IS_ENROLL) ?: false
+ WritePeopleScreen(
navController = navController,
- addActorType = addActorType,
+ peopleType = peopleType,
+ isEnroll = isEnroll
)
}
composable(
- route = MovieNavigationItem.SearchActor.route
- + MovieDeepLinkKey.ADD_ACTOR_TYPE + "{${MovieDeepLinkKey.ADD_ACTOR_TYPE}}",
+ route = MovieNavigationItem.SearchPeople.route
+ + MovieDeepLinkKey.PEOPLE_TYPE + "{${MovieDeepLinkKey.PEOPLE_TYPE}}"
+ + MovieDeepLinkKey.IS_ENROLL + "{${MovieDeepLinkKey.IS_ENROLL}}",
arguments = listOf(
- navArgument(MovieDeepLinkKey.ADD_ACTOR_TYPE) {
+ navArgument(MovieDeepLinkKey.PEOPLE_TYPE) {
type = NavType.StringType
+ },
+ navArgument(MovieDeepLinkKey.IS_ENROLL) {
+ type = NavType.BoolType
}
)
) {
- val addActorType =
- it.arguments?.getString(MovieDeepLinkKey.ADD_ACTOR_TYPE) ?: ActorType.ACTOR
- SearchActorScreen(
+ val addPeopleType =
+ it.arguments?.getString(MovieDeepLinkKey.PEOPLE_TYPE) ?: PeopleType.ACTOR.route
+ val isEnroll = it.arguments?.getBoolean(MovieDeepLinkKey.IS_ENROLL) ?: false
+ SearchPeopleScreen(
navController = navController,
- addActorType = addActorType,
+ peopleType = addPeopleType,
+ isEnroll = isEnroll
)
}
}
\ No newline at end of file
diff --git a/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/play/MoviePlayScreen.kt b/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/play/MoviePlayScreen.kt
index 2f670485..ba68c090 100644
--- a/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/play/MoviePlayScreen.kt
+++ b/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/play/MoviePlayScreen.kt
@@ -9,7 +9,7 @@ import androidx.compose.runtime.collectAsState
import androidx.compose.ui.platform.LocalContext
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.navigation.NavController
-import com.danbam.indistraw.core.design_system.component.IndiStrawPlayer
+import com.danbam.indistraw.core.ui.exoplayer.IndiStrawPlayer
import com.danbam.indistraw.core.design_system.util.android.findActivity
import com.danbam.indistraw.core.design_system.util.androidx.getActivity
import com.danbam.indistraw.core.design_system.util.androidx.observeWithLifecycle
@@ -42,7 +42,7 @@ fun MoviePlayScreen(
}
}
- IndiStrawPlayer(
+ com.danbam.indistraw.core.ui.exoplayer.IndiStrawPlayer(
movieUrl = movieUrl,
movieName = movieName,
position = position,
diff --git a/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/play/MoviePlayViewModel.kt b/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/play/MoviePlayViewModel.kt
index 18bf9fa3..e14413c6 100644
--- a/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/play/MoviePlayViewModel.kt
+++ b/feature/mobile/movie/src/main/kotlin/com/danbam/indistraw/feature/mobile/movie/play/MoviePlayViewModel.kt
@@ -2,7 +2,7 @@ package com.danbam.indistraw.feature.mobile.movie.play
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
-import com.danbam.indistraw.core.param.movie.MovieHistoryParam
+import com.danbam.indistraw.core.domain.param.movie.MovieHistoryParam
import com.danbam.indistraw.core.domain.usecase.movie.AddMovieHistoryUseCase
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.launch
diff --git a/feature/mobile/navigation/src/main/kotlin/com/danbam/indistraw/feature/mobile/navigation/movie/MovieDeepLinkKey.kt b/feature/mobile/navigation/src/main/kotlin/com/danbam/indistraw/feature/mobile/navigation/movie/MovieDeepLinkKey.kt
index 5b5400af..f21256fd 100644
--- a/feature/mobile/navigation/src/main/kotlin/com/danbam/indistraw/feature/mobile/navigation/movie/MovieDeepLinkKey.kt
+++ b/feature/mobile/navigation/src/main/kotlin/com/danbam/indistraw/feature/mobile/navigation/movie/MovieDeepLinkKey.kt
@@ -1,10 +1,11 @@
package com.danbam.indistraw.feature.mobile.navigation.movie
object MovieDeepLinkKey {
- const val ADD_ACTOR_TYPE = "addActorType"
const val MOVIE_NAME = "movieName"
const val MOVIE_INDEX = "movieIndex"
const val MOVIE_URL = "movieUrl"
const val MOVIE_POSITION = "moviePosition"
const val IS_VERTICAL = "isVertical"
+ const val PEOPLE_TYPE = "peopleType"
+ const val IS_ENROLL = "isEnroll"
}
\ No newline at end of file
diff --git a/feature/mobile/navigation/src/main/kotlin/com/danbam/indistraw/feature/mobile/navigation/movie/MovieNavigationItem.kt b/feature/mobile/navigation/src/main/kotlin/com/danbam/indistraw/feature/mobile/navigation/movie/MovieNavigationItem.kt
index 979578eb..7f488b5a 100644
--- a/feature/mobile/navigation/src/main/kotlin/com/danbam/indistraw/feature/mobile/navigation/movie/MovieNavigationItem.kt
+++ b/feature/mobile/navigation/src/main/kotlin/com/danbam/indistraw/feature/mobile/navigation/movie/MovieNavigationItem.kt
@@ -5,7 +5,7 @@ sealed class MovieNavigationItem(val route: String) {
object Play : MovieNavigationItem("moviePlay")
object All : MovieNavigationItem("movieAll")
object WriteIntroduce : MovieNavigationItem("movieWriteIntroduce")
- object AddActor : MovieNavigationItem("movieAddActor")
- object SearchActor : MovieNavigationItem("movieSearchActor")
- object WriteActor : MovieNavigationItem("movieWriteActor")
+ object AddPeople : MovieNavigationItem("movieAddPeople")
+ object SearchPeople : MovieNavigationItem("movieSearchPeople")
+ object WritePeople : MovieNavigationItem("movieWritePeople")
}
\ No newline at end of file
diff --git a/feature/mobile/navigation/src/main/kotlin/com/danbam/indistraw/feature/mobile/navigation/movie/MovieType.kt b/feature/mobile/navigation/src/main/kotlin/com/danbam/indistraw/feature/mobile/navigation/movie/MovieType.kt
index aa919a3d..9d4729e5 100644
--- a/feature/mobile/navigation/src/main/kotlin/com/danbam/indistraw/feature/mobile/navigation/movie/MovieType.kt
+++ b/feature/mobile/navigation/src/main/kotlin/com/danbam/indistraw/feature/mobile/navigation/movie/MovieType.kt
@@ -1,6 +1,6 @@
package com.danbam.indistraw.feature.mobile.navigation.movie
-object ActorType {
- const val ACTOR = "actor"
- const val DIRECTOR = "director"
+sealed class PeopleType(val route: String) {
+ object ACTOR : PeopleType("actor")
+ object DIRECTOR : PeopleType("director")
}
\ No newline at end of file
diff --git a/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/detail_address/DetailAddressViewModel.kt b/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/detail_address/DetailAddressViewModel.kt
index 0a7dfd8f..eb57167e 100644
--- a/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/detail_address/DetailAddressViewModel.kt
+++ b/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/detail_address/DetailAddressViewModel.kt
@@ -2,7 +2,7 @@ package com.danbam.indistraw.feature.mobile.profile.detail_address
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
-import com.danbam.indistraw.core.param.auth.ChangeAddressParam
+import com.danbam.indistraw.core.domain.param.auth.ChangeAddressParam
import com.danbam.indistraw.core.domain.usecase.account.ChangeAddressUseCase
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.launch
diff --git a/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/edit_profile/EditProfileContract.kt b/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/edit_profile/EditProfileContract.kt
index 9642d54d..40fce145 100644
--- a/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/edit_profile/EditProfileContract.kt
+++ b/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/edit_profile/EditProfileContract.kt
@@ -9,6 +9,5 @@ data class EditProfileState(
sealed class EditProfileSideEffect {
object EmptyNameException : EditProfileSideEffect()
- object SuccessUpload : EditProfileSideEffect()
data class GetProfile(val name: String) : EditProfileSideEffect()
}
\ No newline at end of file
diff --git a/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/edit_profile/EditProfileScreen.kt b/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/edit_profile/EditProfileScreen.kt
index b3cd27c9..40e36c2c 100644
--- a/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/edit_profile/EditProfileScreen.kt
+++ b/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/edit_profile/EditProfileScreen.kt
@@ -57,6 +57,7 @@ fun EditProfileScreen(
val context = LocalContext.current
var name by remember { mutableStateOf(state.name) }
var errorText by remember { mutableStateOf("") }
+ var isLoading by remember { mutableStateOf(false) }
val nameFocusRequester = remember { FocusRequester() }
val errorList = mapOf(
@@ -69,9 +70,6 @@ fun EditProfileScreen(
name = it.name
}
- is EditProfileSideEffect.SuccessUpload -> {
- }
-
is EditProfileSideEffect.EmptyNameException -> {
nameFocusRequester.requestFocus()
errorText = errorList[it]!!
@@ -84,6 +82,7 @@ fun EditProfileScreen(
}
IndiStrawColumnBackground(
+ isLoading = isLoading,
onClickAction = {
focusManager.clearFocus()
keyboardController?.hide()
@@ -97,10 +96,20 @@ fun EditProfileScreen(
paddingValues = PaddingValues(22.dp),
imageUrl = state.profileUrl,
selectGallery = {
- it?.let { editProfileVieModel.setProfileImage(it.toFile(context)) }
+ it?.let {
+ isLoading = true
+ editProfileVieModel.setProfileImage(it.toFile(context)) {
+ isLoading = false
+ }
+ }
},
selectCamera = {
- it?.let { editProfileVieModel.setProfileImage(it.toFile(context)) }
+ it?.let {
+ isLoading = true
+ editProfileVieModel.setProfileImage(it.toFile(context)) {
+ isLoading = false
+ }
+ }
}) {
Spacer(modifier = Modifier.height(64.dp))
IndiStrawTextField(
diff --git a/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/edit_profile/EditProfileVieModel.kt b/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/edit_profile/EditProfileVieModel.kt
index 024c9473..f3e56e10 100644
--- a/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/edit_profile/EditProfileVieModel.kt
+++ b/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/edit_profile/EditProfileVieModel.kt
@@ -2,8 +2,8 @@ package com.danbam.indistraw.feature.mobile.profile.edit_profile
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
-import com.danbam.indistraw.core.design_system.util.danbam.errorHandling
-import com.danbam.indistraw.core.param.auth.EditProfileParam
+import com.danbam.indistraw.core.ui.handling.errorHandling
+import com.danbam.indistraw.core.domain.param.auth.EditProfileParam
import com.danbam.indistraw.core.domain.usecase.account.EditProfileUseCase
import com.danbam.indistraw.core.domain.usecase.account.GetProfileUseCase
import com.danbam.indistraw.core.domain.usecase.file.SendFileUseCase
@@ -41,11 +41,11 @@ class EditProfileVieModel @Inject constructor(
}
}
- fun setProfileImage(file: File) = intent {
+ fun setProfileImage(file: File, onUploaded: (String) -> Unit) = intent {
viewModelScope.launch {
sendFileUseCase(file = file).onSuccess {
- postSideEffect(EditProfileSideEffect.SuccessUpload)
reduce { state.copy(profileUrl = it.file) }
+ onUploaded(it.file)
}.onFailure {
it.errorHandling(unknownAction = {})
}
diff --git a/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/find_address/FindAddressScreen.kt b/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/find_address/FindAddressScreen.kt
index dab38524..cb7f9672 100644
--- a/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/find_address/FindAddressScreen.kt
+++ b/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/find_address/FindAddressScreen.kt
@@ -25,7 +25,6 @@ import androidx.hilt.navigation.compose.hiltViewModel
import androidx.navigation.NavController
import androidx.paging.LoadState
import androidx.paging.compose.collectAsLazyPagingItems
-import androidx.paging.compose.itemsIndexed
import com.danbam.indistraw.core.design_system.IndiStrawTheme
import com.danbam.indistraw.core.design_system.component.IndiStrawColumnBackground
import com.danbam.indistraw.core.design_system.component.IndiStrawHeader
@@ -96,26 +95,26 @@ fun FindAddressScreen(
.fillMaxWidth()
.padding(start = 15.dp, end = 15.dp, top = 36.dp)
) {
- itemsIndexed(it) { _, item ->
- item?.let {
+ items(it.itemCount) { index ->
+ it[index]?.let {
Row(
modifier = Modifier
.fillMaxWidth()
.indiStrawClickable {
focusManager.clearFocus()
keyboardController?.hide()
- navController.navigate(ProfileNavigationItem.DetailAddress.route + ProfileDeepLinkKey.ADDRESS + "${item.streetAddress} ${item.buildName}" + ProfileDeepLinkKey.ZIP_CODE + item.zipcode)
+ navController.navigate(ProfileNavigationItem.DetailAddress.route + ProfileDeepLinkKey.ADDRESS + "${it.streetAddress} ${it.buildName}" + ProfileDeepLinkKey.ZIP_CODE + it.zipcode)
},
verticalAlignment = Alignment.CenterVertically,
) {
IndiStrawIcon(icon = IndiStrawIconList.Search)
Spacer(modifier = Modifier.width(15.dp))
Column {
- DialogMedium(text = item.streetAddress)
+ DialogMedium(text = it.streetAddress)
Spacer(modifier = Modifier.height(4.dp))
- if (item.buildName.isNotEmpty()) {
+ if (it.buildName.isNotEmpty()) {
TitleRegular(
- text = item.buildName,
+ text = it.buildName,
fontSize = 14,
color = IndiStrawTheme.colors.gray
)
diff --git a/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/profile/ProfileContract.kt b/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/profile/ProfileContract.kt
index 45416851..262867cb 100644
--- a/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/profile/ProfileContract.kt
+++ b/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/profile/ProfileContract.kt
@@ -1,7 +1,7 @@
package com.danbam.indistraw.feature.mobile.profile.profile
-import com.danbam.indistraw.core.entity.funding.FundingEntity
-import com.danbam.indistraw.core.entity.movie.MovieEntity
+import com.danbam.indistraw.core.domain.entity.funding.FundingEntity
+import com.danbam.indistraw.core.domain.entity.movie.MovieEntity
data class ProfileState(
val id: String = "",
@@ -9,5 +9,6 @@ data class ProfileState(
val profileUrl: String? = null,
val myFundingList: List = listOf(),
val fundingList: List = listOf(),
- val movieHistoryList: List = listOf()
+ val movieHistoryList: List = listOf(),
+ val movieFilmographyList: List = listOf()
)
\ No newline at end of file
diff --git a/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/profile/ProfileScreen.kt b/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/profile/ProfileScreen.kt
index 87dc47d4..386d530e 100644
--- a/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/profile/ProfileScreen.kt
+++ b/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/profile/ProfileScreen.kt
@@ -30,12 +30,12 @@ import com.danbam.indistraw.core.design_system.attribute.IndiStrawIconList
import com.danbam.indistraw.core.design_system.component.HeadLineBold
import com.danbam.indistraw.core.design_system.component.IndiStrawColumnBackground
import com.danbam.indistraw.core.design_system.component.IndiStrawHeader
-import com.danbam.indistraw.core.design_system.component.IndiStrawTab
+import com.danbam.indistraw.core.ui.component.IndiStrawTab
import com.danbam.indistraw.core.design_system.R
-import com.danbam.indistraw.core.design_system.component.FundingTab
-import com.danbam.indistraw.core.design_system.component.IndiStrawColumnTab
-import com.danbam.indistraw.core.design_system.component.IndiStrawRowTab
-import com.danbam.indistraw.core.design_system.component.MovieTab
+import com.danbam.indistraw.core.ui.component.FundingTab
+import com.danbam.indistraw.core.ui.component.IndiStrawColumnTab
+import com.danbam.indistraw.core.ui.component.IndiStrawRowTab
+import com.danbam.indistraw.core.ui.component.MovieTab
import com.danbam.indistraw.core.design_system.util.androidx.indiStrawClickable
import com.danbam.indistraw.feature.mobile.navigation.funding.FundingDeepLinkKey
import com.danbam.indistraw.feature.mobile.navigation.funding.FundingNavigationItem
@@ -52,14 +52,17 @@ fun ProfileScreen(
val state = container.stateFlow.collectAsState().value
val sideEffect = container.sideEffectFlow
- var currentMovieTab: MovieTab by remember { mutableStateOf(MovieTab.RecentMovie) }
- var currentFundingTab: FundingTab by remember { mutableStateOf(FundingTab.ParticipantFunding) }
+ var currentMovieTab: com.danbam.indistraw.core.ui.component.MovieTab by remember { mutableStateOf(
+ com.danbam.indistraw.core.ui.component.MovieTab.RecentMovie) }
+ var currentFundingTab: com.danbam.indistraw.core.ui.component.FundingTab by remember { mutableStateOf(
+ com.danbam.indistraw.core.ui.component.FundingTab.ParticipantFunding) }
LaunchedEffect(Unit) {
profileViewModel.getProfile()
profileViewModel.getParticipateFunding()
profileViewModel.getMyFunding()
profileViewModel.movieHistory()
+ profileViewModel.movieFilmography()
}
IndiStrawColumnBackground(
@@ -110,50 +113,53 @@ fun ProfileScreen(
fontSize = 20,
textAlign = TextAlign.Center
)
- IndiStrawRowTab(
+ com.danbam.indistraw.core.ui.component.IndiStrawRowTab(
modifier = Modifier
.padding(start = 15.dp, top = 32.dp),
- itemList = if (currentMovieTab == MovieTab.RecentMovie) state.movieHistoryList else listOf(),
+ itemList = if (currentMovieTab == com.danbam.indistraw.core.ui.component.MovieTab.RecentMovie) state.movieHistoryList else state.movieFilmographyList,
tabHeader = {
- IndiStrawTab(
+ com.danbam.indistraw.core.ui.component.IndiStrawTab(
text = stringResource(id = R.string.recent_watch_movie),
- isSelect = currentMovieTab == MovieTab.RecentMovie
+ isSelect = currentMovieTab == com.danbam.indistraw.core.ui.component.MovieTab.RecentMovie
) {
- currentMovieTab = MovieTab.RecentMovie
+ currentMovieTab = com.danbam.indistraw.core.ui.component.MovieTab.RecentMovie
}
Spacer(modifier = Modifier.width(16.dp))
- IndiStrawTab(
+ com.danbam.indistraw.core.ui.component.IndiStrawTab(
text = stringResource(id = R.string.participate_movie),
- isSelect = currentMovieTab == MovieTab.ParticipantMovie
+ isSelect = currentMovieTab == com.danbam.indistraw.core.ui.component.MovieTab.ParticipantMovie
) {
- currentMovieTab = MovieTab.ParticipantMovie
+ currentMovieTab =
+ com.danbam.indistraw.core.ui.component.MovieTab.ParticipantMovie
}
}
) {
navController.navigate(MovieNavigationItem.Detail.route + MovieDeepLinkKey.MOVIE_INDEX + it)
}
- IndiStrawColumnTab(
+ com.danbam.indistraw.core.ui.component.IndiStrawColumnTab(
modifier = Modifier
.padding(start = 15.dp, top = 43.dp),
- itemList = if (currentFundingTab == FundingTab.ParticipantFunding) state.fundingList else state.myFundingList,
+ itemList = if (currentFundingTab == com.danbam.indistraw.core.ui.component.FundingTab.ParticipantFunding) state.fundingList else state.myFundingList,
tabHeader = {
- IndiStrawTab(
+ com.danbam.indistraw.core.ui.component.IndiStrawTab(
text = stringResource(id = R.string.participate_funding),
- isSelect = currentFundingTab == FundingTab.ParticipantFunding
+ isSelect = currentFundingTab == com.danbam.indistraw.core.ui.component.FundingTab.ParticipantFunding
) {
- currentFundingTab = FundingTab.ParticipantFunding
+ currentFundingTab =
+ com.danbam.indistraw.core.ui.component.FundingTab.ParticipantFunding
}
if (state.myFundingList.isNotEmpty()) {
Spacer(modifier = Modifier.width(16.dp))
- IndiStrawTab(
+ com.danbam.indistraw.core.ui.component.IndiStrawTab(
text = stringResource(id = R.string.my_funding),
- isSelect = currentFundingTab == FundingTab.MyFunding
+ isSelect = currentFundingTab == com.danbam.indistraw.core.ui.component.FundingTab.MyFunding
) {
- currentFundingTab = FundingTab.MyFunding
+ currentFundingTab =
+ com.danbam.indistraw.core.ui.component.FundingTab.MyFunding
}
}
}) {
- if (currentFundingTab == FundingTab.ParticipantFunding) {
+ if (currentFundingTab == com.danbam.indistraw.core.ui.component.FundingTab.ParticipantFunding) {
navController.navigate(FundingNavigationItem.Detail.route + FundingDeepLinkKey.FUNDING_INDEX + it)
} else {
navController.navigate(FundingNavigationItem.MyDetail.route + FundingDeepLinkKey.FUNDING_INDEX + it)
diff --git a/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/profile/ProfileViewModel.kt b/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/profile/ProfileViewModel.kt
index 665c95b4..7842e57f 100644
--- a/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/profile/ProfileViewModel.kt
+++ b/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/profile/ProfileViewModel.kt
@@ -2,10 +2,11 @@ package com.danbam.indistraw.feature.mobile.profile.profile
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
-import com.danbam.indistraw.core.entity.movie.MovieEntity
+import com.danbam.indistraw.core.domain.entity.movie.MovieEntity
import com.danbam.indistraw.core.domain.usecase.account.GetProfileUseCase
import com.danbam.indistraw.core.domain.usecase.crowd_funding.FundingMyUseCase
import com.danbam.indistraw.core.domain.usecase.funding.FundingListUseCase
+import com.danbam.indistraw.core.domain.usecase.movie.MovieFilmographyUseCase
import com.danbam.indistraw.core.domain.usecase.movie.MovieHistoryListUseCase
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.launch
@@ -21,6 +22,7 @@ class ProfileViewModel @Inject constructor(
private val fundingMyUseCase: FundingMyUseCase,
private val fundingListUseCase: FundingListUseCase,
private val movieHistoryListUseCase: MovieHistoryListUseCase,
+ private val movieFilmographyUseCase: MovieFilmographyUseCase
) : ContainerHost, ViewModel() {
override val container = container(ProfileState())
fun getProfile() = intent {
@@ -61,4 +63,14 @@ class ProfileViewModel @Inject constructor(
}
}
}
+
+ fun movieFilmography() = intent {
+ viewModelScope.launch {
+ movieFilmographyUseCase().onSuccess {
+ reduce {
+ state.copy(movieFilmographyList = it)
+ }
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/qr_login/QRLoginScreen.kt b/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/qr_login/QRLoginScreen.kt
index d2d83e79..8aa6d39e 100644
--- a/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/qr_login/QRLoginScreen.kt
+++ b/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/qr_login/QRLoginScreen.kt
@@ -23,7 +23,7 @@ import com.danbam.indistraw.core.design_system.attribute.IndiStrawIconList
import com.danbam.indistraw.core.design_system.component.HeadLineBold
import com.danbam.indistraw.core.design_system.component.IndiStrawColumnBackground
import com.danbam.indistraw.core.design_system.component.IndiStrawHeader
-import com.danbam.indistraw.core.design_system.component.QRScanner
+import com.danbam.indistraw.core.ui.qr.QRScanner
import com.danbam.indistraw.core.design_system.R
import com.danbam.indistraw.core.design_system.component.IndiStrawButton
import com.danbam.indistraw.core.design_system.component.TitleRegular
@@ -54,7 +54,7 @@ fun QRLoginScreen(
.align(Alignment.Center),
icon = IndiStrawIconList.QRGrid
)
- QRScanner(
+ com.danbam.indistraw.core.ui.qr.QRScanner(
modifier = Modifier
.align(Alignment.Center)
.size(265.dp)
diff --git a/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/setting/SettingViewModel.kt b/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/setting/SettingViewModel.kt
index b5c6b299..83a30d93 100644
--- a/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/setting/SettingViewModel.kt
+++ b/feature/mobile/profile/src/main/kotlin/com/danbam/indistraw/feature/mobile/profile/setting/SettingViewModel.kt
@@ -2,7 +2,7 @@ package com.danbam.indistraw.feature.mobile.profile.setting
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
-import com.danbam.indistraw.core.design_system.util.danbam.errorHandling
+import com.danbam.indistraw.core.ui.handling.errorHandling
import com.danbam.indistraw.core.domain.usecase.account.WithdrawUseCase
import com.danbam.indistraw.core.domain.usecase.auth.ClearTokenUseCase
import com.danbam.indistraw.core.domain.usecase.auth.LogoutUseCase
diff --git a/feature/mobile/search/src/main/kotlin/com/danbam/indistraw/feature/mobile/search/result_search/ResultSearchContract.kt b/feature/mobile/search/src/main/kotlin/com/danbam/indistraw/feature/mobile/search/result_search/ResultSearchContract.kt
index 56d856ec..d7bebd70 100644
--- a/feature/mobile/search/src/main/kotlin/com/danbam/indistraw/feature/mobile/search/result_search/ResultSearchContract.kt
+++ b/feature/mobile/search/src/main/kotlin/com/danbam/indistraw/feature/mobile/search/result_search/ResultSearchContract.kt
@@ -1,8 +1,8 @@
package com.danbam.indistraw.feature.mobile.search.result_search
import androidx.paging.PagingData
-import com.danbam.indistraw.core.entity.funding.FundingEntity
-import com.danbam.indistraw.core.entity.movie.MovieEntity
+import com.danbam.indistraw.core.domain.entity.funding.FundingEntity
+import com.danbam.indistraw.core.domain.entity.movie.MovieEntity
import kotlinx.coroutines.flow.Flow
data class ResultSearchState(
diff --git a/feature/mobile/search/src/main/kotlin/com/danbam/indistraw/feature/mobile/search/result_search/ResultSearchScreen.kt b/feature/mobile/search/src/main/kotlin/com/danbam/indistraw/feature/mobile/search/result_search/ResultSearchScreen.kt
index b5bbe4e6..978da124 100644
--- a/feature/mobile/search/src/main/kotlin/com/danbam/indistraw/feature/mobile/search/result_search/ResultSearchScreen.kt
+++ b/feature/mobile/search/src/main/kotlin/com/danbam/indistraw/feature/mobile/search/result_search/ResultSearchScreen.kt
@@ -23,13 +23,12 @@ import androidx.hilt.navigation.compose.hiltViewModel
import androidx.navigation.NavController
import androidx.paging.LoadState
import androidx.paging.compose.collectAsLazyPagingItems
-import androidx.paging.compose.items
import com.danbam.indistraw.core.design_system.component.IndiStrawColumnBackground
-import com.danbam.indistraw.core.design_system.component.IndiStrawTab
+import com.danbam.indistraw.core.ui.component.IndiStrawTab
import com.danbam.indistraw.core.design_system.R
-import com.danbam.indistraw.core.design_system.component.FundingItem
-import com.danbam.indistraw.core.design_system.component.MovieItem
-import com.danbam.indistraw.core.design_system.component.SearchTab
+import com.danbam.indistraw.core.ui.component.FundingItem
+import com.danbam.indistraw.core.ui.component.MovieItem
+import com.danbam.indistraw.core.ui.component.SearchTab
import com.danbam.indistraw.core.design_system.util.androidx.RemoveOverScrollLazyColumn
import com.danbam.indistraw.feature.mobile.navigation.funding.FundingDeepLinkKey
import com.danbam.indistraw.feature.mobile.navigation.funding.FundingNavigationItem
@@ -47,7 +46,11 @@ fun ResultSearchScreen(
val state = container.stateFlow.collectAsState().value
val sideEffect = container.sideEffectFlow
- var currentTab: SearchTab by remember { mutableStateOf(SearchTab.Movie) }
+ var currentTab: SearchTab by remember {
+ mutableStateOf(
+ SearchTab.Movie
+ )
+ }
val moviePager = state.moviePager?.collectAsLazyPagingItems()
val fundingPager = state.fundingPager?.collectAsLazyPagingItems()
@@ -72,7 +75,7 @@ fun ResultSearchScreen(
currentTab = SearchTab.Movie
}
Spacer(modifier = Modifier.width(16.dp))
- IndiStrawTab(
+ com.danbam.indistraw.core.ui.component.IndiStrawTab(
text = stringResource(id = R.string.crowd_funding),
isSelect = currentTab == SearchTab.Funding
) {
@@ -112,8 +115,8 @@ fun ResultSearchScreen(
else -> {
Spacer(modifier = Modifier.height(11.dp))
RemoveOverScrollLazyColumn {
- items(it) {
- it?.let {
+ items(it.itemCount) { index ->
+ it[index]?.let {
FundingItem(item = it) {
navController.navigate(FundingNavigationItem.Detail.route + FundingDeepLinkKey.FUNDING_INDEX + it)
}
diff --git a/feature/mobile/search/src/main/kotlin/com/danbam/indistraw/feature/mobile/search/result_search/ResultSearchViewModel.kt b/feature/mobile/search/src/main/kotlin/com/danbam/indistraw/feature/mobile/search/result_search/ResultSearchViewModel.kt
index 01a4af6e..d33d9b8e 100644
--- a/feature/mobile/search/src/main/kotlin/com/danbam/indistraw/feature/mobile/search/result_search/ResultSearchViewModel.kt
+++ b/feature/mobile/search/src/main/kotlin/com/danbam/indistraw/feature/mobile/search/result_search/ResultSearchViewModel.kt
@@ -2,7 +2,7 @@ package com.danbam.indistraw.feature.mobile.search.result_search
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
-import com.danbam.indistraw.core.entity.search.RecentSearchEntity
+import com.danbam.indistraw.core.domain.entity.search.RecentSearchEntity
import com.danbam.indistraw.core.domain.usecase.search.SearchFundingUseCase
import com.danbam.indistraw.core.domain.usecase.search.SearchMovieUseCase
import dagger.hilt.android.lifecycle.HiltViewModel
diff --git a/feature/mobile/search/src/main/kotlin/com/danbam/indistraw/feature/mobile/search/searching/SearchingViewModel.kt b/feature/mobile/search/src/main/kotlin/com/danbam/indistraw/feature/mobile/search/searching/SearchingViewModel.kt
index 89a245d3..e42510c0 100644
--- a/feature/mobile/search/src/main/kotlin/com/danbam/indistraw/feature/mobile/search/searching/SearchingViewModel.kt
+++ b/feature/mobile/search/src/main/kotlin/com/danbam/indistraw/feature/mobile/search/searching/SearchingViewModel.kt
@@ -22,7 +22,6 @@ class SearchingViewModel @Inject constructor(
getRelatedSearchUseCase(keyword = keyword).onSuccess {
reduce { state.copy(relatedSearchPager = it) }
}.onFailure {
- println("안녕 ${it}")
}
}
}
diff --git a/feature/mobile/search/src/main/kotlin/com/danbam/indistraw/feature/mobile/search/start_search/StartSearchContract.kt b/feature/mobile/search/src/main/kotlin/com/danbam/indistraw/feature/mobile/search/start_search/StartSearchContract.kt
index 463b2e1c..b7bcd5ab 100644
--- a/feature/mobile/search/src/main/kotlin/com/danbam/indistraw/feature/mobile/search/start_search/StartSearchContract.kt
+++ b/feature/mobile/search/src/main/kotlin/com/danbam/indistraw/feature/mobile/search/start_search/StartSearchContract.kt
@@ -1,6 +1,6 @@
package com.danbam.indistraw.feature.mobile.search.start_search
-import com.danbam.indistraw.core.entity.search.RecentSearchEntity
+import com.danbam.indistraw.core.domain.entity.search.RecentSearchEntity
data class StartSearchState(
val recentSearchList: List = listOf(),
diff --git a/feature/tv/home/src/main/kotlin/com/danbam/indistraw/feature/tv/home/HomeContract.kt b/feature/tv/home/src/main/kotlin/com/danbam/indistraw/feature/tv/home/HomeContract.kt
index e1eddb32..96dee06b 100644
--- a/feature/tv/home/src/main/kotlin/com/danbam/indistraw/feature/tv/home/HomeContract.kt
+++ b/feature/tv/home/src/main/kotlin/com/danbam/indistraw/feature/tv/home/HomeContract.kt
@@ -1,11 +1,10 @@
package com.danbam.indistraw.feature.tv.home
-import com.danbam.indistraw.core.entity.banner.BannerEntity
-import com.danbam.indistraw.core.entity.movie.MovieEntity
-
+import com.danbam.indistraw.core.domain.entity.banner.BannerEntity
+import com.danbam.indistraw.core.domain.entity.movie.MovieEntity
data class HomeState(
- val currentMovieIndex: Long = 0,
+ val currentMovieIndex: Long? = null,
val movieList: List = listOf(),
val bannerList: List = listOf()
)
\ No newline at end of file
diff --git a/feature/tv/home/src/main/kotlin/com/danbam/indistraw/feature/tv/home/HomeScreen.kt b/feature/tv/home/src/main/kotlin/com/danbam/indistraw/feature/tv/home/HomeScreen.kt
index 06bf8c24..dab70088 100644
--- a/feature/tv/home/src/main/kotlin/com/danbam/indistraw/feature/tv/home/HomeScreen.kt
+++ b/feature/tv/home/src/main/kotlin/com/danbam/indistraw/feature/tv/home/HomeScreen.kt
@@ -27,11 +27,11 @@ import androidx.tv.foundation.lazy.list.items
import com.danbam.indistraw.core.design_system.component.ImageButton
import com.danbam.indistraw.core.design_system.component.IndiStrawTvBackground
import com.danbam.indistraw.core.design_system.component.IndiStrawTvBanner
-import com.danbam.indistraw.core.design_system.component.IndiStrawTvTab
+import com.danbam.indistraw.core.ui.component.IndiStrawTvTab
import com.danbam.indistraw.core.design_system.component.Shape
import com.danbam.indistraw.core.design_system.R
-import com.danbam.indistraw.core.design_system.component.MovieTab
-import com.danbam.indistraw.core.design_system.component.MovieTvItem
+import com.danbam.indistraw.core.ui.component.MovieTab
+import com.danbam.indistraw.core.ui.component.MovieTvItem
import com.danbam.indistraw.feature.tv.navigation.main.MainDeepLinkKey
import com.danbam.indistraw.feature.tv.navigation.main.MainNavigationItem
@@ -46,12 +46,15 @@ fun HomeScreen(
val sideEffect = container.sideEffectFlow
val itemFocusRequester = remember { FocusRequester() }
- var homeTab: MovieTab by remember { mutableStateOf(MovieTab.PopularMovie) }
+ var homeTab: com.danbam.indistraw.core.ui.component.MovieTab by remember { mutableStateOf(com.danbam.indistraw.core.ui.component.MovieTab.PopularMovie) }
LaunchedEffect(Unit) {
homeViewModel.getBanner()
- if (!isOpenDrawer) {
-// itemFocusRequester.requestFocus()
+ }
+
+ LaunchedEffect(state.currentMovieIndex) {
+ if (!isOpenDrawer && state.currentMovieIndex != null) {
+ itemFocusRequester.requestFocus()
}
}
@@ -72,25 +75,25 @@ fun HomeScreen(
Row(
modifier = Modifier.padding(top = 20.dp)
) {
- IndiStrawTvTab(
+ com.danbam.indistraw.core.ui.component.IndiStrawTvTab(
text = stringResource(id = R.string.popular),
- isSelect = homeTab == MovieTab.PopularMovie
+ isSelect = homeTab == com.danbam.indistraw.core.ui.component.MovieTab.PopularMovie
) {
- homeTab = MovieTab.PopularMovie
+ homeTab = com.danbam.indistraw.core.ui.component.MovieTab.PopularMovie
}
Spacer(modifier = Modifier.width(14.dp))
- IndiStrawTvTab(
+ com.danbam.indistraw.core.ui.component.IndiStrawTvTab(
text = stringResource(id = R.string.recommend),
- isSelect = homeTab == MovieTab.RecommendMovie
+ isSelect = homeTab == com.danbam.indistraw.core.ui.component.MovieTab.RecommendMovie
) {
- homeTab = MovieTab.RecommendMovie
+ homeTab = com.danbam.indistraw.core.ui.component.MovieTab.RecommendMovie
}
Spacer(modifier = Modifier.width(14.dp))
- IndiStrawTvTab(
+ com.danbam.indistraw.core.ui.component.IndiStrawTvTab(
text = stringResource(id = R.string.recent),
- isSelect = homeTab == MovieTab.RecentMovie
+ isSelect = homeTab == com.danbam.indistraw.core.ui.component.MovieTab.RecentMovie
) {
- homeTab = MovieTab.RecentMovie
+ homeTab = com.danbam.indistraw.core.ui.component.MovieTab.RecentMovie
}
}
Spacer(modifier = Modifier.height(20.dp))
@@ -100,7 +103,7 @@ fun HomeScreen(
contentPadding = PaddingValues(horizontal = 8.dp, vertical = 20.dp)
) {
items(state.movieList) {
- MovieTvItem(
+ com.danbam.indistraw.core.ui.component.MovieTvItem(
modifier = Modifier.focusRequester(if (it.movieIdx == state.currentMovieIndex) itemFocusRequester else FocusRequester()),
item = it
) {
diff --git a/feature/tv/home/src/main/kotlin/com/danbam/indistraw/feature/tv/home/HomeViewModel.kt b/feature/tv/home/src/main/kotlin/com/danbam/indistraw/feature/tv/home/HomeViewModel.kt
index 1176a494..8c9afe4b 100644
--- a/feature/tv/home/src/main/kotlin/com/danbam/indistraw/feature/tv/home/HomeViewModel.kt
+++ b/feature/tv/home/src/main/kotlin/com/danbam/indistraw/feature/tv/home/HomeViewModel.kt
@@ -2,7 +2,7 @@ package com.danbam.indistraw.feature.tv.home
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
-import com.danbam.indistraw.core.design_system.component.MovieTab
+import com.danbam.indistraw.core.ui.component.MovieTab
import com.danbam.indistraw.core.domain.usecase.banner.GetBannerUseCase
import com.danbam.indistraw.core.domain.usecase.movie.MoviePopularListUseCase
import com.danbam.indistraw.core.domain.usecase.movie.MovieRecentListUseCase
@@ -36,16 +36,16 @@ class HomeViewModel @Inject constructor(
reduce { state.copy(currentMovieIndex = index) }
}
- fun movieList(movieType: MovieTab) = intent {
+ fun movieList(movieType: com.danbam.indistraw.core.ui.component.MovieTab) = intent {
viewModelScope.launch {
when (movieType) {
- is MovieTab.PopularMovie -> {
+ is com.danbam.indistraw.core.ui.component.MovieTab.PopularMovie -> {
moviePopularListUseCase().onSuccess {
reduce { state.copy(movieList = it) }
}
}
- is MovieTab.RecommendMovie -> {
+ is com.danbam.indistraw.core.ui.component.MovieTab.RecommendMovie -> {
movieRecommendListUseCase().onSuccess {
reduce { state.copy(movieList = it) }
}
diff --git a/feature/tv/main/src/main/kotlin/com/danbam/indistraw/feature/tv/main/login/LoginScreen.kt b/feature/tv/main/src/main/kotlin/com/danbam/indistraw/feature/tv/main/login/LoginScreen.kt
index 70bdbd06..ec5058fb 100644
--- a/feature/tv/main/src/main/kotlin/com/danbam/indistraw/feature/tv/main/login/LoginScreen.kt
+++ b/feature/tv/main/src/main/kotlin/com/danbam/indistraw/feature/tv/main/login/LoginScreen.kt
@@ -15,6 +15,8 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.text.input.PasswordVisualTransformation
+import androidx.compose.ui.text.input.VisualTransformation
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.navigation.NavController
import com.danbam.indistraw.core.design_system.component.HeadLineBold
@@ -96,7 +98,9 @@ fun LoginScreen(
IndiStrawTvTextField(
hint = stringResource(id = R.string.password),
value = password,
- onValueChange = { password = it })
+ onValueChange = { password = it },
+ visualTransformation = PasswordVisualTransformation()
+ )
Spacer(modifier = Modifier.fillMaxHeight(0.09F))
IndiStrawTvButton(text = stringResource(id = R.string.login)) {
diff --git a/feature/tv/main/src/main/kotlin/com/danbam/indistraw/feature/tv/main/login/LoginViewModel.kt b/feature/tv/main/src/main/kotlin/com/danbam/indistraw/feature/tv/main/login/LoginViewModel.kt
index 2fe53046..2cca1451 100644
--- a/feature/tv/main/src/main/kotlin/com/danbam/indistraw/feature/tv/main/login/LoginViewModel.kt
+++ b/feature/tv/main/src/main/kotlin/com/danbam/indistraw/feature/tv/main/login/LoginViewModel.kt
@@ -2,10 +2,10 @@ package com.danbam.indistraw.feature.tv.main.login
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
-import com.danbam.indistraw.core.design_system.util.danbam.errorHandling
+import com.danbam.indistraw.core.ui.handling.errorHandling
import com.danbam.indistraw.core.design_system.util.internal.isId
import com.danbam.indistraw.core.design_system.util.internal.isPassword
-import com.danbam.indistraw.core.param.auth.LoginParam
+import com.danbam.indistraw.core.domain.param.auth.LoginParam
import com.danbam.indistraw.core.domain.usecase.auth.LoginUseCase
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.launch
diff --git a/feature/tv/main/src/main/kotlin/com/danbam/indistraw/feature/tv/main/qr_login/QRLoginScreen.kt b/feature/tv/main/src/main/kotlin/com/danbam/indistraw/feature/tv/main/qr_login/QRLoginScreen.kt
index 244fdb48..f123648c 100644
--- a/feature/tv/main/src/main/kotlin/com/danbam/indistraw/feature/tv/main/qr_login/QRLoginScreen.kt
+++ b/feature/tv/main/src/main/kotlin/com/danbam/indistraw/feature/tv/main/qr_login/QRLoginScreen.kt
@@ -23,7 +23,7 @@ import com.danbam.indistraw.core.design_system.component.ExampleTextMedium
import com.danbam.indistraw.core.design_system.component.IndiStrawTvBackground
import com.danbam.indistraw.core.design_system.component.TitleRegular
import com.danbam.indistraw.core.design_system.R
-import com.danbam.indistraw.core.design_system.component.QRPainter
+import com.danbam.indistraw.core.ui.qr.QRPainter
import com.danbam.indistraw.feature.tv.main.BuildConfig
import com.danbam.indistraw.core.design_system.util.androidx.observeWithLifecycle
import com.danbam.indistraw.feature.tv.navigation.main.MainNavigationItem
@@ -83,7 +83,7 @@ fun QRLoginScreen(
icon = IndiStrawIconList.QRGrid
)
state.uuid?.let {
- QRPainter(
+ com.danbam.indistraw.core.ui.qr.QRPainter(
modifier = Modifier
.align(Alignment.Center),
url = "${BuildConfig.QR_URL}$it"
diff --git a/feature/tv/movie/src/main/kotlin/com/danbam/indistraw/feature/tv/movie/detail/MovieDetailContract.kt b/feature/tv/movie/src/main/kotlin/com/danbam/indistraw/feature/tv/movie/detail/MovieDetailContract.kt
index bad0b335..2c189063 100644
--- a/feature/tv/movie/src/main/kotlin/com/danbam/indistraw/feature/tv/movie/detail/MovieDetailContract.kt
+++ b/feature/tv/movie/src/main/kotlin/com/danbam/indistraw/feature/tv/movie/detail/MovieDetailContract.kt
@@ -1,6 +1,6 @@
package com.danbam.indistraw.feature.tv.movie.detail
-import com.danbam.indistraw.core.entity.movie.MovieDetailEntity
+import com.danbam.indistraw.core.domain.entity.movie.MovieDetailEntity
data class MovieDetailState(
val movieDetailInfo: MovieDetailEntity = MovieDetailEntity(
diff --git a/feature/tv/movie/src/main/kotlin/com/danbam/indistraw/feature/tv/movie/movie/MovieContract.kt b/feature/tv/movie/src/main/kotlin/com/danbam/indistraw/feature/tv/movie/movie/MovieContract.kt
index 07da16af..bcd1676d 100644
--- a/feature/tv/movie/src/main/kotlin/com/danbam/indistraw/feature/tv/movie/movie/MovieContract.kt
+++ b/feature/tv/movie/src/main/kotlin/com/danbam/indistraw/feature/tv/movie/movie/MovieContract.kt
@@ -1,7 +1,7 @@
package com.danbam.indistraw.feature.tv.movie.movie
import androidx.paging.PagingData
-import com.danbam.indistraw.core.entity.movie.MovieEntity
+import com.danbam.indistraw.core.domain.entity.movie.MovieEntity
import kotlinx.coroutines.flow.Flow
data class MovieState(
diff --git a/feature/tv/movie/src/main/kotlin/com/danbam/indistraw/feature/tv/movie/movie/MovieScreen.kt b/feature/tv/movie/src/main/kotlin/com/danbam/indistraw/feature/tv/movie/movie/MovieScreen.kt
index 09a8ab63..7e1cb420 100644
--- a/feature/tv/movie/src/main/kotlin/com/danbam/indistraw/feature/tv/movie/movie/MovieScreen.kt
+++ b/feature/tv/movie/src/main/kotlin/com/danbam/indistraw/feature/tv/movie/movie/MovieScreen.kt
@@ -35,7 +35,7 @@ import androidx.tv.material3.Surface
import com.danbam.indistraw.core.design_system.IndiStrawTheme
import com.danbam.indistraw.core.design_system.component.IndiStrawTvBackground
import com.danbam.indistraw.core.design_system.component.MovieGenre
-import com.danbam.indistraw.core.design_system.component.MovieTvItem
+import com.danbam.indistraw.core.ui.component.MovieTvItem
import com.danbam.indistraw.core.design_system.component.TitleRegular
import com.danbam.indistraw.core.design_system.component.TitleSemiBold
import com.danbam.indistraw.feature.tv.navigation.main.MainDeepLinkKey
@@ -57,12 +57,6 @@ fun MovieScreen(
var currentMovieGenre: MovieGenre by remember { mutableStateOf(MovieGenre.All) }
val movieAllPager = state.movieAllPager?.collectAsLazyPagingItems()
- LaunchedEffect(Unit) {
- if (!isOpenDrawer) {
- itemFocusRequester.requestFocus()
- }
- }
-
LaunchedEffect(currentMovieGenre) {
movieViewModel.movieList(movieGenre = currentMovieGenre)
}
@@ -127,6 +121,11 @@ fun MovieScreen(
is LoadState.Loading -> {}
is LoadState.Error -> {}
else -> {
+ LaunchedEffect(state.currentMovieIndex) {
+ if (!isOpenDrawer) {
+ itemFocusRequester.requestFocus()
+ }
+ }
TvLazyVerticalGrid(
modifier = Modifier.padding(top = 20.dp, end = 40.dp),
columns = TvGridCells.Fixed(6),
@@ -135,7 +134,7 @@ fun MovieScreen(
verticalArrangement = Arrangement.spacedBy(30.dp)
) {
items(pager.itemSnapshotList.items) {
- MovieTvItem(
+ com.danbam.indistraw.core.ui.component.MovieTvItem(
modifier = Modifier.focusRequester(if (it.movieIdx == state.currentMovieIndex) itemFocusRequester else FocusRequester()),
item = it
) {
diff --git a/feature/tv/movie/src/main/kotlin/com/danbam/indistraw/feature/tv/movie/play/MoviePlayScreen.kt b/feature/tv/movie/src/main/kotlin/com/danbam/indistraw/feature/tv/movie/play/MoviePlayScreen.kt
index 8345314a..baaca369 100644
--- a/feature/tv/movie/src/main/kotlin/com/danbam/indistraw/feature/tv/movie/play/MoviePlayScreen.kt
+++ b/feature/tv/movie/src/main/kotlin/com/danbam/indistraw/feature/tv/movie/play/MoviePlayScreen.kt
@@ -4,7 +4,7 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.collectAsState
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.navigation.NavController
-import com.danbam.indistraw.core.design_system.component.IndiStrawPlayer
+import com.danbam.indistraw.core.ui.exoplayer.IndiStrawPlayer
import com.danbam.indistraw.core.design_system.component.IndiStrawTvBackground
import com.danbam.indistraw.core.design_system.util.androidx.observeWithLifecycle
import kotlinx.coroutines.InternalCoroutinesApi
@@ -32,7 +32,7 @@ fun MoviePlayScreen(
}
IndiStrawTvBackground {
- IndiStrawPlayer(
+ com.danbam.indistraw.core.ui.exoplayer.IndiStrawPlayer(
movieUrl = movieUrl,
movieName = movieName,
position = position,
diff --git a/feature/tv/movie/src/main/kotlin/com/danbam/indistraw/feature/tv/movie/play/MoviePlayViewModel.kt b/feature/tv/movie/src/main/kotlin/com/danbam/indistraw/feature/tv/movie/play/MoviePlayViewModel.kt
index 1fd632a0..63e81120 100644
--- a/feature/tv/movie/src/main/kotlin/com/danbam/indistraw/feature/tv/movie/play/MoviePlayViewModel.kt
+++ b/feature/tv/movie/src/main/kotlin/com/danbam/indistraw/feature/tv/movie/play/MoviePlayViewModel.kt
@@ -2,7 +2,7 @@ package com.danbam.indistraw.feature.tv.movie.play
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
-import com.danbam.indistraw.core.param.movie.MovieHistoryParam
+import com.danbam.indistraw.core.domain.param.movie.MovieHistoryParam
import com.danbam.indistraw.core.domain.usecase.movie.AddMovieHistoryUseCase
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.launch
diff --git a/feature/tv/search/src/main/kotlin/com/danbam/indistraw/feature/tv/search/SearchContract.kt b/feature/tv/search/src/main/kotlin/com/danbam/indistraw/feature/tv/search/SearchContract.kt
index 27970642..271d2ec7 100644
--- a/feature/tv/search/src/main/kotlin/com/danbam/indistraw/feature/tv/search/SearchContract.kt
+++ b/feature/tv/search/src/main/kotlin/com/danbam/indistraw/feature/tv/search/SearchContract.kt
@@ -1,7 +1,7 @@
package com.danbam.indistraw.feature.tv.search
import androidx.paging.PagingData
-import com.danbam.indistraw.core.entity.movie.MovieEntity
+import com.danbam.indistraw.core.domain.entity.movie.MovieEntity
import kotlinx.coroutines.flow.Flow
data class SearchState(
diff --git a/feature/tv/search/src/main/kotlin/com/danbam/indistraw/feature/tv/search/SearchScreen.kt b/feature/tv/search/src/main/kotlin/com/danbam/indistraw/feature/tv/search/SearchScreen.kt
index 84578c4c..a0b04c9e 100644
--- a/feature/tv/search/src/main/kotlin/com/danbam/indistraw/feature/tv/search/SearchScreen.kt
+++ b/feature/tv/search/src/main/kotlin/com/danbam/indistraw/feature/tv/search/SearchScreen.kt
@@ -42,7 +42,7 @@ import com.danbam.indistraw.core.design_system.component.IndiStrawTvTextField
import com.danbam.indistraw.core.design_system.R
import com.danbam.indistraw.core.design_system.component.ExampleTextMedium
import com.danbam.indistraw.core.design_system.component.HeadLineBold
-import com.danbam.indistraw.core.design_system.component.MovieTvItem
+import com.danbam.indistraw.core.ui.component.MovieTvItem
import com.danbam.indistraw.core.design_system.component.TitleRegular
import com.danbam.indistraw.feature.tv.navigation.main.MainDeepLinkKey
import com.danbam.indistraw.feature.tv.navigation.main.MainNavigationItem
@@ -161,7 +161,7 @@ fun SearchScreen(
is LoadState.Error -> {}
else -> {
items(moviePager.itemSnapshotList.items) {
- MovieTvItem(item = it) {
+ com.danbam.indistraw.core.ui.component.MovieTvItem(item = it) {
navController.navigate(MainNavigationItem.MovieDetail.route + MainDeepLinkKey.MOVIE_INDEX + it.movieIdx)
}
}
@@ -169,7 +169,7 @@ fun SearchScreen(
}
} else {
items(state.moviePopularList) {
- MovieTvItem(item = it) {
+ com.danbam.indistraw.core.ui.component.MovieTvItem(item = it) {
navController.navigate(MainNavigationItem.MovieDetail.route + MainDeepLinkKey.MOVIE_INDEX + it.movieIdx)
}
}
diff --git a/feature/tv/search/src/main/kotlin/com/danbam/indistraw/feature/tv/search/SearchViewModel.kt b/feature/tv/search/src/main/kotlin/com/danbam/indistraw/feature/tv/search/SearchViewModel.kt
index a383e8f4..6ced755e 100644
--- a/feature/tv/search/src/main/kotlin/com/danbam/indistraw/feature/tv/search/SearchViewModel.kt
+++ b/feature/tv/search/src/main/kotlin/com/danbam/indistraw/feature/tv/search/SearchViewModel.kt
@@ -2,7 +2,7 @@ package com.danbam.indistraw.feature.tv.search
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
-import com.danbam.indistraw.core.entity.search.RecentSearchEntity
+import com.danbam.indistraw.core.domain.entity.search.RecentSearchEntity
import com.danbam.indistraw.core.domain.usecase.movie.MoviePopularListUseCase
import com.danbam.indistraw.core.domain.usecase.search.GetRecentSearchUseCase
import com.danbam.indistraw.core.domain.usecase.search.GetRelatedSearchUseCase
diff --git a/feature/tv/setting/src/main/kotlin/com/danbam/indistraw/feature/tv/setting/SettingViewModel.kt b/feature/tv/setting/src/main/kotlin/com/danbam/indistraw/feature/tv/setting/SettingViewModel.kt
index 319ebed4..29422266 100644
--- a/feature/tv/setting/src/main/kotlin/com/danbam/indistraw/feature/tv/setting/SettingViewModel.kt
+++ b/feature/tv/setting/src/main/kotlin/com/danbam/indistraw/feature/tv/setting/SettingViewModel.kt
@@ -3,7 +3,7 @@ package com.danbam.indistraw.feature.tv.setting
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.danbam.indistraw.core.design_system.util.android.Language
-import com.danbam.indistraw.core.design_system.util.danbam.errorHandling
+import com.danbam.indistraw.core.ui.handling.errorHandling
import com.danbam.indistraw.core.domain.usecase.account.GetProfileUseCase
import com.danbam.indistraw.core.domain.usecase.account.WithdrawUseCase
import com.danbam.indistraw.core.domain.usecase.auth.ClearTokenUseCase
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index fe809487..ccf937e4 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -1,49 +1,50 @@
[versions]
versionCode = "1"
versionName = "1.0.0"
-compileSdk = "33"
-targetSdk = "33"
+compileSdk = "34"
+targetSdk = "34"
minSdk = "28"
-gradleAndroid = "7.4.2"
-gradleKotlin = "1.8.10"
-gradleKtLint = "11.1.0"
-coroutines = "1.6.4"
-core = "1.9.0"
-lifecycle = "2.5.1"
-appcompat = "1.6.0"
-preference = "1.2.0"
-paging = "3.1.1"
-pagingCompose = "1.0.0-alpha16"
+pluginAndroid = "8.1.2"
+pluginKotlin = "1.9.10"
+ksp = "1.9.10-1.0.13"
+coroutines = "1.7.1"
+core = "1.12.0"
+lifecycle = "2.6.2"
+appcompat = "1.6.1"
+preference = "1.2.1"
+paging = "3.2.1"
+pagingCompose = "3.3.0-alpha02"
leanback = "1.0.0"
-composeActivity = "1.6.1"
-compose = "1.4.3"
-composeMaterial = "1.3.1"
-composeMaterial3 = "1.0.1"
+composeActivity = "1.8.0"
+compose = "1.5.3"
+material = "1.5.4"
+material3 = "1.1.2"
hiltNav = "1.0.0"
accomanist = "0.31.0-alpha"
-hilt = "2.44"
-room = "2.4.3"
+hilt = "2.48"
+room = "2.6.0"
orbit = "4.5.0"
retrofit = "2.9.0"
okhttp = "4.10.0"
junit = "4.13.2"
mockitoKotlin = "4.1.0"
mockitoInline = "5.1.1"
-androidJunit = "1.1.2"
-espressoCore = "3.3.0"
+androidJunit = "1.1.5"
+espressoCore = "3.5.1"
coil = "2.2.2"
-exoplayer = "2.18.1"
-camera = "1.2.2"
-barcodeScannig = "17.1.0"
+exoplayer = "1.1.1"
+camera = "1.3.0"
+barcodeScannig = "17.2.0"
barcodeDrawing = "1.1.1"
tv = "1.0.0-alpha06"
bootPay = "4.0.8"
inject = "1"
[libraries]
-plugin-android = { module = "com.android.tools.build:gradle", version.ref = "gradleAndroid" }
+plugin-android = { module = "com.android.tools.build:gradle", version.ref = "pluginAndroid" }
plugin-hilt = { module = "com.google.dagger:hilt-android-gradle-plugin", version.ref = "hilt" }
-plugin-kotlin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "gradleKotlin" }
+plugin-kotlin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "pluginKotlin" }
+plugin-ksp = { module = "com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin", version.ref = "ksp" }
androidx-core = { module = "androidx.core:core-ktx", version.ref = "core" }
androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "appcompat" }
androidx-preference = { module = "androidx.preference:preference-ktx", version.ref = "preference" }
@@ -58,8 +59,8 @@ compose-foundation = { module = "androidx.compose.foundation:foundation", versio
compose-activity = { module = "androidx.activity:activity-compose", version.ref = "composeActivity" }
compose-paging = { module = "androidx.paging:paging-compose", version.ref = "pagingCompose" }
compose-nav = { module = "androidx.hilt:hilt-navigation-compose", version.ref = "hiltNav" }
-compose-material = { module = "androidx.compose.material:material", version.ref = "composeMaterial" }
-compose-material3 = { module = "androidx.compose.material3:material3", version.ref = "composeMaterial3" }
+compose-material = { module = "androidx.compose.material:material", version.ref = "material" }
+compose-material3 = { module = "androidx.compose.material3:material3", version.ref = "material3" }
compose-tool = { module = "androidx.compose.ui:ui-tooling", version.ref = "compose" }
compose-manifest = { module = "androidx.compose.ui:ui-test-manifest", version.ref = "compose" }
compose-test = { module = "androidx.compose.ui:ui-test-junit4", version.ref = "compose" }
@@ -78,9 +79,9 @@ okhttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" }
okhttp-sse = { module = "com.squareup.okhttp3:okhttp-sse", version.ref = "okhttp" }
okhttp-logging-interceptor = { module = "com.squareup.okhttp3:logging-interceptor", version.ref = "okhttp" }
coil = { module = "io.coil-kt:coil-compose", version.ref = "coil" }
-exoplayer-core = { module = "com.google.android.exoplayer:exoplayer-core", version.ref = "exoplayer" }
-exoplayer-hls = { module = "com.google.android.exoplayer:exoplayer-hls", version.ref = "exoplayer" }
-exoplayer-ui = { module = "com.google.android.exoplayer:exoplayer-ui", version.ref = "exoplayer" }
+exoplayer-core = { module = "androidx.media3:media3-exoplayer", version.ref = "exoplayer" }
+exoplayer-hls = { module = "androidx.media3:media3-exoplayer-hls", version.ref = "exoplayer" }
+exoplayer-ui = { module = "androidx.media3:media3-ui", version.ref = "exoplayer" }
camera = { module = "androidx.camera:camera-camera2", version.ref = "camera" }
camera-view = { module = "androidx.camera:camera-view", version.ref = "camera" }
camera-lifecycle = { module = "androidx.camera:camera-lifecycle", version.ref = "camera" }
@@ -96,6 +97,9 @@ test-mockito-inline = { module = "org.mockito:mockito-inline", version.ref = "mo
test-anroid-junit = { module = "androidx.test.ext:junit", version.ref = "androidJunit" }
test-espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "espressoCore" }
+[plugins]
+ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }
+
[bundles]
coroutine = ["coroutines-core", "coroutines-android"]
compose = ["compose-activity", "compose-ui", "compose-preview", "compose-material", "compose-material3", "compose-nav", "compose-paging"]
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 1c1a9796..c204e71b 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
#Sat Mar 18 20:01:40 KST 2023
distributionBase=GRADLE_USER_HOME
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 33677dbf..2c111cbf 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -1,3 +1,11 @@
+pluginManagement {
+ repositories {
+ google()
+ mavenCentral()
+ gradlePluginPortal()
+ }
+}
+
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
@@ -8,9 +16,11 @@ dependencyResolutionManagement {
rootProject.name = "indi_straw"
include(":app:mobile")
include(":app:tv")
+include(":core:local")
+include(":core:remote")
include(":core:data")
include(":core:domain")
-include(":core:di")
+include(":core:ui")
include(":core:design-system")
include(":feature:mobile:auth")
include(":feature:mobile:search")