diff --git a/Habitica/res/values-de/strings.xml b/Habitica/res/values-de/strings.xml index 48a91771e..36e921f5f 100644 --- a/Habitica/res/values-de/strings.xml +++ b/Habitica/res/values-de/strings.xml @@ -1024,6 +1024,7 @@ Die Quest-Schriftrolle wird an den Quest-Besitzer zurückgegeben. Haustier schlüpfen Einstiegsaufgaben ansehen Ausrüsten + Unausrüsten Du hast bereits alles, was Du für alle %s Haustiere benötigst. Bist Du Dir sicher, dass Du %d %ss kaufen willst\? %d kaufen Du brauchst nur %d %s um alle möglichen Haustiere zu schlüpfen. Bist Du Dir sicher, dass Du %d kaufen willst\? @@ -1103,4 +1104,4 @@ Die Quest-Schriftrolle wird an den Quest-Besitzer zurückgegeben. Zwischen 29. Oktober und 2. November kannst Du wie gewohnt ein Edelstein-Paket kaufen, Deinem Konto wird aber der Aktions-Betrag Edelsteine hinzugefügt. Mehr Edelsteine zum ausgeben, teilen oder aufsparen für spätere Neuerungen! Edelstein-Pakete anzeigen Die Herbstgala ist in vollem Gange. Deshalb haben wir gedacht, dass dies der perfekte Zeitpunkt für den allerersten Edelstein-Sonderverkauf ist! Jetzt bekommst Du mit jedem Einkauf mehr Edelsteine als je zuvor. - \ No newline at end of file + diff --git a/Habitica/res/values-en-rGB/strings.xml b/Habitica/res/values-en-rGB/strings.xml index 178723137..9938c1757 100644 --- a/Habitica/res/values-en-rGB/strings.xml +++ b/Habitica/res/values-en-rGB/strings.xml @@ -1041,6 +1041,7 @@ You still need a %s Egg to hatch this pet View Onboarding Tasks Equip + Unequip You already have everything you need for all %s pets. Are you sure you want to purchase %d %ss\? Purchase %d You only need %d %s to hatch all possible pets. Are you sure you want to purchase %d\? diff --git a/Habitica/res/values-es/strings.xml b/Habitica/res/values-es/strings.xml index 2edaffca8..255955e50 100644 --- a/Habitica/res/values-es/strings.xml +++ b/Habitica/res/values-es/strings.xml @@ -905,6 +905,7 @@ Aún necesitas una poción %s para eclosionar esta mascota Aún necesitas un huevo %s para eclosionar esta mascota Equipar + Desequipar Ya tienes todo lo que necesitas para todas las mascotas %s. ¿Estás seguro de que quieres comprar %d %ss\? Exceso de objetos ¡Has encontrado nuevos objetos! diff --git a/Habitica/res/values-fr/strings.xml b/Habitica/res/values-fr/strings.xml index f1a589b0a..bafa774f7 100644 --- a/Habitica/res/values-fr/strings.xml +++ b/Habitica/res/values-fr/strings.xml @@ -1046,6 +1046,7 @@ Vous avez besoin d\'un œuf de %s pour faire éclore ce familier Voir les tâches d’intégration Équiper + Déséquiper Vous avez déjà tout le nécessaire pour tous les familiers %s. Voulez vous vraiment acheter %d %ss \? Acheter %d Vous avez seulement besoin de %d %@s pour faire éclore tous les familiers possibles. Voulez-vous vraiment acheter %d \? diff --git a/Habitica/res/values-it/strings.xml b/Habitica/res/values-it/strings.xml index 5152ae485..3cdd38845 100644 --- a/Habitica/res/values-it/strings.xml +++ b/Habitica/res/values-it/strings.xml @@ -1073,6 +1073,7 @@ Hai bisogno di un uovo %s per poter schiudere questo animale Visualizza le attività introduttive Equipaggia + Disequip Hai già tutto il necessario per tutti gli animali %@. Sei sicuro di voler acquistare %d %ss\? Acquista %d Hai solo bisogno di %d %s per schiudere tutti i possibili animali. Sei sicuro di voler acquistare %d\? @@ -1098,4 +1099,4 @@ Come funziona %s a %s Solitamente %d Gemme - \ No newline at end of file + diff --git a/Habitica/res/values-ja/strings.xml b/Habitica/res/values-ja/strings.xml index f864dd831..653d76b9a 100644 --- a/Habitica/res/values-ja/strings.xml +++ b/Habitica/res/values-ja/strings.xml @@ -1074,6 +1074,7 @@ ペットをかえす 「初心者入門のタスク」を見る 装備 + 装備解除 すでに%sペットは全て所有しています。本当に%d%ssを購入しますか? %dを買う 今孵せるペットに必要なのは%d%sだけです。本当に%dを購入しますか? diff --git a/Habitica/res/values-nl/strings.xml b/Habitica/res/values-nl/strings.xml index 30be173a4..00df810a7 100644 --- a/Habitica/res/values-nl/strings.xml +++ b/Habitica/res/values-nl/strings.xml @@ -999,6 +999,7 @@ Je hebt je Onboarding Taken afgerond! Bekijk Onboarding Taken Aantrekken + Niet uitrusten Alle Habitica karakters hebben vier statistieken die ieder invloed hebben op aspecten van de gameplay van Habitica. \n \n**Kracht (KRA)** beïnvloedt voltreffers en verhoogt de schade toegebracht aan Quest Eindbazen. Krijgers en Dieven krijgen extra KRA van hun klasse-specifieke uitrusting. @@ -1023,4 +1024,4 @@ \n**Verdien Goud** door taken en kweestes af te ronden, en met sommige klassevaardigheden. Een hogere **Perceptie stat** zorgt voor een hogere goudopbrengst. \n \nAls je een abonnement neemt op Habitica, kun je Goud zelfs gebruiken om een aantal Edelstenen te kopen, gebaseerd op de tijdsduur van je abonnement. - \ No newline at end of file + diff --git a/Habitica/res/values-pt-rBR/strings.xml b/Habitica/res/values-pt-rBR/strings.xml index f337136de..2381f6c12 100644 --- a/Habitica/res/values-pt-rBR/strings.xml +++ b/Habitica/res/values-pt-rBR/strings.xml @@ -1037,6 +1037,7 @@ Você ainda precisa de um Ovo de %s para chocar esse mascote Ver Tarefas Iniciais Equipar + Desequipar Você já tem tudo o que precisa para todos os %s mascotes. Você tem certeza que quer comprar %d %ss\? Comprar %d Você só precisa %d %s para chocar todos os mascotes possíveis. Você tem certeza que quer comprar %d\? @@ -1100,4 +1101,4 @@ Como funciona %s a %s Usualmente %d Gemas - \ No newline at end of file + diff --git a/Habitica/res/values-ru/strings.xml b/Habitica/res/values-ru/strings.xml index 5ade32e4b..5ce4515be 100644 --- a/Habitica/res/values-ru/strings.xml +++ b/Habitica/res/values-ru/strings.xml @@ -914,6 +914,7 @@ Волшебные эликсиры Посмотреть первые задания Надеть + Необорудовать Купить: %d Лишние предметы Вы выполнили свои первые задания! @@ -969,4 +970,4 @@ Вы получили %1$d сообщений от %2$s Удалить напоминание Удалить - \ No newline at end of file + diff --git a/Habitica/res/values-tr/strings.xml b/Habitica/res/values-tr/strings.xml index bafb85adc..a4dc127c7 100644 --- a/Habitica/res/values-tr/strings.xml +++ b/Habitica/res/values-tr/strings.xml @@ -886,6 +886,7 @@ Ayrıl ve Görevi Sil Mücadele Görevi Silinsin mi\? Yanına Al + Boşalt Daha fazlasını istiyorsanız Başarılar\'a göz atın ve toplamaya başlayın! Yeni eşyalar buldun! Eşyalara Git diff --git a/Habitica/res/values-uk/strings.xml b/Habitica/res/values-uk/strings.xml index 211484fcc..cd0cd8a6b 100755 --- a/Habitica/res/values-uk/strings.xml +++ b/Habitica/res/values-uk/strings.xml @@ -963,6 +963,7 @@ Не можу знайти користувача Дивні Одягнути + Неоснащення Ім\'я користувача підтверджено Ім\'я користувача не підтверджено Двуручний diff --git a/Habitica/res/values-vi/strings.xml b/Habitica/res/values-vi/strings.xml index 2265871fc..9ff3fb62c 100755 --- a/Habitica/res/values-vi/strings.xml +++ b/Habitica/res/values-vi/strings.xml @@ -1040,6 +1040,7 @@ Bạn còn cần một %s Trứng để ấp thú cưng này Xem Công việc Nhập môn Trang bị + Giải đáp thắc mắc Bạn đã có mọi thứ bạn cần cho tất cả %s thú cưng. Bạn có chắc muốn mua %d %ss\? Mua %d Bạn chỉ cần %d %s để ấp tất cả thú cưng mà bạn có thể. Bạn có chắc muốn mua %d\? @@ -1103,4 +1104,4 @@ Khuyến mãi này chỉ áp dụng trong thời gian giới hạn của sự kiện. Sự kiện này bắt đầu vào ngày 29 tháng Mười lúc 8:00 AM EDT (12:00 UTC) và sẽ kết thúc vào ngày 2 tháng Mười Một vào lúc 8:00 PM EDT (00:00 UTC). Khuyến mãi chỉ áp dụng khi mua Gem cho bản thân bạn. Từ ngày 29 tháng 10 đến ngày 2 tháng 11, đơn giản là mua bất kỳ gói Gem nào như thường lệ và tài khoản của bạn sẽ cộng được thêm một khoảng Gem. Thêm nhiều Gem để xài, chia sẻ hay để dành cho những lần ra mắt trong tương lai! Chương trình giảm giá Gem trở lại và tiếp diễn đến khi kết thúc Dạ tiệc Mùa Thu! Đây là cơ hội cuối cùng để nhận nhiều Gem hơn bao giờ hết, vì thế hãy mua dự trữ khi chương trình đang diễn ra! - \ No newline at end of file + diff --git a/Habitica/res/values-zh-rTW/strings.xml b/Habitica/res/values-zh-rTW/strings.xml index beebffe82..d1061fb9f 100644 --- a/Habitica/res/values-zh-rTW/strings.xml +++ b/Habitica/res/values-zh-rTW/strings.xml @@ -1040,6 +1040,7 @@ 你還需要一個%s寵物蛋來孵化這個寵物任務 查看新手任務 裝備 + 取消裝備 你已經有得到所有%s寵物所需的一切物品。你確定你要買%d個%s? 買%d個 你只需要%d個%s即可孵化所有可得到的這種寵物。你確定你想要買%d個? @@ -1084,4 +1085,4 @@ 退出挑戰,並刪除挑戰任務 退出挑戰,並保留挑戰任務 在退出挑戰之後,你可以在自己的任務列表裡保留參加挑戰時的任務,也可以刪除它們 - \ No newline at end of file + diff --git a/Habitica/res/values-zh/strings.xml b/Habitica/res/values-zh/strings.xml index dca7f5d29..fd3fe0f5f 100644 --- a/Habitica/res/values-zh/strings.xml +++ b/Habitica/res/values-zh/strings.xml @@ -1018,6 +1018,7 @@ 你还需要一个%s宠物蛋来孵化这个宠物 查看新手任务 装备 + 取消装备 你已经有得到所有%s宠物所需的一切物品。你确定你要买%d个%s? 你只需要%d个%s即可孵化所有可得到的这种宠物。你确定你想要买%d个? 买%d个 @@ -1101,4 +1102,4 @@ 如何工作 %s到%s 通常%d颗宝石 - \ No newline at end of file + diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml index c70456b6e..679c57eb7 100644 --- a/Habitica/res/values/strings.xml +++ b/Habitica/res/values/strings.xml @@ -1061,6 +1061,7 @@ Purchase %d You already have everything you need for all %s pets. Are you sure you want to purchase %d %ss? Equip + Unequip View Onboarding Tasks You still need a %s Egg to hatch this pet You still need a %s Potion to hatch this pet diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/MountDetailRecyclerAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/MountDetailRecyclerAdapter.kt index 61824d3c0..9fee5c580 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/MountDetailRecyclerAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/MountDetailRecyclerAdapter.kt @@ -4,6 +4,7 @@ import android.view.ViewGroup import com.habitrpg.android.habitica.models.inventory.Mount import com.habitrpg.android.habitica.models.inventory.StableSection import com.habitrpg.android.habitica.models.user.OwnedMount +import com.habitrpg.android.habitica.models.user.User import com.habitrpg.android.habitica.ui.viewHolders.MountViewHolder import com.habitrpg.android.habitica.ui.viewHolders.SectionViewHolder import io.reactivex.rxjava3.core.BackpressureStrategy @@ -14,6 +15,7 @@ class MountDetailRecyclerAdapter : androidx.recyclerview.widget.RecyclerView.Ada private var ownedMounts: Map? = null private val equipEvents = PublishSubject.create() + private var user: User? = null private var itemList: List = ArrayList() @@ -35,7 +37,7 @@ class MountDetailRecyclerAdapter : androidx.recyclerview.widget.RecyclerView.Ada override fun onBindViewHolder(holder: androidx.recyclerview.widget.RecyclerView.ViewHolder, position: Int) { when (val obj = this.itemList[position]) { is StableSection -> (holder as? SectionViewHolder)?.bind(obj) - is Mount -> (holder as? MountViewHolder)?.bind(obj, ownedMounts?.get(obj.key ?: "")?.owned == true) + is Mount -> (holder as? MountViewHolder)?.bind(obj, ownedMounts?.get(obj.key ?: "")?.owned == true, user) } } @@ -47,4 +49,9 @@ class MountDetailRecyclerAdapter : androidx.recyclerview.widget.RecyclerView.Ada this.ownedMounts = ownedMounts notifyDataSetChanged() } + + fun setUser(user: User) { + this.user = user + notifyDataSetChanged() + } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/PetDetailRecyclerAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/PetDetailRecyclerAdapter.kt index b7d76edba..919d13df7 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/PetDetailRecyclerAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/PetDetailRecyclerAdapter.kt @@ -5,6 +5,7 @@ import com.habitrpg.android.habitica.models.inventory.* import com.habitrpg.android.habitica.models.user.OwnedItem import com.habitrpg.android.habitica.models.user.OwnedMount import com.habitrpg.android.habitica.models.user.OwnedPet +import com.habitrpg.android.habitica.models.user.User import com.habitrpg.android.habitica.ui.viewHolders.PetViewHolder import com.habitrpg.android.habitica.ui.viewHolders.SectionViewHolder import io.reactivex.rxjava3.core.BackpressureStrategy @@ -17,6 +18,7 @@ class PetDetailRecyclerAdapter : androidx.recyclerview.widget.RecyclerView.Adapt private var ownedPets: Map? = null private var ownedMounts: Map? = null private var ownedItems: Map? = null + private var user: User? = null private val equipEvents = PublishSubject.create() private var ownsSaddles: Boolean = false @@ -27,6 +29,11 @@ class PetDetailRecyclerAdapter : androidx.recyclerview.widget.RecyclerView.Adapt this.notifyDataSetChanged() } + fun setUser(user: User) { + this.user = user + notifyDataSetChanged() + } + fun getEquipFlowable(): Flowable { return equipEvents.toFlowable(BackpressureStrategy.DROP) } @@ -69,7 +76,8 @@ class PetDetailRecyclerAdapter : androidx.recyclerview.widget.RecyclerView.Adapt ownsSaddles, ownedItems?.get(obj.animal + "-eggs") != null, ownedItems?.get(obj.color + "-hatchingPotions") != null, - ownedMounts?.containsKey(obj.key) == true + ownedMounts?.containsKey(obj.key) == true, + user ) } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/StableRecyclerAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/StableRecyclerAdapter.kt index 35fe8f3b2..22d92b9e2 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/StableRecyclerAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/StableRecyclerAdapter.kt @@ -13,8 +13,8 @@ import com.habitrpg.android.habitica.extensions.inflate import com.habitrpg.android.habitica.helpers.MainNavigationController import com.habitrpg.android.habitica.models.inventory.* import com.habitrpg.android.habitica.models.user.OwnedItem +import com.habitrpg.android.habitica.models.user.User import com.habitrpg.android.habitica.models.user.OwnedMount -import com.habitrpg.android.habitica.models.user.OwnedPet import com.habitrpg.android.habitica.ui.fragments.inventory.stable.StableFragmentDirections import com.habitrpg.android.habitica.ui.helpers.loadImage import com.habitrpg.android.habitica.ui.viewHolders.MountViewHolder @@ -32,17 +32,23 @@ class StableRecyclerAdapter : RecyclerView.Adapter() { private var eggs: Map = mapOf() var animalIngredientsRetriever: ((Animal, ((Pair) -> Unit)) -> Unit)? = null var itemType: String? = null + private var user: User? = null private val equipEvents = PublishSubject.create() - private var existingMounts: RealmResults? = null private var ownedMounts: Map? = null private var ownedItems: Map? = null private var ownsSaddles: Boolean = false + private var itemList: List = ArrayList() fun getEquipFlowable(): Flowable { return equipEvents.toFlowable(BackpressureStrategy.DROP) } + fun setUser(user: User){ + this.user = user + notifyDataSetChanged() + } + private fun canRaiseToMount(pet: Pet): Boolean { for (mount in existingMounts ?: emptyList()) { if (mount.key == pet.key) { @@ -55,6 +61,7 @@ class StableRecyclerAdapter : RecyclerView.Adapter() { private fun eggCount(pet: Pet): Int { return ownedItems?.get(pet.animal + "-eggs")?.numberOwned ?: 0 } + private fun potionCount(pet: Pet): Int { return ownedItems?.get(pet.color + "-hatchingPotions")?.numberOwned ?: 0 } @@ -75,11 +82,9 @@ class StableRecyclerAdapter : RecyclerView.Adapter() { notifyDataSetChanged() } - private var itemList: List = ArrayList() - fun setItemList(itemList: List) { this.itemList = itemList - this.notifyDataSetChanged() + notifyDataSetChanged() } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder = @@ -107,17 +112,20 @@ class StableRecyclerAdapter : RecyclerView.Adapter() { val isIndividualAnimal = item.type == "special" || item.type == "wacky" if (isIndividualAnimal) { if (item is Pet) { - (holder as? PetViewHolder)?.bind(item, - item.numberOwned, - eggCount(item), - potionCount(item), - canRaiseToMount(item), - ownsSaddles, - ownedItems?.get(item.animal + "-eggs") != null, - ownedItems?.get(item.color + "-hatchingPotions") != null, - ownedMounts?.containsKey(item.key) == true) + (holder as? PetViewHolder)?.bind( + item = item, + trained = item.numberOwned, + eggCount = eggCount(item), + potionCount = potionCount(item), + canRaiseToMount = canRaiseToMount(item), + ownsSaddles = ownsSaddles, + hasUnlockedEgg = ownedItems?.get(item.animal + "-eggs") != null, + hasUnlockedPotion = ownedItems?.get(item.color + "-hatchingPotions") != null, + hasMount = ownedMounts?.containsKey(item.key) == true, + user = user + ) } else if (item is Mount) { - (holder as? MountViewHolder)?.bind(item, item.numberOwned > 0) + (holder as? MountViewHolder)?.bind(item, item.numberOwned > 0, user) } return } @@ -153,6 +161,7 @@ class StableRecyclerAdapter : RecyclerView.Adapter() { } override fun getItemCount(): Int = itemList.size + fun setEggs(eggs: Map) { this.eggs = eggs notifyDataSetChanged() diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/MountDetailRecyclerFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/MountDetailRecyclerFragment.kt index 002ea37a1..702be0320 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/MountDetailRecyclerFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/MountDetailRecyclerFragment.kt @@ -84,7 +84,9 @@ class MountDetailRecyclerFragment : BaseMainFragment inventoryRepository.equip(user, "mount", key) } - ?.subscribe({ }, RxErrorHandler.handleEmptyError())?.let { compositeSubscription.add(it) } + ?.subscribe({ + user?.let { updatedUser -> adapter?.setUser(updatedUser) } + }, RxErrorHandler.handleEmptyError())?.let { compositeSubscription.add(it) } } if (savedInstanceState != null) { @@ -124,6 +126,7 @@ class MountDetailRecyclerFragment : BaseMainFragment adapter?.setUser(updatedUser) } }, { unsortedAnimals, ownedAnimals -> val items = mutableListOf() var lastMount: Mount? = null diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.kt index ca7b0abd3..27f038c9a 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.kt @@ -22,7 +22,6 @@ import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment import com.habitrpg.android.habitica.ui.fragments.inventory.items.ItemRecyclerFragment import com.habitrpg.android.habitica.ui.helpers.MarginDecoration import com.habitrpg.android.habitica.ui.helpers.SafeDefaultItemAnimator -import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.core.Maybe import io.reactivex.rxjava3.kotlin.Flowables import org.greenrobot.eventbus.Subscribe @@ -104,7 +103,9 @@ class PetDetailRecyclerFragment : BaseMainFragment( compositeSubscription.add(adapter.getEquipFlowable() .flatMap { key -> inventoryRepository.equip(user, "pet", key) } - .subscribe({ }, RxErrorHandler.handleEmptyError())) + .subscribe({ + user?.let { updatedUser -> adapter.setUser(updatedUser) } + }, RxErrorHandler.handleEmptyError())) view.post { setGridSpanCount(view.width) } @@ -151,6 +152,7 @@ class PetDetailRecyclerFragment : BaseMainFragment( return@map petMap }.doOnNext { adapter.setOwnedPets(it) + user?.let { updatedUser -> adapter.setUser(updatedUser) } }).map { val items = mutableListOf() var lastPet: Pet? = null diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.kt index f4b907b4b..030c365a6 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.kt @@ -88,6 +88,7 @@ class StableRecyclerFragment : BaseFragment() { adapter = binding?.recyclerView?.adapter as? StableRecyclerAdapter if (adapter == null) { adapter = StableRecyclerAdapter() + user?.let { adapter?.setUser(it) } adapter?.animalIngredientsRetriever = { animal, callback -> Maybe.zip( inventoryRepository.getItems(Egg::class.java, arrayOf(animal.animal)).firstElement(), diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/MountViewHolder.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/MountViewHolder.kt index 9ceeae1c7..3471f9ba5 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/MountViewHolder.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/MountViewHolder.kt @@ -9,6 +9,7 @@ import com.habitrpg.android.habitica.databinding.MountOverviewItemBinding import com.habitrpg.android.habitica.extensions.inflate import com.habitrpg.android.habitica.helpers.RxErrorHandler import com.habitrpg.android.habitica.models.inventory.Mount +import com.habitrpg.android.habitica.models.user.User import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils import com.habitrpg.android.habitica.ui.menu.BottomSheetMenu import com.habitrpg.android.habitica.ui.menu.BottomSheetMenuItem @@ -20,6 +21,7 @@ class MountViewHolder(parent: ViewGroup, private val equipEvents: PublishSubject private var binding: MountOverviewItemBinding = MountOverviewItemBinding.bind(itemView) private var owned: Boolean = false var animal: Mount? = null + private var user: User? = null var resources: Resources = itemView.resources @@ -27,9 +29,10 @@ class MountViewHolder(parent: ViewGroup, private val equipEvents: PublishSubject itemView.setOnClickListener(this) } - fun bind(item: Mount, owned: Boolean) { + fun bind(item: Mount, owned: Boolean, user: User?) { animal = item this.owned = owned + this.user = user binding.titleTextView.visibility = View.GONE binding.ownedTextView.visibility = View.GONE val imageName = "stable_Mount_Icon_" + item.animal + "-" + item.color @@ -54,10 +57,13 @@ class MountViewHolder(parent: ViewGroup, private val equipEvents: PublishSubject } val menu = BottomSheetMenu(itemView.context) menu.setTitle(animal?.text) - menu.addMenuItem(BottomSheetMenuItem(resources.getString(R.string.equip))) + + val hasCurrentMount = user?.currentMount.equals(animal?.key) + val labelId = if (hasCurrentMount) R.string.unequip else R.string.equip + menu.addMenuItem(BottomSheetMenuItem(resources.getString(labelId))) menu.setSelectionRunnable { animal?.let { equipEvents.onNext(it.key ?: "") } } menu.show() } -} \ No newline at end of file +} diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/PetViewHolder.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/PetViewHolder.kt index e597c9134..8aaa9e763 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/PetViewHolder.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/PetViewHolder.kt @@ -10,6 +10,7 @@ import com.habitrpg.android.habitica.events.commands.FeedCommand import com.habitrpg.android.habitica.extensions.inflate import com.habitrpg.android.habitica.helpers.RxErrorHandler import com.habitrpg.android.habitica.models.inventory.* +import com.habitrpg.android.habitica.models.user.User import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils import com.habitrpg.android.habitica.ui.menu.BottomSheetMenu import com.habitrpg.android.habitica.ui.menu.BottomSheetMenuItem @@ -27,6 +28,7 @@ class PetViewHolder(parent: ViewGroup, private val equipEvents: PublishSubject 0 binding.imageView.alpha = 1.0f @@ -60,6 +65,7 @@ class PetViewHolder(parent: ViewGroup, private val equipEvents: PublishSubject