From f30304a36ae030b5b13b01123f3e3a41462e7fd8 Mon Sep 17 00:00:00 2001 From: Taras <tarassmakula@gmail.com> Date: Fri, 5 Aug 2022 17:07:41 +0300 Subject: [PATCH] Create subscription list item and mapping --- .../circles/model/SubscriptionListItem.kt | 11 ++++++++ .../google/ProductDetailsMapping.kt | 28 +++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 app/src/main/java/org/futo/circles/model/SubscriptionListItem.kt create mode 100644 app/src/main/java/org/futo/circles/subscriptions/google/ProductDetailsMapping.kt diff --git a/app/src/main/java/org/futo/circles/model/SubscriptionListItem.kt b/app/src/main/java/org/futo/circles/model/SubscriptionListItem.kt new file mode 100644 index 000000000..fc3f1aa8b --- /dev/null +++ b/app/src/main/java/org/futo/circles/model/SubscriptionListItem.kt @@ -0,0 +1,11 @@ +package org.futo.circles.model + +import org.futo.circles.core.list.IdEntity + +data class SubscriptionListItem( + override val id: String, + val name: String, + val description: String, + val price: String, + val duration: String +) : IdEntity<String> \ No newline at end of file diff --git a/app/src/main/java/org/futo/circles/subscriptions/google/ProductDetailsMapping.kt b/app/src/main/java/org/futo/circles/subscriptions/google/ProductDetailsMapping.kt new file mode 100644 index 000000000..29d5a9f50 --- /dev/null +++ b/app/src/main/java/org/futo/circles/subscriptions/google/ProductDetailsMapping.kt @@ -0,0 +1,28 @@ +package org.futo.circles.subscriptions.google + +import android.content.Context +import com.android.billingclient.api.ProductDetails +import org.futo.circles.extensions.Response +import org.futo.circles.model.SubscriptionListItem +import org.futo.circles.subscriptions.formatIsoPeriod + +fun ProductDetails.toSubscriptionListItem(context: Context): SubscriptionListItem { + val productOffer = + subscriptionOfferDetails?.last()?.pricingPhases?.pricingPhaseList?.last() + + return SubscriptionListItem( + id = productId, + name = name, + description = description, + price = productOffer?.formattedPrice ?: "", + duration = productOffer?.billingPeriod?.formatIsoPeriod(context) ?: "" + ) +} + +fun Response<List<ProductDetails>>.toSubscriptionListItemsResponse(context: Context): Response<List<SubscriptionListItem>> = + when (val response = this) { + is Response.Success -> Response.Success(response.data.map { + it.toSubscriptionListItem(context) + }) + is Response.Error -> response + } \ No newline at end of file -- GitLab