diff --git a/Habitica/res/layout/dialog_purchase_content_gear.xml b/Habitica/res/layout/dialog_purchase_content_gear.xml
index eb5920031..466e0748d 100644
--- a/Habitica/res/layout/dialog_purchase_content_gear.xml
+++ b/Habitica/res/layout/dialog_purchase_content_gear.xml
@@ -100,4 +100,13 @@
android:textColor="@color/green_50"/>
+
\ No newline at end of file
diff --git a/Habitica/res/layout/dialog_purchase_content_item.xml b/Habitica/res/layout/dialog_purchase_content_item.xml
index 0235fb975..c61f9b15c 100644
--- a/Habitica/res/layout/dialog_purchase_content_item.xml
+++ b/Habitica/res/layout/dialog_purchase_content_item.xml
@@ -31,4 +31,13 @@
android:textColor="@color/black_50_alpha"
tools:text="These are the notes"
android:gravity="center"/>
+
\ No newline at end of file
diff --git a/Habitica/res/layout/dialog_purchase_content_quest.xml b/Habitica/res/layout/dialog_purchase_content_quest.xml
index 540e03a6f..be54a9fd5 100644
--- a/Habitica/res/layout/dialog_purchase_content_quest.xml
+++ b/Habitica/res/layout/dialog_purchase_content_quest.xml
@@ -179,4 +179,13 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"/>
+
\ No newline at end of file
diff --git a/Habitica/res/layout/dialog_purchase_customization.xml b/Habitica/res/layout/dialog_purchase_customization.xml
index 4389a1d9a..b83be398b 100644
--- a/Habitica/res/layout/dialog_purchase_customization.xml
+++ b/Habitica/res/layout/dialog_purchase_customization.xml
@@ -30,5 +30,14 @@
android:id="@+id/gem_icon"
android:layout_gravity="center"/>
+
\ No newline at end of file
diff --git a/Habitica/res/layout/dialog_purchase_gems.xml b/Habitica/res/layout/dialog_purchase_gems.xml
index 8bc9e122e..abb83f39d 100644
--- a/Habitica/res/layout/dialog_purchase_gems.xml
+++ b/Habitica/res/layout/dialog_purchase_gems.xml
@@ -42,4 +42,13 @@
app:defaultValue="1"
app:minValue="1"
/>
+
\ No newline at end of file
diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml
index 027203d58..b7c4cbc85 100644
--- a/Habitica/res/values/strings.xml
+++ b/Habitica/res/values/strings.xml
@@ -1005,4 +1005,5 @@
Accent
Buy All
Read More
+ You are unable to buy that amount.
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 5be4dfaf3..39708bf6a 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
@@ -58,6 +58,7 @@ class PurchaseDialog(context: Context, component: UserComponent?, val item: Shop
private val buyButton: View
private val priceLabel: CurrencyView
private val buyLabel: TextView
+ private var amountErrorLabel: TextView? = null
private val pinButton: Button by bindView(customHeader, R.id.pin_button)
private var purchaseQuantity = 1
@@ -112,6 +113,9 @@ class PurchaseDialog(context: Context, component: UserComponent?, val item: Shop
}
else -> contentView = PurchaseDialogBaseContent(context)
}
+
+ amountErrorLabel = contentView.findViewById(R.id.amount_error_label)
+
contentView.setItem(shopItem)
setAdditionalContentView(contentView)
}
@@ -119,7 +123,7 @@ class PurchaseDialog(context: Context, component: UserComponent?, val item: Shop
fun updatePurchaseTotal() {
priceLabel.value = shopItem.value.toDouble() * purchaseQuantity
- if (shopItem.canAfford(user, purchaseQuantity) && !shopItem.locked) {
+ if (shopItem.canAfford(user, purchaseQuantity) && !shopItem.locked && purchaseQuantity >= 1) {
buyButton.background = context.getDrawable(R.drawable.button_background_primary)
priceLabel.setTextColor(ContextCompat.getColor(context, R.color.white))
buyLabel.setTextColor(ContextCompat.getColor(context, R.color.white))
@@ -128,6 +132,12 @@ class PurchaseDialog(context: Context, component: UserComponent?, val item: Shop
priceLabel.setTextColor(ContextCompat.getColor(context, R.color.gray_100))
buyLabel.setTextColor(ContextCompat.getColor(context, R.color.gray_100))
}
+
+ if (purchaseQuantity < 1 || (shopItem.limitedNumberLeft != null && (shopItem.limitedNumberLeft ?: 0) < purchaseQuantity)) {
+ amountErrorLabel?.visibility = View.VISIBLE
+ } else {
+ amountErrorLabel?.visibility = View.GONE
+ }
}
private fun checkGearClass() {
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/StepperValueFormView.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/StepperValueFormView.kt
index 80a78eae0..b973f7bc6 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/StepperValueFormView.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/tasks/form/StepperValueFormView.kt
@@ -28,16 +28,16 @@ class StepperValueFormView @JvmOverloads constructor(
private var editTextIsFocused = false
var value = 0.0
- set(value) {
- var newValue = if (value >= minValue) value else minValue
+ set(new) {
+ var newValue = if (new >= minValue) new else minValue
maxValue?.let {
- if (newValue > it) {
+ if (newValue > it && it > 0) {
newValue = it
}
}
val oldValue = field
field = newValue
- if (oldValue != newValue) {
+ if (oldValue != new) {
valueString = decimalFormat.format(newValue)
}
downButton.isEnabled = field > minValue