diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml
index b47d8830a..d4fb709c4 100644
--- a/Habitica/res/values/strings.xml
+++ b/Habitica/res/values/strings.xml
@@ -1523,6 +1523,7 @@
You don’t own any of these items
Head over to the Customization Shop to browse the many ways you can customize your avatar!
Switches in %s
+ Next switch in %s
Refresh for new items
Monthly Backgrounds
Winter
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/shops/ShopCategory.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/shops/ShopCategory.kt
index d3f700888..41457532a 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/shops/ShopCategory.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/shops/ShopCategory.kt
@@ -1,6 +1,7 @@
package com.habitrpg.android.habitica.models.shops
import com.google.gson.annotations.SerializedName
+import io.realm.RealmList
import java.util.Date
class ShopCategory {
@@ -14,5 +15,17 @@ class ShopCategory {
@SerializedName("end")
var endDate: Date? = null
+ var itemEndDates: MutableList = ArrayList()
+
var items: MutableList = ArrayList()
+
+ val endDates: Set
+ get() {
+ val dates = itemEndDates.distinct().toMutableSet()
+ if (items.isNotEmpty()) {
+ dates.addAll(items.mapNotNull { it.endDate })
+ }
+ endDate?.let { dates.add(it) }
+ return dates
+ }
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/ShopRecyclerAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/ShopRecyclerAdapter.kt
index cb0f81843..24d05eeaf 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/ShopRecyclerAdapter.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/ShopRecyclerAdapter.kt
@@ -146,7 +146,7 @@ class ShopRecyclerAdapter : androidx.recyclerview.widget.RecyclerView.Adapter {
val sectionHolder = holder as? SectionViewHolder ?: return
sectionHolder.bind(obj.text)
- sectionHolder.bind(obj.endDate)
+ sectionHolder.bind(obj.endDates)
(sectionHolder.headerContainer?.layoutParams as? LinearLayout.LayoutParams)?.topMargin = if (position > 1) {
40.dpToPx(context)
} else {
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/SectionViewHolder.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/SectionViewHolder.kt
index 9b4a278fc..5955102be 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/SectionViewHolder.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/SectionViewHolder.kt
@@ -96,13 +96,16 @@ class SectionViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
)
}
- fun bind(endDate: Date?) {
- if (endDate != null) {
+ fun bind(endDates: Set) {
+ if (endDates.isNotEmpty()) {
+ val nextDate = endDates.minOrNull() ?: return
switchesInLabel?.visibility = View.VISIBLE
- if (endDate.time < Date().time) {
+ if (nextDate.time < Date().time) {
switchesInLabel?.text = context.getString(R.string.tap_to_reload)
+ } else if (endDates.size > 1) {
+ switchesInLabel?.text = context.getString(R.string.next_switch_in_x, nextDate.getImpreciseRemainingString(context.resources))
} else {
- switchesInLabel?.text = context.getString(R.string.switches_in_x, endDate.getImpreciseRemainingString(context.resources))
+ switchesInLabel?.text = context.getString(R.string.switches_in_x, nextDate.getImpreciseRemainingString(context.resources))
}
} else {
switchesInLabel?.visibility = View.GONE