diff --git a/data/build.gradle.kts b/data/build.gradle.kts index cb760f4..737400b 100644 --- a/data/build.gradle.kts +++ b/data/build.gradle.kts @@ -4,6 +4,7 @@ plugins { alias(libs.plugins.fluxa.kmp.library) alias(libs.plugins.fluxa.android.hilt) alias(libs.plugins.ksp) + alias(libs.plugins.kotlin.serialization) } val localProperties = Properties().apply { @@ -43,6 +44,11 @@ kotlin { tvosSimulatorArm64() sourceSets { + commonMain { + dependencies { + implementation(libs.kotlinx.serialization.json) + } + } androidMain { kotlin.srcDir("src/main/java") dependencies { diff --git a/data/src/main/java/com/fluxa/app/data/remote/MetaModels.kt b/data/src/commonMain/kotlin/com/fluxa/app/data/remote/MetaModels.kt similarity index 50% rename from data/src/main/java/com/fluxa/app/data/remote/MetaModels.kt rename to data/src/commonMain/kotlin/com/fluxa/app/data/remote/MetaModels.kt index c7ad27c..90bde3c 100644 --- a/data/src/main/java/com/fluxa/app/data/remote/MetaModels.kt +++ b/data/src/commonMain/kotlin/com/fluxa/app/data/remote/MetaModels.kt @@ -1,14 +1,32 @@ package com.fluxa.app.data.remote -import com.google.gson.JsonDeserializer -import com.google.gson.JsonElement -import com.google.gson.JsonObject -import com.google.gson.annotations.JsonAdapter -import com.google.gson.annotations.SerializedName -import java.lang.reflect.Type +import kotlinx.serialization.KSerializer +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.descriptors.PrimitiveKind +import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor +import kotlinx.serialization.descriptors.SerialDescriptor +import kotlinx.serialization.encoding.Decoder +import kotlinx.serialization.encoding.Encoder +import kotlinx.serialization.json.JsonArray +import kotlinx.serialization.json.JsonDecoder +import kotlinx.serialization.json.JsonElement +import kotlinx.serialization.json.JsonEncoder +import kotlinx.serialization.json.JsonNull +import kotlinx.serialization.json.JsonObject +import kotlinx.serialization.json.JsonPrimitive +import kotlinx.serialization.json.buildJsonObject +import kotlinx.serialization.json.contentOrNull +import kotlinx.serialization.json.encodeToJsonElement +import kotlinx.serialization.json.jsonArray +import kotlinx.serialization.json.jsonObject +import kotlinx.serialization.json.jsonPrimitive +import kotlinx.serialization.json.put -data class MetaRating(val source: String, val value: Any?) +@Serializable +data class MetaRating(val source: String, val value: String?) +@Serializable data class AppExtras( val seasonPosters: List? = null, val certification: String? = null, @@ -16,85 +34,26 @@ data class AppExtras( val cast: List? = null ) -@JsonAdapter(MetaDetailDeserializer::class) -data class MetaDetail( +@Serializable +data class MetaLink(val name: String, val category: String, val url: String) + +@Serializable +data class Video( val id: String, - val type: String, - val name: String, - @JsonAdapter(StringListDeserializer::class) val genres: List?, - val poster: String?, - val background: String?, - val logo: String?, - val description: String?, - val releaseInfo: String?, - val released: String? = null, - val runtime: String?, - @SerializedName(value = "videos", alternate = ["episodes"]) val videos: List