Skip to content

Commit

Permalink
AP-349 Check and restore subscription if exists for each purchase req…
Browse files Browse the repository at this point in the history
…uest
  • Loading branch information
jayeshsolanki93 committed Jun 28, 2019
1 parent dfa925d commit 25b2799
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 36 deletions.
95 changes: 63 additions & 32 deletions app/src/lumen/java/com/cliqz/browser/purchases/PurchaseFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -118,44 +118,75 @@ class PurchaseFragment : DialogFragment(), OnBuyClickListener {
}

override fun onBuyClicked(position: Int) {
mAdapter.getProduct(position)?.apply {
restoreExistingPurchase({ activeSku ->
Toast.makeText(context, "You are already subscribed to one the packages", Toast.LENGTH_LONG).show()
enableFeatures(activeSku)
}, {
makePurchase(sku)
})
}
}

private fun restoreExistingPurchase(success: (sku: String) -> Unit, cannotRestore: () -> Unit) {
Purchases.sharedInstance.restorePurchasesWith(
{
Log.w(TAG, it.message)
cannotRestore()
},
{
if (it.activeSubscriptions.isEmpty()) {
cannotRestore()
} else {
success(it.activeSubscriptions.first())
}
}
)
}

private fun makePurchase(sku: String) {
val oldSku = ArrayList<String>()
if (purchasesManager.purchase.sku.isNotEmpty()) {
oldSku.add(purchasesManager.purchase.sku)
}
mAdapter.getProduct(position)?.apply {
Purchases.sharedInstance.makePurchaseWith(activity as Activity, sku,
BillingClient.SkuType.SUBS, oldSku,
{ error, _ ->
Log.e(TAG, error.underlyingErrorMessage)
Purchases.sharedInstance.makePurchaseWith(activity as Activity, sku,
BillingClient.SkuType.SUBS, oldSku,
{ error, userCancelled ->
if (!userCancelled) {
Log.e(TAG, "" + error.underlyingErrorMessage)
Toast.makeText(context, error.message, Toast.LENGTH_LONG).show()
},
{ purchase, _ ->
when (purchase.sku) {
Product.BASIC_VPN -> {
purchasesManager.purchase.isVpnEnabled = true
purchasesManager.purchase.isDashboardEnabled = true
preferenceManager.isAttrackEnabled = true
preferenceManager.adBlockEnabled = true
}
Product.BASIC -> {
purchasesManager.purchase.isVpnEnabled = false
purchasesManager.purchase.isDashboardEnabled = true
preferenceManager.isAttrackEnabled = true
preferenceManager.adBlockEnabled = true
}
Product.VPN -> {
purchasesManager.purchase.isVpnEnabled = true
purchasesManager.purchase.isDashboardEnabled = false
preferenceManager.isAttrackEnabled = false
preferenceManager.adBlockEnabled = false
}
}
purchasesManager.purchase.sku = purchase.sku
purchasesManager.purchase.isASubscriber = true
bus.post(Messages.PurchaseCompleted())
this@PurchaseFragment.dismiss()
}
)
},
{ purchase, _ ->
enableFeatures(purchase.sku)
}
)
}

private fun enableFeatures(sku: String) {
when (sku) {
Product.BASIC_VPN -> {
purchasesManager.purchase.isVpnEnabled = true
purchasesManager.purchase.isDashboardEnabled = true
preferenceManager.isAttrackEnabled = true
preferenceManager.adBlockEnabled = true
}
Product.BASIC -> {
purchasesManager.purchase.isVpnEnabled = false
purchasesManager.purchase.isDashboardEnabled = true
preferenceManager.isAttrackEnabled = true
preferenceManager.adBlockEnabled = true
}
Product.VPN -> {
purchasesManager.purchase.isVpnEnabled = true
purchasesManager.purchase.isDashboardEnabled = false
preferenceManager.isAttrackEnabled = false
preferenceManager.adBlockEnabled = false
}
}
purchasesManager.purchase.sku = sku
purchasesManager.purchase.isASubscriber = true
bus.post(Messages.PurchaseCompleted())
this@PurchaseFragment.dismiss()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -62,10 +62,9 @@ class PurchasesManager(
isLoading = false
} else {
purchase.isASubscriber = false
// Check if in trial period.
this.loadTrialPeriodInfo(this@PurchasesManager)
}

// Get Trial Period data and vpn username, password.
this.loadTrialPeriodInfo(this@PurchasesManager)
}

override fun onError(error: PurchasesError) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ internal class FreshTab : StartTabFragment() {

@Subscribe
fun getTrialPeriod(onTrialPeriodResponse: Messages.OnTrialPeriodResponse) {
if (purchasesManager.purchase.isASubscriber) return
if (purchasesManager.serverData != null) {
purchasesManager.serverData?.apply {
if (isInTrial) {
Expand Down
2 changes: 1 addition & 1 deletion app/src/lumen/res/layout/fragment_freshtab.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
layout="@layout/fragment_freshtab_welcome_msg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintBottom_toBottomOf="@id/trial_over_lumen_upgrade"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
Expand Down

0 comments on commit 25b2799

Please sign in to comment.