From 5d4f7273ebae128c4fa0c69d6c16547ac2bcbcee Mon Sep 17 00:00:00 2001 From: Antonis Lilis Date: Thu, 12 Oct 2023 16:42:16 +0300 Subject: [PATCH] Converts string date to object in the all-domains response model --- .../rest/wpcom/site/SiteRestClientTest.kt | 7 ++++++ .../rest/wpcom/site/AllDomainsResponse.kt | 23 +++++++++++++++++-- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/site/SiteRestClientTest.kt b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/site/SiteRestClientTest.kt index a9105f33ee..33f1d8f3ae 100644 --- a/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/site/SiteRestClientTest.kt +++ b/example/src/test/java/org/wordpress/android/fluxc/network/rest/wpcom/site/SiteRestClientTest.kt @@ -39,6 +39,7 @@ import org.wordpress.android.fluxc.store.SiteStore.SiteVisibility import org.wordpress.android.fluxc.store.SiteStore.SiteVisibility.COMING_SOON import org.wordpress.android.fluxc.store.SiteStore.SiteVisibility.PUBLIC import org.wordpress.android.fluxc.test +import org.wordpress.android.util.DateTimeUtils import kotlin.test.assertNotNull @RunWith(MockitoJUnitRunner::class) @@ -546,6 +547,12 @@ class SiteRestClientTest { assertThat(domains).hasSize(4) assertThat(domains[0].domain).isEqualTo("some.test.domain") assertThat(domains[0].wpcomDomain).isFalse + assertThat(domains[0].registrationDate).isEqualTo( + DateTimeUtils.dateUTCFromIso8601("2009-03-26T21:20:53+00:00") + ) + assertThat(domains[0].expiry).isEqualTo( + DateTimeUtils.dateUTCFromIso8601("2024-03-24T00:00:00+00:00") + ) assertThat(domains[0].domainStatus).isNotNull assertThat(domains[0].domainStatus?.status).isEqualTo("Active") assertThat(domains[0].domainStatus?.statusType).isEqualTo(SUCCESS) diff --git a/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/site/AllDomainsResponse.kt b/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/site/AllDomainsResponse.kt index 05a51952b6..8b2f8353e4 100644 --- a/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/site/AllDomainsResponse.kt +++ b/fluxc/src/main/java/org/wordpress/android/fluxc/network/rest/wpcom/site/AllDomainsResponse.kt @@ -6,7 +6,9 @@ import com.google.gson.JsonElement import com.google.gson.JsonParseException import com.google.gson.annotations.JsonAdapter import com.google.gson.annotations.SerializedName +import org.wordpress.android.util.DateTimeUtils import java.lang.reflect.Type +import java.util.Date data class AllDomainsResponse(val domains: List) @@ -29,9 +31,11 @@ data class AllDomainsDomain( @JsonAdapter(BooleanTypeAdapter::class) val hasRegistration: Boolean = false, @SerializedName("registration_date") - val registrationDate: String? = null, + @JsonAdapter(AllDomainsDateAdapter::class) + val registrationDate: Date? = null, @SerializedName("expiry") - val expiry: String? = null, + @JsonAdapter(AllDomainsDateAdapter::class) + val expiry: Date? = null, @SerializedName("wpcom_domain") @JsonAdapter(BooleanTypeAdapter::class) val wpcomDomain: Boolean = false, @@ -93,3 +97,18 @@ internal class StatusTypeAdapter : JsonDeserializer { } } } + +internal class AllDomainsDateAdapter : JsonDeserializer { + @Throws(JsonParseException::class) + override fun deserialize( + json: JsonElement, + typeOfT: Type, + context: JsonDeserializationContext + ): Date? { + val jsonPrimitive = json.asJsonPrimitive + return when { + jsonPrimitive.isString -> DateTimeUtils.dateUTCFromIso8601(jsonPrimitive.asString) + else -> null + } + } +}