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