diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 6ca93cb4..b0cb87af 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -1,14 +1 @@ -keepattributes *Annotation*, EnclosingMethod, InnerClasses --dontnote kotlinx.serialization.AnnotationsKt # core serialization annotations - --keep,includedescriptorclasses class dev.msfjarvis.lobsters.model.**$$serializer { *; } --keepclassmembers class dev.msfjarvis.lobsters.model.** { - *** Companion; -} --keepclasseswithmembers class dev.msfjarvis.lobsters.model.** { - kotlinx.serialization.KSerializer serializer(...); -} - -# Inline-based optimizations cause reflection to fail within Ktor (from what I can tell), so we turn -# this off for now. --dontoptimize diff --git a/app/src/main/java/dev/msfjarvis/lobsters/data/source/LobstersApiTypeConverters.kt b/app/src/main/java/dev/msfjarvis/lobsters/data/source/LobstersApiTypeConverters.kt index 6694ad8a..85dc7e6c 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/data/source/LobstersApiTypeConverters.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/data/source/LobstersApiTypeConverters.kt @@ -1,24 +1,25 @@ package dev.msfjarvis.lobsters.data.source import androidx.room.TypeConverter +import com.squareup.moshi.Moshi import dev.msfjarvis.lobsters.model.Submitter -import kotlinx.serialization.decodeFromString -import kotlinx.serialization.encodeToString -import kotlinx.serialization.json.Json +import dev.msfjarvis.lobsters.model.SubmitterJsonAdapter object LobstersApiTypeConverters { private const val SEPARATOR = "," + private val moshi = Moshi.Builder().build() + private val submitterAdapter = SubmitterJsonAdapter(moshi) @TypeConverter @JvmStatic fun toSubmitterUser(value: String?): Submitter? { - return value?.let { Json.decodeFromString(value) } + return value?.let { submitterAdapter.fromJson(value) } } @TypeConverter @JvmStatic fun fromSubmitterUser(value: Submitter?): String? { - return value?.let { Json.encodeToString(value) } + return submitterAdapter.toJson(value) } @TypeConverter