From f9fa49cf846a6971ff9fe184602b8c45036d9700 Mon Sep 17 00:00:00 2001 From: Hafiz Date: Mon, 11 Apr 2022 03:13:19 -0400 Subject: [PATCH 1/9] queryPurchasesAsync run onResume instead of init block --- .../habitica/helpers/PurchaseHandler.kt | 22 ++++++++++++------- .../purchases/GemsPurchaseFragment.kt | 1 + .../purchases/SubscriptionFragment.kt | 1 + .../InsufficientGemsDialog.kt | 2 ++ 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PurchaseHandler.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PurchaseHandler.kt index c1bef844f..a483ba254 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PurchaseHandler.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/PurchaseHandler.kt @@ -103,14 +103,7 @@ open class PurchaseHandler( override fun onBillingSetupFinished(billingResult: BillingResult) { if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) { billingClientState = BillingClientState.READY - billingClient.queryPurchasesAsync( - BillingClient.SkuType.SUBS, - this@PurchaseHandler - ) - billingClient.queryPurchasesAsync( - BillingClient.SkuType.INAPP, - this@PurchaseHandler - ) + queryPurchases() } else { billingClientState = BillingClientState.UNAVAILABLE } @@ -126,6 +119,19 @@ open class PurchaseHandler( billingClient.endConnection() } + fun queryPurchases(){ + if (billingClientState == BillingClientState.READY){ + billingClient.queryPurchasesAsync( + BillingClient.SkuType.SUBS, + this@PurchaseHandler + ) + billingClient.queryPurchasesAsync( + BillingClient.SkuType.INAPP, + this@PurchaseHandler + ) + } + } + suspend fun getAllGemSKUs(): List = getSKUs(BillingClient.SkuType.INAPP, PurchaseTypes.allGemTypes) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/GemsPurchaseFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/GemsPurchaseFragment.kt index 92338baa9..18d2acacb 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/GemsPurchaseFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/GemsPurchaseFragment.kt @@ -91,6 +91,7 @@ class GemsPurchaseFragment : BaseFragment() { override fun onResume() { super.onResume() + purchaseHandler.queryPurchases() loadInventory() } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/SubscriptionFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/SubscriptionFragment.kt index 9af5d4993..8f8f9218f 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/SubscriptionFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/purchases/SubscriptionFragment.kt @@ -102,6 +102,7 @@ class SubscriptionFragment : BaseFragment() { override fun onResume() { super.onResume() + purchaseHandler.queryPurchases() refresh() loadInventory() } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/insufficientCurrency/InsufficientGemsDialog.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/insufficientCurrency/InsufficientGemsDialog.kt index eb8d949a4..4afdec55e 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/insufficientCurrency/InsufficientGemsDialog.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/insufficientCurrency/InsufficientGemsDialog.kt @@ -49,6 +49,8 @@ class InsufficientGemsDialog(context: Context, var gemPrice: Int) : Insufficient addCloseButton() } + + override fun onAttachedToWindow() { super.onAttachedToWindow() getActivity()?.let { activity -> From 53f6bc3eea5f34bfa9669e33f945a085cb8667ae Mon Sep 17 00:00:00 2001 From: Hafiz Date: Tue, 12 Apr 2022 02:03:07 -0400 Subject: [PATCH 2/9] check if gif is already set before setting drawable --- .../habitica/ui/fragments/social/party/PartyDetailFragment.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyDetailFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyDetailFragment.kt index e142314dc..cdafbfeed 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyDetailFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyDetailFragment.kt @@ -224,7 +224,9 @@ class PartyDetailFragment : BaseFragment() { } else { context?.let { context -> DataBindingUtils.loadImage(context, "quest_" + questContent.key) { - binding?.questImageView?.setImageDrawable(it) + if (binding?.questImageView?.drawable == null){ + binding?.questImageView?.setImageDrawable(it) + } val params = binding?.questImageView?.layoutParams ?: return@loadImage params.height = it.intrinsicHeight.dpToPx(context) binding?.questImageView?.layoutParams = params From 196ef3b24493e81bf08022552a880d361de1b630 Mon Sep 17 00:00:00 2001 From: Hafiz Date: Sun, 17 Apr 2022 15:48:02 -0400 Subject: [PATCH 3/9] Check if current set image resource does not match previous set resource --- .../ui/fragments/social/party/PartyDetailFragment.kt | 2 +- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyDetailFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyDetailFragment.kt index cdafbfeed..6e3b2905c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyDetailFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyDetailFragment.kt @@ -224,7 +224,7 @@ class PartyDetailFragment : BaseFragment() { } else { context?.let { context -> DataBindingUtils.loadImage(context, "quest_" + questContent.key) { - if (binding?.questImageView?.drawable == null){ + if (binding?.questImageView?.drawable?.constantState != it.constantState || binding?.questImageView?.drawable == null){ binding?.questImageView?.setImageDrawable(it) } val params = binding?.questImageView?.layoutParams ?: return@loadImage diff --git a/build.gradle b/build.gradle index 3f6744988..1d36d355a 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ buildscript { maven { url "https://plugins.gradle.org/m2/" } } dependencies { - classpath 'com.android.tools.build:gradle:7.1.2' + classpath 'com.android.tools.build:gradle:7.0.2' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' classpath 'com.google.gms:google-services:4.3.10' classpath 'com.google.firebase:firebase-crashlytics-gradle:2.8.1' diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 42c46ff72..f0de54789 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Tue Oct 27 17:32:09 CET 2020 +#Sun Apr 17 15:16:40 EDT 2022 distributionBase=GRADLE_USER_HOME +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip distributionPath=wrapper/dists -zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip +zipStoreBase=GRADLE_USER_HOME From c3240be6d8a23c821653cbce5214e3dfbe01b230 Mon Sep 17 00:00:00 2001 From: Hafiz Date: Tue, 26 Apr 2022 04:15:33 -0400 Subject: [PATCH 4/9] Create Account Dialog fragment for resetting and deleting account --- .../res/color/text_input_account_stroke.xml | 6 + Habitica/res/drawable/arrow_back.xml | 10 ++ .../res/layout/dialog_habitica_account.xml | 110 ++++++++++++++ Habitica/res/values/colors.xml | 1 + Habitica/res/values/strings.xml | 8 +- Habitica/res/values/styles.xml | 21 +++ .../preferences/AccountPreferenceFragment.kt | 63 ++++---- .../preferences/HabiticaAccountDialog.kt | 137 ++++++++++++++++++ 8 files changed, 319 insertions(+), 37 deletions(-) create mode 100644 Habitica/res/color/text_input_account_stroke.xml create mode 100644 Habitica/res/drawable/arrow_back.xml create mode 100644 Habitica/res/layout/dialog_habitica_account.xml create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/HabiticaAccountDialog.kt diff --git a/Habitica/res/color/text_input_account_stroke.xml b/Habitica/res/color/text_input_account_stroke.xml new file mode 100644 index 000000000..809fab777 --- /dev/null +++ b/Habitica/res/color/text_input_account_stroke.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Habitica/res/drawable/arrow_back.xml b/Habitica/res/drawable/arrow_back.xml new file mode 100644 index 000000000..6d23e43ae --- /dev/null +++ b/Habitica/res/drawable/arrow_back.xml @@ -0,0 +1,10 @@ + + + diff --git a/Habitica/res/layout/dialog_habitica_account.xml b/Habitica/res/layout/dialog_habitica_account.xml new file mode 100644 index 000000000..931405153 --- /dev/null +++ b/Habitica/res/layout/dialog_habitica_account.xml @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Habitica/res/values/colors.xml b/Habitica/res/values/colors.xml index 788784c56..35368c0c5 100644 --- a/Habitica/res/values/colors.xml +++ b/Habitica/res/values/colors.xml @@ -118,6 +118,7 @@ #33000000 #89000000 #331a181d + #051A181D #3CA9DCF6 #F6F4F8 diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml index d02c8850f..441e5ad2b 100644 --- a/Habitica/res/values/strings.xml +++ b/Habitica/res/values/strings.xml @@ -585,10 +585,13 @@ Per Int Con + RESET Reset Account - WARNING! This resets many parts of your account. This is highly discouraged, but some people find it useful in the beginning after playing with the site for a short time.\n\nYou will lose all your levels, gold, and experience points. All your tasks (except those from challenges) will be deleted permanently and you will lose all of their historical data. You will lose all your equipment but you will be able to buy it all back, including all limited edition equipment or subscriber Mystery items that you already own (you will need to be in the correct class to re-buy class-specific gear). You will keep your current class and your pets and mounts. You might prefer to use an Orb of Rebirth instead, which is a much safer option and which will preserve your tasks and equipment. + Are you sure you want to reset? + Confirm reset + You will lose all your levels, Gold, and Experience. All your tasks and their historical data will be deleted (Challenge tasks will stay). You will lose all equipment, including limited edition or subscriber equipment, but you will be able to buy it back (you will need to be the correct class to re-buy class-specific gear). You will keep your current class and your Pets and Mounts. To confirm reset, type RESET below. Delete Account - Deleted accounts are permanent and cannot be restored. Gems cannot be refunded. If you still want to delete, type your password below. + This will delete your account forever and it can never be restored! Banked or spent Gems will not be refunded. If you’re absolutely certain, type your password into the text box below. Deleted accounts are permanent and cannot be restored. Gems cannot be refunded. If you still want to delete, type DELETE below. Reset my Account Delete my Account @@ -1225,4 +1228,5 @@ Compact Minimal + Are you sure you want to delete? diff --git a/Habitica/res/values/styles.xml b/Habitica/res/values/styles.xml index 192b8220c..ac1e85465 100644 --- a/Habitica/res/values/styles.xml +++ b/Habitica/res/values/styles.xml @@ -381,6 +381,15 @@ @color/dialog_background + + + + + +