From f3eefa57126f239bbb0a62a2d193106c5c4b77d5 Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Wed, 17 Feb 2021 11:18:58 +0100 Subject: [PATCH] Fixes #1386 --- .../habitica/HabiticaPurchaseVerifier.kt | 17 ++++++++--------- .../habitica/events/ConsumablePurchasedEvent.kt | 2 +- .../habitica/ui/activities/GiftGemsActivity.kt | 4 +++- .../purchases/GiftBalanceGemsFragment.kt | 2 ++ .../purchases/GiftPurchaseGemsFragment.kt | 4 +++- 5 files changed, 17 insertions(+), 12 deletions(-) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaPurchaseVerifier.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaPurchaseVerifier.kt index 748d4be8f..1695509aa 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaPurchaseVerifier.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaPurchaseVerifier.kt @@ -19,9 +19,7 @@ import org.solovyev.android.checkout.ResponseCodes import retrofit2.HttpException import java.util.* -/** - * Created by Negue on 26.11.2015. - */ + class HabiticaPurchaseVerifier(context: Context, apiClient: ApiClient) : BasePurchaseVerifier() { private val apiClient: ApiClient private val purchasedOrderList: MutableSet = HashSet() @@ -39,8 +37,8 @@ class HabiticaPurchaseVerifier(context: Context, apiClient: ApiClient) : BasePur apiClient.validatePurchase(validationRequest).subscribe({ purchasedOrderList.add(purchase.orderId) requestListener.onSuccess(verifiedPurchases) - EventBus.getDefault().post(ConsumablePurchasedEvent(purchase)) - removeGift(purchase.sku) + val giftedID = removeGift(purchase.sku) + EventBus.getDefault().post(ConsumablePurchasedEvent(purchase, giftedID)) }) { throwable: Throwable -> handleError(throwable, purchase, requestListener, verifiedPurchases) } @@ -50,8 +48,8 @@ class HabiticaPurchaseVerifier(context: Context, apiClient: ApiClient) : BasePur apiClient.validateNoRenewSubscription(validationRequest).subscribe({ purchasedOrderList.add(purchase.orderId) requestListener.onSuccess(verifiedPurchases) - EventBus.getDefault().post(ConsumablePurchasedEvent(purchase)) - removeGift(purchase.sku) + val giftedID = removeGift(purchase.sku) + EventBus.getDefault().post(ConsumablePurchasedEvent(purchase, giftedID)) }) { throwable: Throwable -> handleError(throwable, purchase, requestListener, verifiedPurchases) } @@ -138,9 +136,10 @@ class HabiticaPurchaseVerifier(context: Context, apiClient: ApiClient) : BasePur savePendingGifts() } - private fun removeGift(sku: String) { - pendingGifts.remove(sku) + private fun removeGift(sku: String): String? { + val giftedID = pendingGifts.remove(sku) savePendingGifts() + return giftedID } private fun savePendingGifts() { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/events/ConsumablePurchasedEvent.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/events/ConsumablePurchasedEvent.kt index b8ed8dd0a..425089d40 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/events/ConsumablePurchasedEvent.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/events/ConsumablePurchasedEvent.kt @@ -2,4 +2,4 @@ package com.habitrpg.android.habitica.events import org.solovyev.android.checkout.Purchase -class ConsumablePurchasedEvent(internal val purchase: Purchase) +class ConsumablePurchasedEvent(internal val purchase: Purchase, val recipientID: String? = null) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GiftGemsActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GiftGemsActivity.kt index 2b865a181..024f893ea 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GiftGemsActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GiftGemsActivity.kt @@ -149,7 +149,9 @@ class GiftGemsActivity : BaseActivity() { fun onConsumablePurchased(event: ConsumablePurchasedEvent) { purchaseHandler?.consumePurchase(event.purchase) runOnUiThread { - displayConfirmationDialog() + if (event.recipientID == giftedUserID) { + displayConfirmationDialog() + } } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/GiftBalanceGemsFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/GiftBalanceGemsFragment.kt index 03f0ce010..ad779d349 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/GiftBalanceGemsFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/GiftBalanceGemsFragment.kt @@ -1,5 +1,6 @@ package com.habitrpg.android.habitica.ui.fragments.purchases +import android.annotation.SuppressLint import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -24,6 +25,7 @@ class GiftBalanceGemsFragment : BaseFragment() { } var giftedMember: Member? = null + @SuppressLint("SetTextI18n") set(value) { field = value field?.let { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/GiftPurchaseGemsFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/GiftPurchaseGemsFragment.kt index b40075395..051a112ad 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/GiftPurchaseGemsFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/GiftPurchaseGemsFragment.kt @@ -1,5 +1,6 @@ package com.habitrpg.android.habitica.ui.fragments.purchases +import android.annotation.SuppressLint import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -30,6 +31,7 @@ class GiftPurchaseGemsFragment : BaseFragment() } var giftedMember: Member? = null + @SuppressLint("SetTextI18n") set(value) { field = value field?.let { @@ -52,7 +54,7 @@ class GiftPurchaseGemsFragment : BaseFragment() binding?.gems4View?.setOnPurchaseClickListener { purchaseGems(PurchaseTypes.Purchase4Gems) } binding?.gems21View?.setOnPurchaseClickListener { purchaseGems(PurchaseTypes.Purchase21Gems) } binding?.gems42View?.setOnPurchaseClickListener { purchaseGems(PurchaseTypes.Purchase42Gems) } - binding?.gems84View?.setOnPurchaseClickListener({ purchaseGems(PurchaseTypes.Purchase84Gems) }) + binding?.gems84View?.setOnPurchaseClickListener { purchaseGems(PurchaseTypes.Purchase84Gems) } } fun setupCheckout() {