Skip to content

Commit

Permalink
show confirmation when selling items
Browse files Browse the repository at this point in the history
  • Loading branch information
phillipthelen committed Jan 6, 2025
1 parent 75bad46 commit 89ab3fc
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 10 deletions.
1 change: 1 addition & 0 deletions Habitica/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -268,6 +268,7 @@
<string name="armoireFood_new">You rummage in the Armoire and find food. What\'s that doing in here?</string>
<string name="armoireExp">You wrestle with the Armoire and gain Experience. Take that!</string>
<string name="sell">Sell (%d Gold)</string>
<string name="sell_confirmation_title">Are you sure you want to sell this %s?</string>
<string name="sell_no_price">Sell</string>
<string name="hatch_with_potion">Hatch with potion</string>
<string name="hatch_egg">Hatch with egg</string>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -497,7 +497,12 @@ class RealmInventoryLocalRepository(realm: Realm) :
}
val stats = updatedUser.stats
if (stats != null) {
user.stats = stats
user.stats?.apply {
hp = stats.hp
mp = stats.mp
exp = stats.exp
gp = stats.gp
}
}
}
return user
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ class ItemRecyclerAdapter(val context: Context) :
notifyDataSetChanged()
}

var onSellItem: ((OwnedItem) -> Unit)? = null
var onSellItem: ((Item, OwnedItem) -> Unit)? = null
var onQuestInvitation: ((QuestContent) -> Unit)? = null
var onOpenMysteryItem: ((Item) -> Unit)? = null
var onStartHatching: ((Item) -> Unit)? = null
Expand Down Expand Up @@ -276,6 +276,7 @@ class ItemRecyclerAdapter(val context: Context) :
if (!(selectedItem is QuestContent || selectedItem is SpecialItem || ownedItem?.itemType == "special") && index == 0) {
ownedItem?.let { selectedOwnedItem ->
onSellItem?.invoke(
selectedItem,
selectedOwnedItem,
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import com.habitrpg.android.habitica.data.InventoryRepository
import com.habitrpg.android.habitica.data.SocialRepository
import com.habitrpg.android.habitica.data.UserRepository
import com.habitrpg.android.habitica.databinding.FragmentItemsDialogBinding
import com.habitrpg.android.habitica.extensions.addCancelButton
import com.habitrpg.android.habitica.extensions.addCloseButton
import com.habitrpg.android.habitica.helpers.Analytics
import com.habitrpg.android.habitica.helpers.EventCategory
Expand All @@ -24,13 +25,15 @@ import com.habitrpg.android.habitica.models.inventory.Item
import com.habitrpg.android.habitica.models.inventory.Pet
import com.habitrpg.android.habitica.models.inventory.QuestContent
import com.habitrpg.android.habitica.models.inventory.SpecialItem
import com.habitrpg.android.habitica.models.user.OwnedItem
import com.habitrpg.android.habitica.models.user.OwnedPet
import com.habitrpg.android.habitica.models.user.User
import com.habitrpg.android.habitica.ui.activities.MainActivity
import com.habitrpg.android.habitica.ui.adapter.inventory.ItemRecyclerAdapter
import com.habitrpg.android.habitica.ui.fragments.BaseDialogFragment
import com.habitrpg.android.habitica.ui.helpers.SafeDefaultItemAnimator
import com.habitrpg.android.habitica.ui.viewmodels.MainUserViewModel
import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog
import com.habitrpg.android.habitica.ui.views.dialogs.OpenedMysteryitemDialog
import com.habitrpg.common.habitica.extensions.loadImage
import com.habitrpg.common.habitica.extensions.observeOnce
Expand Down Expand Up @@ -214,10 +217,8 @@ class ItemDialogFragment : BaseDialogFragment<FragmentItemsDialogBinding>() {
adapter?.feedingPet = this.feedingPet
}
binding?.recyclerView?.adapter = adapter
adapter?.onSellItem = {
lifecycleScope.launchCatching {
inventoryRepository.sellItem(it)
}
adapter?.onSellItem = { item, ownedItem ->
showSellItemConfirmation(item, ownedItem)
}
adapter?.onQuestInvitation = {
lifecycleScope.launchCatching {
Expand Down Expand Up @@ -368,6 +369,18 @@ class ItemDialogFragment : BaseDialogFragment<FragmentItemsDialogBinding>() {
MainNavigationController.navigate(R.id.marketFragment)
}

private fun showSellItemConfirmation(item: Item, ownedItem: OwnedItem) {
val dialog = HabiticaAlertDialog(requireContext())
dialog.setTitle(getString(R.string.sell_confirmation_title, item.text))
dialog.addButton(getString(R.string.sell, item.value), isPrimary = true, isDestructive = true) { _, _ ->
lifecycleScope.launchCatching {
inventoryRepository.sellItem(ownedItem)
}
}
dialog.addCancelButton()
dialog.show()
}

companion object {
private const val ITEM_TYPE_KEY = "CLASS_TYPE_KEY"
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import com.habitrpg.android.habitica.data.InventoryRepository
import com.habitrpg.android.habitica.data.SocialRepository
import com.habitrpg.android.habitica.data.UserRepository
import com.habitrpg.android.habitica.databinding.FragmentItemsBinding
import com.habitrpg.android.habitica.extensions.addCancelButton
import com.habitrpg.android.habitica.extensions.addCloseButton
import com.habitrpg.android.habitica.helpers.Analytics
import com.habitrpg.android.habitica.helpers.EventCategory
Expand Down Expand Up @@ -171,10 +172,8 @@ class ItemRecyclerFragment :
binding?.recyclerView?.adapter = adapter
}
adapter?.onUseSpecialItem = { onSpecialItemSelected(it) }
adapter?.onSellItem = {
lifecycleScope.launchCatching {
inventoryRepository.sellItem(it)
}
adapter?.onSellItem = { item, ownedItem ->
showSellItemConfirmation(item, ownedItem)
}
adapter?.onQuestInvitation = {
lifecycleScope.launchCatching {
Expand Down Expand Up @@ -395,6 +394,18 @@ class ItemRecyclerFragment :
loadItems()
}

private fun showSellItemConfirmation(item: Item, ownedItem: OwnedItem) {
val dialog = HabiticaAlertDialog(requireContext())
dialog.setTitle(getString(R.string.sell_confirmation_title, item.text))
dialog.addButton(getString(R.string.sell, item.value), isPrimary = true, isDestructive = true) { _, _ ->
lifecycleScope.launchCatching {
inventoryRepository.sellItem(ownedItem)
}
}
dialog.addCancelButton()
dialog.show()
}

companion object {
private const val ITEM_TYPE_KEY = "CLASS_TYPE_KEY"
private const val ITEM_TYPE_TEXT_KEY = "CLASS_TYPE_TEXT_KEY"
Expand Down

0 comments on commit 89ab3fc

Please sign in to comment.