Skip to content
Snippets Groups Projects
Commit 16528570 authored by Taras's avatar Taras
Browse files

Get active subscription info for manage subscriptions screen

parent 86118702
No related branches found
No related tags found
No related merge requests found
......@@ -222,7 +222,6 @@
<string name="rich_text_editor_unindent">Unindent</string>
<string name="rich_text_editor_quote">Toggle quote</string>
<string name="rich_text_editor_code_block">Toggle code block</string>
<string name="manage_subscription">Manage subscription</string>
<string-array name="report_categories">
<item>@string/crude_language</item>
......
......@@ -6,27 +6,45 @@ import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import dagger.hilt.android.AndroidEntryPoint
import org.futo.circles.auth.databinding.DialogFragmentManageSubscriptionBinding
import org.futo.circles.auth.subscriptions.SubscriptionProvider
import org.futo.circles.core.base.fragment.BaseFullscreenDialogFragment
import org.futo.circles.core.base.fragment.HasLoadingState
import javax.inject.Inject
@AndroidEntryPoint
class ManageSubscriptionDialogFragment :
BaseFullscreenDialogFragment(DialogFragmentManageSubscriptionBinding::inflate),
HasLoadingState {
BaseFullscreenDialogFragment(DialogFragmentManageSubscriptionBinding::inflate) {
override val fragment: Fragment = this
private val viewModel by viewModels<ManageSubscriptionViewModel>()
private val binding by lazy {
getBinding() as DialogFragmentManageSubscriptionBinding
}
@Inject
lateinit var subscriptionProvider: SubscriptionProvider
private val subscriptionManager by lazy {
subscriptionProvider.getManager(this, null)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
viewModel.getSubscriptionInfo(subscriptionManager)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setupViews()
setupObservers()
}
private fun setupViews() {
}
private fun setupObservers() {
}
}
\ No newline at end of file
......@@ -2,14 +2,52 @@ package org.futo.circles.auth.feature.manage_subscription
import androidx.lifecycle.ViewModel
import dagger.hilt.android.lifecycle.HiltViewModel
import org.futo.circles.auth.model.ActiveSubscriptionInfo
import org.futo.circles.auth.subscriptions.SubscriptionManager
import org.futo.circles.core.base.SingleEventLiveData
import org.futo.circles.core.extensions.Response
import org.futo.circles.core.extensions.launchBg
import javax.inject.Inject
@HiltViewModel
class ManageSubscriptionViewModel @Inject constructor(
) : ViewModel() {
val subscriptionInfoLiveData = SingleEventLiveData<Response<ActiveSubscriptionInfo>>()
fun getSubscriptionInfo(subscriptionManager: SubscriptionManager) {
launchBg {
val activeReceipt =
(subscriptionManager.getActiveSubscriptionReceipt() as? Response.Success)?.data
?: kotlin.run {
subscriptionInfoLiveData.postValue(
Response.Error("Failed to fetch active subscription info")
)
return@launchBg
}
val details =
(subscriptionManager.getDetails(listOf(activeReceipt.productId)) as? Response.Success)?.data?.lastOrNull()
?: kotlin.run {
subscriptionInfoLiveData.postValue(
Response.Error("Failed to fetch active subscription details")
)
return@launchBg
}
subscriptionInfoLiveData.postValue(
Response.Success(
ActiveSubscriptionInfo(
productId = activeReceipt.productId,
purchaseTime = activeReceipt.purchaseTime,
isAutoRenewing = activeReceipt.isAutoRenewing,
name = details.name,
description = details.description,
price = details.price,
duration = details.duration
)
)
)
}
}
}
\ No newline at end of file
package org.futo.circles.auth.model
data class ActiveSubscriptionInfo(
val productId: String,
val purchaseTime: Long,
val isAutoRenewing: Boolean,
val name: String,
val description: String,
val price: String,
val duration: String
)
\ No newline at end of file
......@@ -4,5 +4,7 @@ data class SubscriptionReceiptData(
val productId: String,
val purchaseToken: String,
val orderId: String,
val packageName: String
val packageName: String,
val purchaseTime: Long,
val isAutoRenewing: Boolean
)
\ No newline at end of file
......@@ -225,6 +225,13 @@ class GoogleSubscriptionsManager(
private fun Purchase.toSubscriptionReceiptData(): SubscriptionReceiptData {
val orderId = orderId ?: ""
val productId = products.lastOrNull() ?: ""
return SubscriptionReceiptData(productId, purchaseToken, orderId, packageName)
return SubscriptionReceiptData(
productId,
purchaseToken,
orderId,
packageName,
purchaseTime,
isAutoRenewing
)
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/toolbar"
android:layout_width="0dp"
android:layout_height="?attr/actionBarSize"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:navigationIcon="?attr/homeAsUpIndicator"
app:title="@string/manage_subscription"
app:titleCentered="true" />
<View
android:id="@+id/toolbarDivider"
android:layout_width="0dp"
android:layout_height="@dimen/divider_height"
android:background="@color/divider_color"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/toolbar" />
<TextView
android:id="@+id/tvEmptyMessage"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/you_don_t_have_any_active_subscriptions"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/toolbarDivider" />
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
......@@ -70,6 +70,7 @@
<string name="skip">Skip</string>
<string name="subscriptions">Subscriptions</string>
<string name="subscription">Subscription</string>
<string name="manage_subscription">Manage subscription</string>
<string name="enter_your_username">Enter your username</string>
<string name="set_username">Set username</string>
<string name="send_validation_code">Send validation code</string>
......@@ -157,6 +158,7 @@ Or, think about all of your friends across all of the places you\'ve ever lived.
<br/><br/>If you want to share with lots of different people who <i>don\'t</i> all know each other, then you should invite those people to follow you in a <b>Circle</b> instead.]]></string>
<string name="configure">Configure</string>
<string name="receive_email_updates">Receive email updates</string>
<string name="you_don_t_have_any_active_subscriptions">You don\'t have any active subscriptions</string>
<plurals name="days">
<item quantity="one">%1$d day</item>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment