diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml
index d639cfde4..a16a3a34b 100644
--- a/Habitica/res/values/strings.xml
+++ b/Habitica/res/values/strings.xml
@@ -762,4 +762,6 @@
Want to join a party?
Open website to create party
ID copied to clipboard
+ You have bought all the Gems you can this month. More become available within the first three days of each month. Thanks for subscribing!
+ Monthly Gem Cap Reached
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/insufficientCurrency/InsufficientGoldDialog.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/insufficientCurrency/InsufficientGoldDialog.java
index 6f4f5c8fd..380d9f136 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/insufficientCurrency/InsufficientGoldDialog.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/insufficientCurrency/InsufficientGoldDialog.java
@@ -11,5 +11,6 @@ public class InsufficientGoldDialog extends InsufficientCurrencyDialog {
imageView.setImageBitmap(HabiticaIconsHelper.imageOfGoldReward());
textView.setText(context.getString(R.string.insufficientGold));
+ setTitle(R.string.insufficientSubscriberGemsTitle);
}
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/insufficientCurrency/InsufficientSubscriberGemsDialog.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/insufficientCurrency/InsufficientSubscriberGemsDialog.kt
new file mode 100644
index 000000000..cdc884817
--- /dev/null
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/insufficientCurrency/InsufficientSubscriberGemsDialog.kt
@@ -0,0 +1,14 @@
+package com.habitrpg.android.habitica.ui.views.insufficientCurrency
+
+import android.content.Context
+
+import com.habitrpg.android.habitica.R
+import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
+
+class InsufficientSubscriberGemsDialog(context: Context) : InsufficientCurrencyDialog(context) {
+ init {
+
+ imageView.setImageBitmap(HabiticaIconsHelper.imageOfGem_36())
+ textView.text = context.getString(R.string.insufficientSubscriberGems)
+ }
+}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialog.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialog.kt
index 62262ab19..538581766 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialog.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialog.kt
@@ -32,6 +32,7 @@ import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar
import com.habitrpg.android.habitica.ui.views.insufficientCurrency.InsufficientGemsDialog
import com.habitrpg.android.habitica.ui.views.insufficientCurrency.InsufficientGoldDialog
import com.habitrpg.android.habitica.ui.views.insufficientCurrency.InsufficientHourglassesDialog
+import com.habitrpg.android.habitica.ui.views.insufficientCurrency.InsufficientSubscriberGemsDialog
import org.greenrobot.eventbus.EventBus
import rx.Observable
import rx.functions.Action1
@@ -164,7 +165,11 @@ class PurchaseDialog(context: Context, component: AppComponent, val item: ShopIt
limitedTextView.text = context.getString(R.string.gems_left_nomax, gemsLeft)
}
limitedTextView.visibility = View.VISIBLE
- limitedTextView.setBackgroundColor(ContextCompat.getColor(context, R.color.green_10))
+ if (gemsLeft == 0) {
+ limitedTextView.setBackgroundColor(ContextCompat.getColor(context, R.color.orange_10))
+ } else {
+ limitedTextView.setBackgroundColor(ContextCompat.getColor(context, R.color.green_10))
+ }
}
if (!shopItem.canAfford(user)) {
@@ -208,7 +213,8 @@ class PurchaseDialog(context: Context, component: AppComponent, val item: ShopIt
if (shopItem.locked) {
return
}
- if (shopItem.canAfford(user)) {
+ val gemsLeft = if (shopItem.limitedNumberLeft != null) shopItem.limitedNumberLeft else 0
+ if ((gemsLeft == 0 && shopItem.purchaseType == "gems") || shopItem.canAfford(user)) {
val observable: Observable
if (shopIdentifier != null && shopIdentifier == Shop.TIME_TRAVELERS_SHOP || "mystery_set" == shopItem.purchaseType) {
observable = if (shopItem.purchaseType == "gear") {
@@ -261,6 +267,7 @@ class PurchaseDialog(context: Context, component: AppComponent, val item: ShopIt
}
} else {
when {
+ "gems" == shopItem.purchaseType -> InsufficientSubscriberGemsDialog(context)
"gold" == shopItem.currency -> InsufficientGoldDialog(context)
"gems" == shopItem.currency -> InsufficientGemsDialog(context)
"hourglasses" == shopItem.currency -> InsufficientHourglassesDialog(context)