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