diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml
index b36df82ba..294599ff7 100644
--- a/Habitica/res/values/strings.xml
+++ b/Habitica/res/values/strings.xml
@@ -890,4 +890,5 @@
**Only** report a post that violates the [Community Guidelines](https://habitica.com/static/community-guidelines) and/or [Terms of Service](https://habitica.com/static/terms). Inappropriately reporting a post may give you an infraction.
Report %s for violation:
Reason for report (optional)
+ Mystery Sets
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/shops/ShopFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/shops/ShopFragment.kt
index 88e8b3a64..5ad3d2b91 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/shops/ShopFragment.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/shops/ShopFragment.kt
@@ -43,7 +43,7 @@ class ShopFragment : BaseFragment() {
@Inject
lateinit var configManager: RemoteConfigManager
- private var layoutManager: androidx.recyclerview.widget.GridLayoutManager? = null
+ private var layoutManager: GridLayoutManager? = null
private var gearCategories: MutableList? = null
@@ -71,8 +71,8 @@ class ShopFragment : BaseFragment() {
}
if (recyclerView.layoutManager == null) {
- layoutManager = androidx.recyclerview.widget.GridLayoutManager(context, 2)
- layoutManager?.spanSizeLookup = object : androidx.recyclerview.widget.GridLayoutManager.SpanSizeLookup() {
+ layoutManager = GridLayoutManager(context, 2)
+ layoutManager?.spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() {
override fun getSpanSize(position: Int): Int {
return if (adapter?.getItemViewType(position) ?: 0 < 3) {
layoutManager?.spanCount ?: 1
@@ -140,7 +140,11 @@ class ShopFragment : BaseFragment() {
shop1.categories.add(specialCategory)
}
}
- shop1
+ if (shop1.identifier == Shop.TIME_TRAVELERS_SHOP) {
+ formatTimeTravelersShop(shop1)
+ } else {
+ shop1
+ }
}
.subscribe(Consumer {
this.shop = it
@@ -158,6 +162,29 @@ class ShopFragment : BaseFragment() {
.subscribe(Consumer { adapter?.setPinnedItemKeys(it) }, RxErrorHandler.handleEmptyError()))
}
+ private fun formatTimeTravelersShop(shop: Shop): Shop {
+ val newCategories = mutableListOf()
+ for (category in shop.categories) {
+ if (category.identifier == "pets" || category.identifier == "mounts") {
+ newCategories.add(category)
+ } else {
+ val newCategory = newCategories.find { it.identifier == "mystery_sets" } ?: ShopCategory()
+ if (newCategory.identifier.isEmpty()) {
+ newCategory.identifier = "mystery_sets"
+ newCategory.text = getString(R.string.mystery_sets)
+ newCategories.add(newCategory)
+ }
+ val item = category.items.firstOrNull() ?: continue
+ item.key = category.identifier
+ item.text = category.text
+ item.imageName = "shop_set_mystery_${item.key}"
+ newCategory.items.add(item)
+ }
+ }
+ shop.categories = newCategories
+ return shop
+ }
+
private fun loadMarketGear() {
compositeSubscription.add(inventoryRepository.retrieveMarketGear()
.zipWith(inventoryRepository.getOwnedEquipment().map { equipment -> equipment.map { it.key } }, BiFunction, Shop> { shop, equipment ->
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 051c81659..520b39df9 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
@@ -111,7 +111,7 @@ class PurchaseDialog(context: Context, component: AppComponent?, val item: ShopI
return
}
- if (shopItem.habitClass != "special" && user.stats?.habitClass != shopItem.habitClass) {
+ if (shopItem.habitClass != null && shopItem.habitClass != "special" && user.stats?.habitClass != shopItem.habitClass) {
limitedTextView.text = context.getString(R.string.class_equipment_shop_dialog)
limitedTextView.visibility = View.VISIBLE
limitedTextView.setBackgroundColor(ContextCompat.getColor(context, R.color.gray_100))
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogGearContent.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogGearContent.kt
index efdd51ee9..903244167 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogGearContent.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogGearContent.kt
@@ -34,19 +34,24 @@ internal class PurchaseDialogGearContent : PurchaseDialogContent {
}
fun setEquipment(equipment: Equipment) {
- if (equipment.isManaged) {
+ if (equipment.isValid) {
configureFieldsForValue(strLabel, strValueTextView, equipment.str)
configureFieldsForValue(perLabel, perValueTextView, equipment.per)
configureFieldsForValue(conLabel, conValueTextView, equipment.con)
configureFieldsForValue(intLabel, intValueTextView, equipment._int)
+ } else {
+ configureFieldsForValue(strLabel, strValueTextView, 0)
+ configureFieldsForValue(perLabel, perValueTextView, 0)
+ configureFieldsForValue(conLabel, conValueTextView, 0)
+ configureFieldsForValue(intLabel, intValueTextView, 0)
}
}
private fun configureFieldsForValue(labelView: TextView?, valueTextView: TextView?, value: Int) {
- valueTextView!!.text = "+" + value
+ valueTextView?.text = "+$value"
if (value == 0) {
- labelView!!.setTextColor(ContextCompat.getColor(context, R.color.gray_400))
- valueTextView.setTextColor(ContextCompat.getColor(context, R.color.gray_400))
+ labelView?.setTextColor(ContextCompat.getColor(context, R.color.gray_400))
+ valueTextView?.setTextColor(ContextCompat.getColor(context, R.color.gray_400))
}
}
}