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

Bind subscription info

parent 8e225c6d
No related branches found
No related tags found
No related merge requests found
package org.futo.circles.auth.feature.manage_subscription
import android.content.ActivityNotFoundException
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.text.format.DateFormat
import android.view.View
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import dagger.hilt.android.AndroidEntryPoint
import org.futo.circles.auth.R
import org.futo.circles.auth.databinding.DialogFragmentManageSubscriptionBinding
import org.futo.circles.auth.model.ActiveSubscriptionInfo
import org.futo.circles.auth.subscriptions.SubscriptionProvider
import org.futo.circles.core.base.fragment.BaseFullscreenDialogFragment
import org.futo.circles.core.extensions.gone
import org.futo.circles.core.extensions.observeResponse
import org.futo.circles.core.extensions.showError
import org.futo.circles.core.extensions.visible
import java.util.Date
import javax.inject.Inject
@AndroidEntryPoint
......@@ -33,7 +43,6 @@ class ManageSubscriptionDialogFragment :
viewModel.getSubscriptionInfo(subscriptionManager)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setupViews()
......@@ -45,6 +54,51 @@ class ManageSubscriptionDialogFragment :
}
private fun setupObservers() {
viewModel.subscriptionInfoLiveData.observeResponse(
this,
onRequestInvoked = { binding.vLoading.gone() },
success = {
binding.lSubscriptionInfo.visible()
bindSubscriptionInfo(it)
},
error = {
binding.tvEmptyMessage.visible()
})
}
private fun bindSubscriptionInfo(subscriptionInfo: ActiveSubscriptionInfo) {
with(binding) {
tvName.text = subscriptionInfo.name
tvDescription.text = subscriptionInfo.description
tvPrice.text = getString(R.string.price_format, subscriptionInfo.price)
tvDuration.text = getString(R.string.duration_format, subscriptionInfo.duration)
tvProductId.text = getString(R.string.product_id_format, subscriptionInfo.productId)
val purchaseDate =
DateFormat.format("MMM dd yyyy, h:mm a", Date(subscriptionInfo.purchaseTime))
tvPurchasedAt.text = getString(R.string.purchase_time_format, purchaseDate)
tvAutoRenewMessage.text = getString(
if (subscriptionInfo.isAutoRenewing) R.string.is_auto_renew_message
else R.string.is_not_auto_renew_message
)
btnManageGp.setOnClickListener {
openPlayStoreSubscriptionInfo(
subscriptionInfo.productId,
subscriptionInfo.packageName
)
}
}
}
private fun openPlayStoreSubscriptionInfo(sku: String, packageName: String) {
try {
startActivity(
Intent(
Intent.ACTION_VIEW,
Uri.parse("https://play.google.com/store/account/subscriptions?sku=$sku&package=$packageName")
)
)
} catch (e: ActivityNotFoundException) {
showError(getString(R.string.can_not_open_google_play))
}
}
}
\ No newline at end of file
......@@ -36,6 +36,7 @@ class ManageSubscriptionViewModel @Inject constructor(
subscriptionInfoLiveData.postValue(
Response.Success(
ActiveSubscriptionInfo(
packageName = activeReceipt.packageName,
productId = activeReceipt.productId,
purchaseTime = activeReceipt.purchaseTime,
isAutoRenewing = activeReceipt.isAutoRenewing,
......
package org.futo.circles.auth.model
data class ActiveSubscriptionInfo(
val packageName: String,
val productId: String,
val purchaseTime: Long,
val isAutoRenewing: Boolean,
......
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