mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-05-20 04:39:04 +00:00
Improve loading party screen
This commit is contained in:
parent
d6198f33c7
commit
ea9de8e5e6
5 changed files with 48 additions and 38 deletions
|
|
@ -1,7 +1,6 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.social.party
|
||||
|
||||
import android.os.Bundle
|
||||
import android.os.Handler
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
|
|
@ -34,6 +33,9 @@ import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog
|
|||
import com.habitrpg.android.habitica.ui.views.social.OldQuestProgressView
|
||||
import io.reactivex.functions.Consumer
|
||||
import io.realm.RealmResults
|
||||
import kotlinx.coroutines.GlobalScope
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
import net.pherth.android.emoji_library.EmojiEditText
|
||||
import javax.inject.Inject
|
||||
import javax.inject.Named
|
||||
|
|
@ -124,12 +126,12 @@ class PartyDetailFragment : BaseFragment() {
|
|||
newQuestButton?.visibility = View.GONE
|
||||
questDetailButton?.visibility = View.VISIBLE
|
||||
questImageWrapper?.visibility = View.VISIBLE
|
||||
val mainHandler = Handler(context?.mainLooper)
|
||||
mainHandler.postDelayed({
|
||||
GlobalScope.launch {
|
||||
delay(500)
|
||||
inventoryRepository.getQuestContent(party.quest?.key ?: "")
|
||||
.firstElement()
|
||||
.subscribe(Consumer<QuestContent> { this@PartyDetailFragment.updateQuestContent(it) }, RxErrorHandler.handleEmptyError())
|
||||
}, 500)
|
||||
}
|
||||
} else {
|
||||
newQuestButton?.visibility = View.VISIBLE
|
||||
questDetailButton?.visibility = View.GONE
|
||||
|
|
@ -191,24 +193,27 @@ class PartyDetailFragment : BaseFragment() {
|
|||
private fun updateMembersList(members: RealmResults<Member>?) {
|
||||
membersWrapper?.removeAllViews()
|
||||
val leaderID = viewModel?.leaderID
|
||||
if (members != null) {
|
||||
for (member in members) {
|
||||
val memberView = membersWrapper?.inflate(R.layout.party_member, false) ?: continue
|
||||
val viewHolder = GroupMemberViewHolder(memberView)
|
||||
viewHolder.bind(member, leaderID ?: "", viewModel?.getUserData()?.value?.id)
|
||||
viewHolder.onClickEvent = {
|
||||
FullProfileActivity.open(member.id ?: "")
|
||||
}
|
||||
viewHolder.sendMessageEvent = {
|
||||
member.id?.let { showSendMessageToUserDialog(it, member.displayName) }
|
||||
}
|
||||
viewHolder.transferOwnershipEvent = {
|
||||
member.id?.let { showTransferOwnerShipDialog(it, member.displayName) }
|
||||
}
|
||||
viewHolder.removeMemberEvent = {
|
||||
member.id?.let { showRemoveMemberDialog(it, member.displayName) }
|
||||
}
|
||||
membersWrapper?.addView(memberView)
|
||||
members?.forEachIndexed { index, member ->
|
||||
val memberView = (if (membersWrapper?.childCount ?: 0 > index) {
|
||||
membersWrapper?.getChildAt(index)
|
||||
} else {
|
||||
val view = membersWrapper?.inflate(R.layout.party_member, false)
|
||||
membersWrapper?.addView(view)
|
||||
view
|
||||
}) ?: return@forEachIndexed
|
||||
val viewHolder = GroupMemberViewHolder(memberView)
|
||||
viewHolder.bind(member, leaderID ?: "", viewModel?.getUserData()?.value?.id)
|
||||
viewHolder.onClickEvent = {
|
||||
FullProfileActivity.open(member.id ?: "")
|
||||
}
|
||||
viewHolder.sendMessageEvent = {
|
||||
member.id?.let { showSendMessageToUserDialog(it, member.displayName) }
|
||||
}
|
||||
viewHolder.transferOwnershipEvent = {
|
||||
member.id?.let { showTransferOwnerShipDialog(it, member.displayName) }
|
||||
}
|
||||
viewHolder.removeMemberEvent = {
|
||||
member.id?.let { showRemoveMemberDialog(it, member.displayName) }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -98,6 +98,7 @@ open class GroupViewModel : BaseViewModel() {
|
|||
disposable.add(groupIDFlowable
|
||||
.filterOptionalDoOnEmpty { group.value = null }
|
||||
.flatMap { socialRepository.getGroup(it) }
|
||||
.map { socialRepository.getUnmanagedCopy(it) }
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(Consumer { group.value = it }, RxErrorHandler.handleEmptyError()))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,23 +38,17 @@ class HabiticaProgressBar(context: Context, attrs: AttributeSet?) : FrameLayout(
|
|||
}
|
||||
}
|
||||
|
||||
var currentValue: Double = 0.0
|
||||
set(value) {
|
||||
field = value
|
||||
updateBar()
|
||||
}
|
||||
private var currentValue: Double = 0.0
|
||||
private var maxValue: Double = 0.0
|
||||
|
||||
var pendingValue: Double = 0.0
|
||||
set(value) {
|
||||
field = value
|
||||
updateBar()
|
||||
if (field != value) {
|
||||
field = value
|
||||
updateBar()
|
||||
}
|
||||
}
|
||||
|
||||
var maxValue: Double = 0.0
|
||||
set(value) {
|
||||
field = value
|
||||
updateBar()
|
||||
}
|
||||
|
||||
private fun updateBar() {
|
||||
val remainingValue = currentValue - pendingValue
|
||||
|
|
@ -95,6 +89,17 @@ class HabiticaProgressBar(context: Context, attrs: AttributeSet?) : FrameLayout(
|
|||
fun set(value: Double, valueMax: Double) {
|
||||
currentValue = value
|
||||
maxValue = valueMax
|
||||
updateBar()
|
||||
}
|
||||
|
||||
fun setCurrentValue(value: Double) {
|
||||
currentValue = value
|
||||
updateBar()
|
||||
}
|
||||
|
||||
fun setMaxValue(value: Double) {
|
||||
maxValue = value
|
||||
updateBar()
|
||||
}
|
||||
|
||||
private fun setLayoutWeight(view: View, weight: Double) {
|
||||
|
|
|
|||
|
|
@ -55,9 +55,8 @@ class ValueBar(context: Context, attrs: AttributeSet?) : FrameLayout(context, at
|
|||
}
|
||||
|
||||
private fun updateBar() {
|
||||
progressBar.set(currentValue, maxValue)
|
||||
this.progressBar.pendingValue = pendingValue
|
||||
this.progressBar.currentValue = currentValue
|
||||
this.progressBar.maxValue = maxValue
|
||||
this.setValueText(formatter.format(currentValue) + " / " + formatter.format(maxValue.toInt()))
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -63,12 +63,12 @@ class QuestMenuView : LinearLayout {
|
|||
}
|
||||
|
||||
fun configure(quest: Quest) {
|
||||
healthBarView.currentValue = quest.progress?.hp ?: 0.0
|
||||
healthBarView.setCurrentValue(quest.progress?.hp ?: 0.0)
|
||||
}
|
||||
|
||||
fun configure(questContent: QuestContent) {
|
||||
this.questContent = questContent
|
||||
healthBarView.maxValue = questContent.boss?.hp?.toDouble() ?: 0.0
|
||||
healthBarView.setMaxValue(questContent.boss?.hp?.toDouble() ?: 0.0)
|
||||
bottomView.setBackgroundColor(questContent.colors?.darkColor ?: 0)
|
||||
bossArtView.setBackgroundColor(questContent.colors?.mediumColor ?: 0)
|
||||
DataBindingUtils.loadImage(bossArtView, "quest_"+questContent.key)
|
||||
|
|
|
|||
Loading…
Reference in a new issue