feat: upgrade kotlinx.serialization to 1.5.0-RC

This commit is contained in:
Harsh Shandilya 2023-01-26 21:49:04 +05:30
parent dea2d8b468
commit 540ea7ba43
No known key found for this signature in database
8 changed files with 28 additions and 49 deletions

View file

@ -1,29 +1,2 @@
# Keep `Companion` object fields of serializable classes.
# This avoids serializer lookup through `getDeclaredClasses` as done for named companion objects.
-if @kotlinx.serialization.Serializable class **
-keepclassmembers class <1> {
static <1>$Companion Companion;
}
# Keep `serializer()` on companion objects (both default and named) of serializable classes.
-if @kotlinx.serialization.Serializable class ** {
static **$* *;
}
-keepclassmembers class <2>$<3> {
kotlinx.serialization.KSerializer serializer(...);
}
# Keep `INSTANCE.serializer()` of serializable objects.
-if @kotlinx.serialization.Serializable class ** {
public static ** INSTANCE;
}
-keepclassmembers class <1> {
public static <1> INSTANCE;
kotlinx.serialization.KSerializer serializer(...);
}
# @Serializable and @Polymorphic are used at runtime for polymorphic serialization.
-keepattributes RuntimeVisibleAnnotations,AnnotationDefault
-dontobfuscate
-keepattributes SourceFile, LineNumberTable

View file

@ -13,11 +13,17 @@ import dev.msfjarvis.claw.model.LobstersPost
import dev.msfjarvis.claw.model.LobstersPostDetails
import dev.msfjarvis.claw.model.User
import dev.msfjarvis.claw.util.TestUtils.getJson
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.decodeFromString
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.JsonNamingStrategy
@OptIn(ExperimentalSerializationApi::class)
class ApiWrapper(controller: EitherNetController<LobstersApi>) {
private val json = Json { ignoreUnknownKeys = true }
private val json = Json {
ignoreUnknownKeys = true
namingStrategy = JsonNamingStrategy.SnakeCase
}
private val hottest: List<LobstersPost> = json.decodeFromString(getJson("hottest.json"))
private val postDetails: LobstersPostDetails =
json.decodeFromString(getJson("post_details_tdfoqh.json"))

View file

@ -14,14 +14,15 @@ import dagger.Provides
import dagger.multibindings.IntoSet
import kotlinx.serialization.ExperimentalSerializationApi
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.JsonNamingStrategy
import okhttp3.MediaType
import retrofit2.Converter
@Module
@ContributesTo(ApplicationScope::class)
@OptIn(ExperimentalSerializationApi::class)
object RetrofitModule {
@OptIn(ExperimentalSerializationApi::class)
@Provides
@IntoSet
fun provideJsonConverterFactory(json: Json): Converter.Factory {
@ -31,6 +32,9 @@ object RetrofitModule {
@Provides
fun provideJsonSerializer(): Json {
return Json { ignoreUnknownKeys = true }
return Json {
ignoreUnknownKeys = true
namingStrategy = JsonNamingStrategy.SnakeCase
}
}
}

View file

@ -14,7 +14,7 @@ kotlin = "1.8.0"
okhttp = "3.14.9"
retrofit = "2.9.0"
richtext = "0.16.0"
serialization = "1.4.1"
serialization = "1.5.0-RC"
sqldelight = "2.0.0-alpha05"
whetstone = "0.6.0-SNAPSHOT"
workmanager = "2.8.0-rc01"

View file

@ -15,16 +15,12 @@ import kotlinx.serialization.Serializable
@Serializable
class Comment(
@SerialName("short_id") val shortId: String,
val shortId: String,
val comment: String,
val url: String,
val score: Int,
@Serializable(with = JavaInstantSerializer::class)
@SerialName("created_at")
val createdAt: TemporalAccessor,
@Serializable(with = JavaInstantSerializer::class)
@SerialName("updated_at")
val updatedAt: TemporalAccessor,
@SerialName("indent_level") val indentLevel: Int,
@Serializable(with = JavaInstantSerializer::class) val createdAt: TemporalAccessor,
@Serializable(with = JavaInstantSerializer::class) val updatedAt: TemporalAccessor,
val indentLevel: Int,
@SerialName("commenting_user") val user: User,
)

View file

@ -13,13 +13,13 @@ import kotlinx.serialization.Serializable
@Serializable
class LobstersPost(
@SerialName("short_id") val shortId: String,
@SerialName("created_at") val createdAt: String,
val shortId: String,
val createdAt: String,
val title: String,
val url: String,
val description: String,
@SerialName("comment_count") val commentCount: Int,
@SerialName("comments_url") val commentsUrl: String,
val commentCount: Int,
val commentsUrl: String,
@SerialName("submitter_user") val submitter: User,
val tags: List<String>,
)

View file

@ -13,13 +13,13 @@ import kotlinx.serialization.Serializable
@Serializable
class LobstersPostDetails(
@SerialName("short_id") val shortId: String,
@SerialName("created_at") val createdAt: String,
val shortId: String,
val createdAt: String,
val title: String,
val url: String,
val description: String,
@SerialName("comment_count") val commentCount: Int,
@SerialName("comments_url") val commentsUrl: String,
val commentCount: Int,
val commentsUrl: String,
@SerialName("submitter_user") val submitter: User,
val tags: List<String>,
val comments: List<Comment>,

View file

@ -16,6 +16,6 @@ class User(
val username: String,
val about: String,
@SerialName("invited_by_user") val invitedBy: String?,
@SerialName("avatar_url") val avatarUrl: String,
@SerialName("created_at") val createdAt: String,
val avatarUrl: String,
val createdAt: String,
)