mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-05-20 20:59:00 +00:00
Fix issues in shops
This commit is contained in:
parent
8605667adf
commit
b6cde7e535
8 changed files with 80 additions and 84 deletions
|
|
@ -0,0 +1,10 @@
|
|||
package com.habitrpg.android.habitica.extensions
|
||||
|
||||
import com.habitrpg.android.habitica.helpers.RxErrorHandler
|
||||
import io.reactivex.Flowable
|
||||
import io.reactivex.disposables.Disposable
|
||||
import io.reactivex.functions.Consumer
|
||||
|
||||
fun <T> Flowable<T>.subscribeWithErrorHandler(function: Consumer<T>): Disposable {
|
||||
return subscribe(function, RxErrorHandler.handleEmptyError())
|
||||
}
|
||||
|
|
@ -13,22 +13,22 @@ import android.graphics.drawable.BitmapDrawable
|
|||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.preference.PreferenceManager
|
||||
import com.google.android.material.appbar.AppBarLayout
|
||||
import com.google.android.material.appbar.CollapsingToolbarLayout
|
||||
import com.google.android.material.tabs.TabLayout
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.content.FileProvider
|
||||
import androidx.appcompat.app.ActionBarDrawerToggle
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import android.util.Log
|
||||
import android.util.TypedValue
|
||||
import android.view.*
|
||||
import android.widget.FrameLayout
|
||||
import android.widget.TextView
|
||||
import androidx.appcompat.app.ActionBarDrawerToggle
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.content.FileProvider
|
||||
import androidx.core.content.edit
|
||||
import androidx.navigation.findNavController
|
||||
import com.facebook.drawee.view.SimpleDraweeView
|
||||
import com.google.android.material.appbar.AppBarLayout
|
||||
import com.google.android.material.appbar.CollapsingToolbarLayout
|
||||
import com.google.android.material.tabs.TabLayout
|
||||
import com.google.firebase.analytics.FirebaseAnalytics
|
||||
import com.google.firebase.perf.FirebasePerformance
|
||||
import com.habitrpg.android.habitica.HabiticaBaseApplication
|
||||
|
|
@ -52,7 +52,6 @@ import com.habitrpg.android.habitica.proxy.CrashlyticsProxy
|
|||
import com.habitrpg.android.habitica.ui.AvatarView
|
||||
import com.habitrpg.android.habitica.ui.AvatarWithBarsViewModel
|
||||
import com.habitrpg.android.habitica.ui.TutorialView
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
|
||||
import com.habitrpg.android.habitica.ui.fragments.NavigationDrawerFragment
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
||||
import com.habitrpg.android.habitica.ui.helpers.KeyboardUtil
|
||||
|
|
@ -62,13 +61,13 @@ import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
|
|||
import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaSnackbar.SnackbarDisplayType
|
||||
import com.habitrpg.android.habitica.ui.views.ValueBar
|
||||
import com.habitrpg.android.habitica.ui.views.bottombar.BottomBar
|
||||
import com.habitrpg.android.habitica.ui.views.yesterdailies.YesterdailyDialog
|
||||
import com.habitrpg.android.habitica.userpicture.BitmapUtils
|
||||
import com.habitrpg.android.habitica.widget.AvatarStatsWidgetProvider
|
||||
import com.habitrpg.android.habitica.widget.DailiesWidgetProvider
|
||||
import com.habitrpg.android.habitica.widget.HabitButtonWidgetProvider
|
||||
import com.habitrpg.android.habitica.widget.TodoListWidgetProvider
|
||||
import com.habitrpg.android.habitica.ui.views.bottombar.BottomBar
|
||||
import io.reactivex.Completable
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||
import io.reactivex.functions.Action
|
||||
|
|
@ -77,7 +76,6 @@ import io.reactivex.schedulers.Schedulers
|
|||
import io.realm.Realm
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
import org.greenrobot.eventbus.Subscribe
|
||||
import java.lang.ref.WeakReference
|
||||
import java.util.*
|
||||
import javax.inject.Inject
|
||||
|
||||
|
|
@ -141,7 +139,6 @@ open class MainActivity : BaseActivity(), TutorialView.OnTutorialReaction {
|
|||
|
||||
var user: User? = null
|
||||
|
||||
private var activeFragment: WeakReference<BaseMainFragment>? = null
|
||||
private var avatarInHeader: AvatarWithBarsViewModel? = null
|
||||
private var faintDialog: AlertDialog? = null
|
||||
private var sideAvatarView: AvatarView? = null
|
||||
|
|
@ -354,7 +351,6 @@ open class MainActivity : BaseActivity(), TutorialView.OnTutorialReaction {
|
|||
preferences?.sound.notNull { soundManager.soundTheme = it }
|
||||
runOnUiThread {
|
||||
updateSidebar()
|
||||
activeFragment?.get()?.updateUserData(user)
|
||||
}
|
||||
|
||||
displayDeathDialogIfNeeded()
|
||||
|
|
@ -425,7 +421,6 @@ open class MainActivity : BaseActivity(), TutorialView.OnTutorialReaction {
|
|||
super.onBackPressed()
|
||||
} catch (ignored: Exception) {
|
||||
}
|
||||
this.activeFragment?.get()?.updateUserData(user)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -36,10 +36,6 @@ abstract class BaseMainFragment : BaseFragment() {
|
|||
var usesBottomNavigation = false
|
||||
open var user: User? = null
|
||||
|
||||
open fun updateUserData(user: User?) {
|
||||
this.user = user
|
||||
}
|
||||
|
||||
override fun onAttach(context: Context) {
|
||||
super.onAttach(context)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,14 +1,15 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.inventory.customization
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.components.AppComponent
|
||||
import com.habitrpg.android.habitica.data.CustomizationRepository
|
||||
import com.habitrpg.android.habitica.extensions.notNull
|
||||
import com.habitrpg.android.habitica.extensions.subscribeWithErrorHandler
|
||||
import com.habitrpg.android.habitica.helpers.RxErrorHandler
|
||||
import com.habitrpg.android.habitica.models.inventory.Customization
|
||||
import com.habitrpg.android.habitica.models.responses.UnlockResponse
|
||||
|
|
@ -100,12 +101,9 @@ class AvatarCustomizationFragment : BaseMainFragment() {
|
|||
recyclerView.itemAnimator = SafeDefaultItemAnimator()
|
||||
this.loadCustomizations()
|
||||
|
||||
this.updateActiveCustomization()
|
||||
if (this.user != null) {
|
||||
this.adapter.userSize = this.user?.preferences?.size
|
||||
this.adapter.hairColor = this.user?.preferences?.hair?.color
|
||||
this.adapter.gemBalance = user?.gemCount ?: 0
|
||||
}
|
||||
compositeSubscription.add(userRepository.getUser().subscribeWithErrorHandler(Consumer {
|
||||
updateUser(it)
|
||||
}))
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
|
|
@ -142,21 +140,23 @@ class AvatarCustomizationFragment : BaseMainFragment() {
|
|||
layoutManager.spanCount = spanCount
|
||||
}
|
||||
|
||||
override fun updateUserData(user: User?) {
|
||||
super.updateUserData(user)
|
||||
this.adapter.gemBalance = user?.gemCount ?: 0
|
||||
this.updateActiveCustomization()
|
||||
fun updateUser(user: User) {
|
||||
this.updateActiveCustomization(user)
|
||||
if (adapter.customizationList.size != 0) {
|
||||
val ownedCustomizations = ArrayList<String>()
|
||||
user?.purchased?.customizations?.filter { it.type == this.type }?.mapTo(ownedCustomizations) { it.id }
|
||||
user.purchased?.customizations?.filter { it.type == this.type }?.mapTo(ownedCustomizations) { it.id }
|
||||
adapter.updateOwnership(ownedCustomizations)
|
||||
} else {
|
||||
this.loadCustomizations()
|
||||
}
|
||||
this.adapter.userSize = this.user?.preferences?.size
|
||||
this.adapter.hairColor = this.user?.preferences?.hair?.color
|
||||
this.adapter.gemBalance = user.gemCount
|
||||
adapter.notifyDataSetChanged()
|
||||
}
|
||||
|
||||
private fun updateActiveCustomization() {
|
||||
if (this.type == null || user?.preferences == null) {
|
||||
private fun updateActiveCustomization(user: User) {
|
||||
if (this.type == null || user.preferences == null) {
|
||||
return
|
||||
}
|
||||
val prefs = this.user?.preferences
|
||||
|
|
@ -181,3 +181,4 @@ class AvatarCustomizationFragment : BaseMainFragment() {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import android.view.ViewGroup
|
|||
import android.widget.AdapterView
|
||||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.components.AppComponent
|
||||
import com.habitrpg.android.habitica.extensions.subscribeWithErrorHandler
|
||||
import com.habitrpg.android.habitica.helpers.MainNavigationController
|
||||
import com.habitrpg.android.habitica.helpers.RxErrorHandler
|
||||
import com.habitrpg.android.habitica.models.user.User
|
||||
|
|
@ -24,11 +25,6 @@ class AvatarOverviewFragment : BaseMainFragment(), AdapterView.OnItemSelectedLis
|
|||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
if (this.user == null) {
|
||||
return
|
||||
}
|
||||
|
||||
this.setSize(this.user?.preferences?.size)
|
||||
avatarSizeSpinner.onItemSelectedListener = this
|
||||
|
||||
avatarShirtView.setOnClickListener { displayCustomizationFragment("shirt", null) }
|
||||
|
|
@ -42,31 +38,9 @@ class AvatarOverviewFragment : BaseMainFragment(), AdapterView.OnItemSelectedLis
|
|||
avatarHairMustacheView.setOnClickListener { displayCustomizationFragment("hair", "mustache") }
|
||||
avatarBackgroundView.setOnClickListener { displayCustomizationFragment("background", null) }
|
||||
|
||||
setCustomizations()
|
||||
}
|
||||
|
||||
private fun setCustomizations() {
|
||||
avatarShirtView.customizationIdentifier = user?.preferences?.size + "_shirt_" + user?.preferences?.shirt
|
||||
avatarShirtView.equipmentName = user?.preferences?.shirt
|
||||
avatarSkinView.customizationIdentifier = "skin_" + user?.preferences?.skin
|
||||
avatarSkinView.equipmentName = user?.preferences?.skin
|
||||
val chair = user?.preferences?.chair
|
||||
avatarChairView.customizationIdentifier = if (chair?.startsWith("handleless") == true) "chair_$chair" else chair
|
||||
avatarChairView.equipmentName = chair?.removePrefix("chair_")
|
||||
avatarHairColorView.customizationIdentifier = if (user?.preferences?.hair?.color != null && user?.preferences?.hair?.color != "") "hair_bangs_1_" + user?.preferences?.hair?.color else ""
|
||||
avatarHairColorView.equipmentName = user?.preferences?.hair?.color
|
||||
avatarHairBangsView.customizationIdentifier = if (user?.preferences?.hair?.bangs != null && user?.preferences?.hair?.bangs != 0) "hair_bangs_" + user?.preferences?.hair?.bangs + "_" + user?.preferences?.hair?.color else ""
|
||||
avatarHairBangsView.equipmentName = user?.preferences?.hair?.bangs.toString()
|
||||
avatarHairBaseView.customizationIdentifier = if (user?.preferences?.hair?.base != null && user?.preferences?.hair?.base != 0) "hair_base_" + user?.preferences?.hair?.base + "_" + user?.preferences?.hair?.color else ""
|
||||
avatarHairBaseView.equipmentName = user?.preferences?.hair?.base.toString()
|
||||
avatarHairFlowerView.customizationIdentifier = if (user?.preferences?.hair?.flower != null && user?.preferences?.hair?.flower != 0) "hair_flower_" + user?.preferences?.hair?.flower else ""
|
||||
avatarHairFlowerView.equipmentName = user?.preferences?.hair?.bangs.toString()
|
||||
avatarHairBeardView.customizationIdentifier = if (user?.preferences?.hair?.beard != null && user?.preferences?.hair?.beard != 0) "hair_beard_" + user?.preferences?.hair?.beard + "_" + user?.preferences?.hair?.color else ""
|
||||
avatarHairBeardView.equipmentName = user?.preferences?.hair?.beard.toString()
|
||||
avatarHairMustacheView.customizationIdentifier = if (user?.preferences?.hair?.mustache != null && user?.preferences?.hair?.mustache != 0) "hair_mustache_" + user?.preferences?.hair?.mustache + "_" + user?.preferences?.hair?.color else ""
|
||||
avatarHairMustacheView.equipmentName = user?.preferences?.hair?.mustache.toString()
|
||||
avatarBackgroundView.customizationIdentifier = "background_" + user?.preferences?.background
|
||||
avatarBackgroundView.equipmentName = user?.preferences?.background
|
||||
compositeSubscription.add(userRepository.getUser().subscribeWithErrorHandler(Consumer {
|
||||
updateUser(it)
|
||||
}))
|
||||
}
|
||||
|
||||
override fun injectFragment(component: AppComponent) {
|
||||
|
|
@ -77,9 +51,33 @@ class AvatarOverviewFragment : BaseMainFragment(), AdapterView.OnItemSelectedLis
|
|||
MainNavigationController.navigate(AvatarOverviewFragmentDirections.openAvatarDetail(type, category ?: ""))
|
||||
}
|
||||
|
||||
override fun updateUserData(user: User?) {
|
||||
super.updateUserData(user)
|
||||
this.setSize(user?.preferences?.size)
|
||||
fun updateUser(user: User) {
|
||||
this.setSize(user.preferences?.size)
|
||||
setCustomizations(user)
|
||||
}
|
||||
|
||||
private fun setCustomizations(user: User) {
|
||||
avatarShirtView.customizationIdentifier = user.preferences?.size + "_shirt_" + user.preferences?.shirt
|
||||
avatarShirtView.equipmentName = user.preferences?.shirt
|
||||
avatarSkinView.customizationIdentifier = "skin_" + user.preferences?.skin
|
||||
avatarSkinView.equipmentName = user.preferences?.skin
|
||||
val chair = user.preferences?.chair
|
||||
avatarChairView.customizationIdentifier = if (chair?.startsWith("handleless") == true) "chair_$chair" else chair
|
||||
avatarChairView.equipmentName = chair?.removePrefix("chair_")
|
||||
avatarHairColorView.customizationIdentifier = if (user.preferences?.hair?.color != null && user.preferences?.hair?.color != "") "hair_bangs_1_" + user.preferences?.hair?.color else ""
|
||||
avatarHairColorView.equipmentName = user.preferences?.hair?.color
|
||||
avatarHairBangsView.customizationIdentifier = if (user.preferences?.hair?.bangs != null && user.preferences?.hair?.bangs != 0) "hair_bangs_" + user.preferences?.hair?.bangs + "_" + user.preferences?.hair?.color else ""
|
||||
avatarHairBangsView.equipmentName = user.preferences?.hair?.bangs.toString()
|
||||
avatarHairBaseView.customizationIdentifier = if (user.preferences?.hair?.base != null && user.preferences?.hair?.base != 0) "hair_base_" + user.preferences?.hair?.base + "_" + user.preferences?.hair?.color else ""
|
||||
avatarHairBaseView.equipmentName = user.preferences?.hair?.base.toString()
|
||||
avatarHairFlowerView.customizationIdentifier = if (user.preferences?.hair?.flower != null && user.preferences?.hair?.flower != 0) "hair_flower_" + user.preferences?.hair?.flower else ""
|
||||
avatarHairFlowerView.equipmentName = user.preferences?.hair?.bangs.toString()
|
||||
avatarHairBeardView.customizationIdentifier = if (user.preferences?.hair?.beard != null && user.preferences?.hair?.beard != 0) "hair_beard_" + user.preferences?.hair?.beard + "_" + user.preferences?.hair?.color else ""
|
||||
avatarHairBeardView.equipmentName = user.preferences?.hair?.beard.toString()
|
||||
avatarHairMustacheView.customizationIdentifier = if (user.preferences?.hair?.mustache != null && user.preferences?.hair?.mustache != 0) "hair_mustache_" + user.preferences?.hair?.mustache + "_" + user.preferences?.hair?.color else ""
|
||||
avatarHairMustacheView.equipmentName = user.preferences?.hair?.mustache.toString()
|
||||
avatarBackgroundView.customizationIdentifier = "background_" + user.preferences?.background
|
||||
avatarBackgroundView.equipmentName = user.preferences?.background
|
||||
}
|
||||
|
||||
private fun setSize(size: String?) {
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.inventory.shops
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.components.AppComponent
|
||||
import com.habitrpg.android.habitica.data.InventoryRepository
|
||||
|
|
@ -234,6 +234,8 @@ class ShopFragment : BaseFragment() {
|
|||
fun onItemPurchased(event: GearPurchasedEvent) {
|
||||
if (Shop.MARKET == shopIdentifier) {
|
||||
loadMarketGear()
|
||||
} else if (Shop.TIME_TRAVELERS_SHOP == shopIdentifier) {
|
||||
loadShopInventory()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,17 +1,19 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.inventory.shops
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.FragmentPagerAdapter
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.FragmentPagerAdapter
|
||||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.components.AppComponent
|
||||
import com.habitrpg.android.habitica.data.InventoryRepository
|
||||
import com.habitrpg.android.habitica.helpers.RxErrorHandler
|
||||
import com.habitrpg.android.habitica.models.shops.Shop
|
||||
import com.habitrpg.android.habitica.models.user.User
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
|
||||
import com.habitrpg.android.habitica.ui.views.CurrencyViews
|
||||
import io.reactivex.functions.Consumer
|
||||
import kotlinx.android.synthetic.main.fragment_viewpager.*
|
||||
import javax.inject.Inject
|
||||
|
||||
|
|
@ -36,7 +38,8 @@ class ShopsFragment : BaseMainFragment() {
|
|||
viewPager.currentItem = 0
|
||||
setViewPagerAdapter()
|
||||
toolbarAccessoryContainer?.addView(currencyView)
|
||||
updateCurrencyView()
|
||||
|
||||
compositeSubscription.add(userRepository.getUser().subscribe(Consumer { updateCurrencyView(it) }, RxErrorHandler.handleEmptyError()))
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
|
|
@ -92,18 +95,9 @@ class ShopsFragment : BaseMainFragment() {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
override fun updateUserData(user: User?) {
|
||||
super.updateUserData(user)
|
||||
updateCurrencyView()
|
||||
}
|
||||
|
||||
private fun updateCurrencyView() {
|
||||
if (user == null) {
|
||||
return
|
||||
}
|
||||
currencyView.gold = user?.stats?.gp ?: 0.0
|
||||
currencyView.gems = user?.gemCount?.toDouble() ?: 0.0
|
||||
currencyView.hourglasses = user?.hourglassCount?.toDouble() ?: 0.0
|
||||
private fun updateCurrencyView(user: User) {
|
||||
currencyView.gold = user.stats?.gp ?: 0.0
|
||||
currencyView.gems = user.gemCount.toDouble()
|
||||
currencyView.hourglasses = user.hourglassCount?.toDouble() ?: 0.0
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ package com.habitrpg.android.habitica.ui.views.shops
|
|||
|
||||
import android.app.AlertDialog
|
||||
import android.content.Context
|
||||
import androidx.core.content.ContextCompat
|
||||
import android.util.DisplayMetrics
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
|
|
@ -10,21 +9,22 @@ import android.view.ViewGroup
|
|||
import android.widget.ImageButton
|
||||
import android.widget.ScrollView
|
||||
import android.widget.TextView
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.components.AppComponent
|
||||
import com.habitrpg.android.habitica.data.InventoryRepository
|
||||
import com.habitrpg.android.habitica.data.UserRepository
|
||||
import com.habitrpg.android.habitica.events.GearPurchasedEvent
|
||||
import com.habitrpg.android.habitica.events.ShowSnackbarEvent
|
||||
import com.habitrpg.android.habitica.helpers.MainNavigationController
|
||||
import com.habitrpg.android.habitica.ui.helpers.bindView
|
||||
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
||||
import com.habitrpg.android.habitica.helpers.MainNavigationController
|
||||
import com.habitrpg.android.habitica.helpers.RxErrorHandler
|
||||
import com.habitrpg.android.habitica.models.inventory.Equipment
|
||||
import com.habitrpg.android.habitica.models.inventory.QuestContent
|
||||
import com.habitrpg.android.habitica.models.shops.Shop
|
||||
import com.habitrpg.android.habitica.models.shops.ShopItem
|
||||
import com.habitrpg.android.habitica.models.user.User
|
||||
import com.habitrpg.android.habitica.ui.helpers.bindView
|
||||
import com.habitrpg.android.habitica.ui.views.CurrencyView
|
||||
import com.habitrpg.android.habitica.ui.views.CurrencyViews
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
|
||||
|
|
|
|||
Loading…
Reference in a new issue