Merge pull request #1960 from Hafizzle/Fiz/market-change-class-message

Sync up the change class confirmation messages in Market
This commit is contained in:
Phillip Thelen 2023-05-04 15:26:31 +02:00 committed by GitHub
commit 7cdc3244df
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1,9 +1,11 @@
package com.habitrpg.android.habitica.ui.fragments.inventory.shops package com.habitrpg.android.habitica.ui.fragments.inventory.shops
import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.activity.result.contract.ActivityResultContracts
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
@ -21,6 +23,7 @@ import com.habitrpg.android.habitica.models.shops.Shop
import com.habitrpg.android.habitica.models.shops.ShopCategory import com.habitrpg.android.habitica.models.shops.ShopCategory
import com.habitrpg.android.habitica.models.shops.ShopItem import com.habitrpg.android.habitica.models.shops.ShopItem
import com.habitrpg.android.habitica.models.social.Group import com.habitrpg.android.habitica.models.social.Group
import com.habitrpg.android.habitica.ui.activities.ClassSelectionActivity
import com.habitrpg.android.habitica.ui.adapter.inventory.ShopRecyclerAdapter import com.habitrpg.android.habitica.ui.adapter.inventory.ShopRecyclerAdapter
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
import com.habitrpg.android.habitica.ui.helpers.SafeDefaultItemAnimator import com.habitrpg.android.habitica.ui.helpers.SafeDefaultItemAnimator
@ -28,6 +31,7 @@ import com.habitrpg.android.habitica.ui.viewmodels.MainUserViewModel
import com.habitrpg.android.habitica.ui.views.CurrencyText import com.habitrpg.android.habitica.ui.views.CurrencyText
import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog
import com.habitrpg.android.habitica.ui.views.getTranslatedClassName import com.habitrpg.android.habitica.ui.views.getTranslatedClassName
import com.habitrpg.android.habitica.ui.views.insufficientCurrency.InsufficientGemsDialog
import com.habitrpg.android.habitica.ui.views.shops.PurchaseDialog import com.habitrpg.android.habitica.ui.views.shops.PurchaseDialog
import com.habitrpg.common.habitica.helpers.ExceptionHandler import com.habitrpg.common.habitica.helpers.ExceptionHandler
import com.habitrpg.common.habitica.helpers.RecyclerViewState import com.habitrpg.common.habitica.helpers.RecyclerViewState
@ -65,6 +69,13 @@ open class ShopFragment : BaseMainFragment<FragmentRefreshRecyclerviewBinding>()
override var binding: FragmentRefreshRecyclerviewBinding? = null override var binding: FragmentRefreshRecyclerviewBinding? = null
private val classSelectionResult =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
lifecycleScope.launch(ExceptionHandler.coroutine()) {
userRepository.retrieveUser(true, true)
}
}
override fun createBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentRefreshRecyclerviewBinding { override fun createBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentRefreshRecyclerviewBinding {
return FragmentRefreshRecyclerviewBinding.inflate(inflater, container, false) return FragmentRefreshRecyclerviewBinding.inflate(inflater, container, false)
} }
@ -215,17 +226,33 @@ open class ShopFragment : BaseMainFragment<FragmentRefreshRecyclerviewBinding>()
} }
private fun showClassChangeDialog(classIdentifier: String) { private fun showClassChangeDialog(classIdentifier: String) {
context?.let { context -> lifecycleScope.launch(ExceptionHandler.coroutine()) {
val alert = HabiticaAlertDialog(context) val user = userViewModel.user.value ?: return@launch
alert.setTitle(getString(R.string.class_confirmation_price, getTranslatedClassName(requireContext().resources, classIdentifier), 3)) val bundle = Bundle()
alert.addButton(R.string.choose_class, true) { _, _ -> bundle.putBoolean("isInitialSelection", user.flags?.classSelected == false)
lifecycleScope.launch(ExceptionHandler.coroutine()) { val intent = Intent(activity, ClassSelectionActivity::class.java)
userRepository.changeClass(classIdentifier) intent.putExtras(bundle)
loadMarketGear() if (user.flags?.classSelected == true && user.preferences?.disableClasses == false) {
if ((user.gemCount ?: 0) >= 3) {
context?.let { context ->
val dialog = HabiticaAlertDialog(context)
dialog.setTitle(R.string.change_class_confirmation)
dialog.addButton(R.string.change_class, true, true) { _, _ ->
classSelectionResult.launch(
intent
)
}
dialog.addButton(R.string.dialog_go_back, false)
dialog.enqueue()
}
} else {
val dialog = context?.let { InsufficientGemsDialog(it, 3) }
dialog?.show()
} }
} else {
classSelectionResult.launch(intent)
} }
alert.addButton(R.string.dialog_go_back, false) loadMarketGear()
alert.show()
} }
} }