@@ -5,19 +5,33 @@ import com.squareup.moshi.FromJson
55import com.squareup.moshi.JsonReader
66import com.squareup.moshi.JsonWriter
77import com.squareup.moshi.ToJson
8- import com.squareup.moshi.adapters.EnumJsonAdapter
98
109/* *
11- * Handles EventStatus values without failing deserialization when the API returns a new status .
10+ * Normalizes legacy event status values and avoids failing deserialization on new values .
1211 */
1312class EventStatusJsonAdapter {
14- private val delegate = EnumJsonAdapter .create(EventStatus ::class .java).withUnknownFallback(null )
15-
1613 @FromJson
17- fun fromJson (reader : JsonReader ): EventStatus ? = delegate.fromJson(reader)
14+ fun fromJson (reader : JsonReader ): EventStatus ? {
15+ if (reader.peek() == JsonReader .Token .NULL ) {
16+ return reader.nextNull()
17+ }
18+
19+ return when (reader.nextString()) {
20+ " confirmed" -> EventStatus .CONFIRMED
21+ " maybe" , " tentative" -> EventStatus .MAYBE
22+ " cancelled" -> EventStatus .CANCELLED
23+ else -> null
24+ }
25+ }
1826
1927 @ToJson
28+ @Suppress(" DEPRECATION" )
2029 fun toJson (writer : JsonWriter , value : EventStatus ? ) {
21- delegate.toJson(writer, value)
30+ when (value) {
31+ null -> writer.nullValue()
32+ EventStatus .CONFIRMED -> writer.value(" confirmed" )
33+ EventStatus .MAYBE , EventStatus .TENTATIVE -> writer.value(" maybe" )
34+ EventStatus .CANCELLED -> writer.value(" cancelled" )
35+ }
2236 }
2337}
0 commit comments