mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-07-14 02:01:56 +00:00
Observe user and set adapter after
This commit is contained in:
parent
59da021387
commit
ce0fb93fc6
2 changed files with 89 additions and 64 deletions
|
|
@ -13,6 +13,7 @@ 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.addCloseButton
|
||||
import com.habitrpg.android.habitica.extensions.observeOnce
|
||||
import com.habitrpg.android.habitica.extensions.subscribeWithErrorHandler
|
||||
import com.habitrpg.android.habitica.helpers.MainNavigationController
|
||||
import com.habitrpg.android.habitica.helpers.RxErrorHandler
|
||||
|
|
@ -33,6 +34,7 @@ import com.habitrpg.android.habitica.ui.fragments.BaseDialogFragment
|
|||
import com.habitrpg.android.habitica.ui.helpers.EmptyItem
|
||||
import com.habitrpg.android.habitica.ui.helpers.SafeDefaultItemAnimator
|
||||
import com.habitrpg.android.habitica.ui.helpers.loadImage
|
||||
import com.habitrpg.android.habitica.ui.viewmodels.MainUserViewModel
|
||||
import com.habitrpg.android.habitica.ui.views.dialogs.OpenedMysteryitemDialog
|
||||
import io.reactivex.rxjava3.disposables.CompositeDisposable
|
||||
import javax.inject.Inject
|
||||
|
|
@ -51,6 +53,8 @@ class ItemDialogFragment : BaseDialogFragment<FragmentItemsBinding>(), SwipeRefr
|
|||
lateinit var hatchPetUseCase: HatchPetUseCase
|
||||
@Inject
|
||||
lateinit var feedPetUseCase: FeedPetUseCase
|
||||
@Inject
|
||||
lateinit var userViewModel: MainUserViewModel
|
||||
|
||||
var adapter: ItemRecyclerAdapter? = null
|
||||
var itemType: String? = null
|
||||
|
|
@ -106,10 +110,56 @@ class ItemDialogFragment : BaseDialogFragment<FragmentItemsBinding>(), SwipeRefr
|
|||
openMarket()
|
||||
}
|
||||
|
||||
val context = activity
|
||||
|
||||
layoutManager = androidx.recyclerview.widget.LinearLayoutManager(context)
|
||||
binding?.recyclerView?.layoutManager = layoutManager
|
||||
activity?.let {
|
||||
binding?.recyclerView?.addItemDecoration(androidx.recyclerview.widget.DividerItemDecoration(it, androidx.recyclerview.widget.DividerItemDecoration.VERTICAL))
|
||||
}
|
||||
binding?.recyclerView?.itemAnimator = SafeDefaultItemAnimator()
|
||||
|
||||
userViewModel.user.observeOnce(this) {
|
||||
if (it != null){
|
||||
user = it
|
||||
setAdapter()
|
||||
}
|
||||
}
|
||||
|
||||
if (savedInstanceState != null) {
|
||||
this.itemType = savedInstanceState.getString(ITEM_TYPE_KEY, "")
|
||||
}
|
||||
|
||||
when {
|
||||
this.isHatching -> {
|
||||
binding?.titleTextView?.text = getString(R.string.hatch_with, this.hatchingItem?.text)
|
||||
binding?.titleTextView?.visibility = View.VISIBLE
|
||||
binding?.footerTextView?.text = getString(R.string.hatching_market_info)
|
||||
binding?.footerTextView?.visibility = View.VISIBLE
|
||||
binding?.openMarketButton?.visibility = View.VISIBLE
|
||||
}
|
||||
this.isFeeding -> {
|
||||
binding?.titleTextView?.text = getString(R.string.dialog_feeding, this.feedingPet?.text)
|
||||
binding?.titleTextView?.visibility = View.VISIBLE
|
||||
binding?.footerTextView?.text = getString(R.string.feeding_market_info)
|
||||
binding?.footerTextView?.visibility = View.VISIBLE
|
||||
binding?.openMarketButton?.visibility = View.VISIBLE
|
||||
}
|
||||
else -> {
|
||||
binding?.titleTextView?.visibility = View.GONE
|
||||
binding?.footerTextView?.visibility = View.GONE
|
||||
binding?.openMarketButton?.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
|
||||
binding?.openMarketButton?.setOnClickListener {
|
||||
dismiss()
|
||||
openMarket()
|
||||
}
|
||||
|
||||
this.loadItems()
|
||||
}
|
||||
|
||||
private fun setAdapter(){
|
||||
val context = activity
|
||||
|
||||
adapter = binding?.recyclerView?.adapter as? ItemRecyclerAdapter
|
||||
if (adapter == null) {
|
||||
|
|
@ -174,43 +224,6 @@ class ItemDialogFragment : BaseDialogFragment<FragmentItemsBinding>(), SwipeRefr
|
|||
compositeSubscription.add(adapter.feedPetEvents.subscribeWithErrorHandler { feedPet(it) })
|
||||
}
|
||||
}
|
||||
activity?.let {
|
||||
binding?.recyclerView?.addItemDecoration(androidx.recyclerview.widget.DividerItemDecoration(it, androidx.recyclerview.widget.DividerItemDecoration.VERTICAL))
|
||||
}
|
||||
binding?.recyclerView?.itemAnimator = SafeDefaultItemAnimator()
|
||||
|
||||
if (savedInstanceState != null) {
|
||||
this.itemType = savedInstanceState.getString(ITEM_TYPE_KEY, "")
|
||||
}
|
||||
|
||||
when {
|
||||
this.isHatching -> {
|
||||
binding?.titleTextView?.text = getString(R.string.hatch_with, this.hatchingItem?.text)
|
||||
binding?.titleTextView?.visibility = View.VISIBLE
|
||||
binding?.footerTextView?.text = getString(R.string.hatching_market_info)
|
||||
binding?.footerTextView?.visibility = View.VISIBLE
|
||||
binding?.openMarketButton?.visibility = View.VISIBLE
|
||||
}
|
||||
this.isFeeding -> {
|
||||
binding?.titleTextView?.text = getString(R.string.dialog_feeding, this.feedingPet?.text)
|
||||
binding?.titleTextView?.visibility = View.VISIBLE
|
||||
binding?.footerTextView?.text = getString(R.string.feeding_market_info)
|
||||
binding?.footerTextView?.visibility = View.VISIBLE
|
||||
binding?.openMarketButton?.visibility = View.VISIBLE
|
||||
}
|
||||
else -> {
|
||||
binding?.titleTextView?.visibility = View.GONE
|
||||
binding?.footerTextView?.visibility = View.GONE
|
||||
binding?.openMarketButton?.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
|
||||
binding?.openMarketButton?.setOnClickListener {
|
||||
dismiss()
|
||||
openMarket()
|
||||
}
|
||||
|
||||
this.loadItems()
|
||||
}
|
||||
|
||||
private fun feedPet(food: Food) {
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ 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.addCloseButton
|
||||
import com.habitrpg.android.habitica.extensions.observeOnce
|
||||
import com.habitrpg.android.habitica.extensions.subscribeWithErrorHandler
|
||||
import com.habitrpg.android.habitica.helpers.MainNavigationController
|
||||
import com.habitrpg.android.habitica.helpers.RxErrorHandler
|
||||
|
|
@ -29,6 +30,7 @@ import com.habitrpg.android.habitica.models.inventory.SpecialItem
|
|||
import com.habitrpg.android.habitica.models.responses.SkillResponse
|
||||
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.BaseActivity
|
||||
import com.habitrpg.android.habitica.ui.activities.MainActivity
|
||||
import com.habitrpg.android.habitica.ui.activities.SkillMemberActivity
|
||||
|
|
@ -57,6 +59,7 @@ class ItemRecyclerFragment : BaseFragment<FragmentItemsBinding>(), SwipeRefreshL
|
|||
@Inject
|
||||
lateinit var userViewModel: MainUserViewModel
|
||||
|
||||
var user: User? = null
|
||||
var adapter: ItemRecyclerAdapter? = null
|
||||
var itemType: String? = null
|
||||
var transformationItems: MutableList<OwnedItem> = mutableListOf()
|
||||
|
|
@ -96,15 +99,42 @@ class ItemRecyclerFragment : BaseFragment<FragmentItemsBinding>(), SwipeRefreshL
|
|||
}
|
||||
}
|
||||
|
||||
val context = activity
|
||||
|
||||
layoutManager = androidx.recyclerview.widget.LinearLayoutManager(context)
|
||||
binding?.recyclerView?.layoutManager = layoutManager
|
||||
activity?.let {
|
||||
binding?.recyclerView?.addItemDecoration(androidx.recyclerview.widget.DividerItemDecoration(it, androidx.recyclerview.widget.DividerItemDecoration.VERTICAL))
|
||||
}
|
||||
binding?.recyclerView?.itemAnimator = SafeDefaultItemAnimator()
|
||||
|
||||
userViewModel.user.observeOnce(this) {
|
||||
if (it != null){
|
||||
user = it
|
||||
setAdapter()
|
||||
}
|
||||
}
|
||||
|
||||
if (savedInstanceState != null) {
|
||||
this.itemType = savedInstanceState.getString(ITEM_TYPE_KEY, "")
|
||||
}
|
||||
|
||||
binding?.titleTextView?.visibility = View.GONE
|
||||
binding?.footerTextView?.visibility = View.GONE
|
||||
binding?.openMarketButton?.visibility = View.GONE
|
||||
|
||||
binding?.openMarketButton?.setOnClickListener {
|
||||
openMarket()
|
||||
}
|
||||
|
||||
this.loadItems()
|
||||
}
|
||||
|
||||
private fun setAdapter(){
|
||||
val context = activity
|
||||
|
||||
adapter = binding?.recyclerView?.adapter as? ItemRecyclerAdapter
|
||||
if (adapter == null) {
|
||||
context?.let {
|
||||
adapter = ItemRecyclerAdapter(context, userViewModel.user.value)
|
||||
adapter = ItemRecyclerAdapter(context, user)
|
||||
}
|
||||
binding?.recyclerView?.adapter = adapter
|
||||
adapter?.useSpecialEvents?.subscribeWithErrorHandler { onSpecialItemSelected(it) }?.let { compositeSubscription.add(it) }
|
||||
|
|
@ -128,7 +158,7 @@ class ItemRecyclerFragment : BaseFragment<FragmentItemsBinding>(), SwipeRefreshL
|
|||
)
|
||||
compositeSubscription.add(
|
||||
adapter.getOpenMysteryItemFlowable()
|
||||
.flatMap { inventoryRepository.openMysteryItem(userViewModel.user.value) }
|
||||
.flatMap { inventoryRepository.openMysteryItem(user) }
|
||||
.doOnNext {
|
||||
val activity = activity as? MainActivity
|
||||
if (activity != null) {
|
||||
|
|
@ -152,24 +182,6 @@ class ItemRecyclerFragment : BaseFragment<FragmentItemsBinding>(), SwipeRefreshL
|
|||
compositeSubscription.addAll(adapter.startNewPartyEvents.subscribeWithErrorHandler { createNewParty(it) })
|
||||
}
|
||||
}
|
||||
activity?.let {
|
||||
binding?.recyclerView?.addItemDecoration(androidx.recyclerview.widget.DividerItemDecoration(it, androidx.recyclerview.widget.DividerItemDecoration.VERTICAL))
|
||||
}
|
||||
binding?.recyclerView?.itemAnimator = SafeDefaultItemAnimator()
|
||||
|
||||
if (savedInstanceState != null) {
|
||||
this.itemType = savedInstanceState.getString(ITEM_TYPE_KEY, "")
|
||||
}
|
||||
|
||||
binding?.titleTextView?.visibility = View.GONE
|
||||
binding?.footerTextView?.visibility = View.GONE
|
||||
binding?.openMarketButton?.visibility = View.GONE
|
||||
|
||||
binding?.openMarketButton?.setOnClickListener {
|
||||
openMarket()
|
||||
}
|
||||
|
||||
this.loadItems()
|
||||
}
|
||||
|
||||
private fun showHatchingDialog(item: Item) {
|
||||
|
|
@ -221,9 +233,9 @@ class ItemRecyclerFragment : BaseFragment<FragmentItemsBinding>(), SwipeRefreshL
|
|||
alert?.setMessage(R.string.quest_party_required_description)
|
||||
alert?.addButton(R.string.create_new_party, true, false) { _, _ ->
|
||||
socialRepository.createGroup(
|
||||
getString(R.string.usernames_party, userViewModel.user.value?.profile?.name),
|
||||
getString(R.string.usernames_party, user?.profile?.name),
|
||||
"",
|
||||
userViewModel.user.value?.id,
|
||||
user?.id,
|
||||
"party",
|
||||
"",
|
||||
false
|
||||
|
|
@ -243,7 +255,7 @@ class ItemRecyclerFragment : BaseFragment<FragmentItemsBinding>(), SwipeRefreshL
|
|||
{
|
||||
MainNavigationController.navigate(
|
||||
R.id.partyFragment,
|
||||
bundleOf(Pair("partyID", userViewModel.user.value?.party?.id))
|
||||
bundleOf(Pair("partyID", user?.party?.id))
|
||||
)
|
||||
},
|
||||
RxErrorHandler.handleEmptyError()
|
||||
|
|
|
|||
Loading…
Reference in a new issue