mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-04-14 19:56:32 +00:00
fix sprite substitution
This commit is contained in:
parent
acda038190
commit
7bca210864
10 changed files with 62 additions and 46 deletions
|
|
@ -11,4 +11,4 @@
|
|||
android:progressTint="@color/text_brand_neon"
|
||||
android:layout_gravity="center"
|
||||
android:indeterminate="true" />
|
||||
</FrameLayout>
|
||||
</FrameLayout>
|
||||
|
|
|
|||
|
|
@ -26,11 +26,13 @@ import com.google.firebase.remoteconfig.FirebaseRemoteConfigSettings
|
|||
import com.habitrpg.android.habitica.data.ApiClient
|
||||
import com.habitrpg.android.habitica.helpers.AdHandler
|
||||
import com.habitrpg.android.habitica.helpers.AmplitudeManager
|
||||
import com.habitrpg.android.habitica.helpers.AppConfigManager
|
||||
import com.habitrpg.android.habitica.helpers.notifications.PushNotificationManager
|
||||
import com.habitrpg.android.habitica.modules.AuthenticationHandler
|
||||
import com.habitrpg.android.habitica.ui.activities.BaseActivity
|
||||
import com.habitrpg.android.habitica.ui.activities.LoginActivity
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
|
||||
import com.habitrpg.common.habitica.extensions.DataBindingUtils
|
||||
import com.habitrpg.common.habitica.extensions.setupCoil
|
||||
import com.habitrpg.common.habitica.helpers.AnalyticsManager
|
||||
import com.habitrpg.common.habitica.helpers.ExceptionHandler
|
||||
|
|
@ -77,7 +79,6 @@ abstract class HabiticaBaseApplication : Application(), Application.ActivityLife
|
|||
setupAdHandler()
|
||||
HabiticaIconsHelper.init(this)
|
||||
MarkdownParser.setup(this)
|
||||
|
||||
AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)
|
||||
|
||||
setupCoil()
|
||||
|
|
|
|||
|
|
@ -286,6 +286,7 @@ class TaskRepositoryImpl(
|
|||
val savedTask = apiClient.updateTask(id, unmanagedTask)
|
||||
savedTask?.position = task.position
|
||||
savedTask?.id = task.id
|
||||
savedTask?.ownerID = task.ownerID
|
||||
if (savedTask != null) {
|
||||
savedTask.tags = task.tags
|
||||
localRepository.save(savedTask)
|
||||
|
|
|
|||
|
|
@ -244,7 +244,7 @@ class ClassSelectionActivity : BaseActivity() {
|
|||
private fun displayClassChanged() {
|
||||
val alert = HabiticaAlertDialog(this)
|
||||
alert.setTitle(getString(R.string.class_changed, className))
|
||||
alert.setMessage(getString(R.string.class_changed_description))
|
||||
alert.setMessage(getString(R.string.class_changed_description, className))
|
||||
alert.addButton(getString(R.string.complete_tutorial), true)
|
||||
alert.enqueue()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -65,6 +65,7 @@ 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.common.habitica.extensions.DataBindingUtils
|
||||
import com.habitrpg.common.habitica.extensions.dpToPx
|
||||
import com.habitrpg.common.habitica.extensions.getThemeColor
|
||||
import com.habitrpg.common.habitica.extensions.isUsingNightModeResources
|
||||
|
|
@ -178,6 +179,7 @@ open class MainActivity : BaseActivity(), SnackbarActivity {
|
|||
}
|
||||
launchTrace?.start()
|
||||
super.onCreate(savedInstanceState)
|
||||
DataBindingUtils.configManager = appConfigManager
|
||||
|
||||
if (!viewModel.isAuthenticated) {
|
||||
val intent = Intent(this, IntroActivity::class.java)
|
||||
|
|
|
|||
|
|
@ -35,9 +35,11 @@ import com.habitrpg.android.habitica.ui.views.SegmentedControl
|
|||
import com.habitrpg.android.habitica.ui.views.equipment.AvatarCustomizationOverviewView
|
||||
import com.habitrpg.android.habitica.ui.views.equipment.EquipmentOverviewView
|
||||
import com.habitrpg.common.habitica.helpers.launchCatching
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import kotlinx.coroutines.flow.firstOrNull
|
||||
import javax.inject.Inject
|
||||
|
||||
@AndroidEntryPoint
|
||||
open class AvatarOverviewFragment :
|
||||
BaseMainFragment<FragmentComposeScrollingBinding>(),
|
||||
AdapterView.OnItemSelectedListener {
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ import com.habitrpg.common.habitica.helpers.ExceptionHandler
|
|||
import com.habitrpg.common.habitica.helpers.RecyclerViewState
|
||||
import com.habitrpg.common.habitica.helpers.launchCatching
|
||||
import kotlinx.coroutines.flow.filter
|
||||
import kotlinx.coroutines.flow.firstOrNull
|
||||
import kotlinx.coroutines.flow.map
|
||||
import kotlinx.coroutines.launch
|
||||
import javax.inject.Inject
|
||||
|
|
@ -189,6 +190,16 @@ open class ShopFragment : BaseMainFragment<FragmentRefreshRecyclerviewBinding>()
|
|||
view.post { setGridSpanCount(view.width) }
|
||||
|
||||
context?.let { analyticsManager.logEvent("open_shop", bundleOf(Pair("shopIdentifier", shopIdentifier))) }
|
||||
|
||||
lifecycleScope.launchCatching {
|
||||
inventoryRepository.getOwnedItems()
|
||||
.collect { adapter?.setOwnedItems(it) }
|
||||
}
|
||||
lifecycleScope.launchCatching {
|
||||
inventoryRepository.getInAppRewards()
|
||||
.map { rewards -> rewards.map { it.key } }
|
||||
.collect { adapter?.setPinnedItemKeys(it) }
|
||||
}
|
||||
}
|
||||
|
||||
open fun initializeCurrencyViews() {
|
||||
|
|
@ -207,7 +218,7 @@ open class ShopFragment : BaseMainFragment<FragmentRefreshRecyclerviewBinding>()
|
|||
alert.addButton(R.string.choose_class, true) { _, _ ->
|
||||
lifecycleScope.launch(ExceptionHandler.coroutine()) {
|
||||
userRepository.changeClass(classIdentifier)
|
||||
adapter?.notifyDataSetChanged()
|
||||
loadMarketGear()
|
||||
}
|
||||
}
|
||||
alert.addButton(R.string.dialog_go_back, false)
|
||||
|
|
@ -232,19 +243,19 @@ open class ShopFragment : BaseMainFragment<FragmentRefreshRecyclerviewBinding>()
|
|||
binding?.recyclerView?.state = RecyclerViewState.FAILED
|
||||
}) {
|
||||
val shop1 = inventoryRepository.retrieveShopInventory(shopUrl) ?: return@launchCatching
|
||||
if (shop1.identifier == Shop.MARKET) {
|
||||
val user = userViewModel.user.value
|
||||
val specialCategory = ShopCategory()
|
||||
specialCategory.text = getString(R.string.special)
|
||||
if (user?.isValid == true && user.purchased?.plan?.isActive == true) {
|
||||
val item = ShopItem.makeGemItem(context?.resources)
|
||||
item.limitedNumberLeft = user.purchased?.plan?.numberOfGemsLeft
|
||||
specialCategory.items.add(item)
|
||||
}
|
||||
specialCategory.items.add(ShopItem.makeFortifyItem(context?.resources))
|
||||
shop1.categories.add(specialCategory)
|
||||
}
|
||||
when (shop1.identifier) {
|
||||
Shop.MARKET -> {
|
||||
val user = userViewModel.user.value
|
||||
val specialCategory = ShopCategory()
|
||||
specialCategory.text = getString(R.string.special)
|
||||
if (user?.isValid == true && user.purchased?.plan?.isActive == true) {
|
||||
val item = ShopItem.makeGemItem(context?.resources)
|
||||
item.limitedNumberLeft = user.purchased?.plan?.numberOfGemsLeft
|
||||
specialCategory.items.add(item)
|
||||
}
|
||||
specialCategory.items.add(ShopItem.makeFortifyItem(context?.resources))
|
||||
shop1.categories.add(specialCategory)
|
||||
}
|
||||
Shop.TIME_TRAVELERS_SHOP -> {
|
||||
formatTimeTravelersShop(shop1)
|
||||
}
|
||||
|
|
@ -260,16 +271,6 @@ open class ShopFragment : BaseMainFragment<FragmentRefreshRecyclerviewBinding>()
|
|||
adapter?.setShop(shop1)
|
||||
binding?.refreshLayout?.isRefreshing = false
|
||||
}
|
||||
|
||||
lifecycleScope.launchCatching {
|
||||
inventoryRepository.getOwnedItems()
|
||||
.collect { adapter?.setOwnedItems(it) }
|
||||
}
|
||||
lifecycleScope.launchCatching {
|
||||
inventoryRepository.getInAppRewards()
|
||||
.map { rewards -> rewards.map { it.key } }
|
||||
.collect { adapter?.setPinnedItemKeys(it) }
|
||||
}
|
||||
}
|
||||
|
||||
private fun formatTimeTravelersShop(shop: Shop): Shop {
|
||||
|
|
@ -300,19 +301,17 @@ open class ShopFragment : BaseMainFragment<FragmentRefreshRecyclerviewBinding>()
|
|||
private fun loadMarketGear() {
|
||||
lifecycleScope.launchCatching {
|
||||
val shop = inventoryRepository.retrieveMarketGear()
|
||||
inventoryRepository.getOwnedEquipment()
|
||||
.map { equipment -> equipment.map { it.key } }
|
||||
.collect { equipment ->
|
||||
for (category in shop?.categories ?: emptyList()) {
|
||||
val items = category.items.asSequence().filter {
|
||||
!equipment.contains(it.key)
|
||||
}.sortedBy { it.locked }.toList()
|
||||
category.items.clear()
|
||||
category.items.addAll(items)
|
||||
}
|
||||
gearCategories = shop?.categories
|
||||
adapter?.gearCategories = shop?.categories ?: mutableListOf()
|
||||
}
|
||||
val equipment = inventoryRepository.getOwnedEquipment()
|
||||
.map { equipment -> equipment.map { it.key } }.firstOrNull()
|
||||
for (category in shop?.categories ?: emptyList()) {
|
||||
val items = category.items.asSequence().filter {
|
||||
equipment?.contains(it.key) == false
|
||||
}.sortedBy { it.locked }.toList()
|
||||
category.items.clear()
|
||||
category.items.addAll(items)
|
||||
}
|
||||
gearCategories = shop?.categories
|
||||
adapter?.gearCategories = shop?.categories ?: mutableListOf()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import com.habitrpg.android.habitica.R
|
|||
import com.habitrpg.common.habitica.extensions.dpToPx
|
||||
|
||||
class HabiticaProgressDialog(context: Context) : HabiticaAlertDialog(context) {
|
||||
|
||||
companion object {
|
||||
fun show(context: Context?, titleID: Int): HabiticaProgressDialog? {
|
||||
return show(context, context?.getString(titleID))
|
||||
|
|
@ -12,8 +13,8 @@ class HabiticaProgressDialog(context: Context) : HabiticaAlertDialog(context) {
|
|||
|
||||
fun show(context: Context?, title: String?): HabiticaProgressDialog? {
|
||||
val dialog = context?.let { HabiticaProgressDialog(it) }
|
||||
context?.let { dialog?.setAdditionalContentView(R.layout.circular_progress) }
|
||||
dialog?.dialogWidth = 150.dpToPx(context)
|
||||
dialog?.setAdditionalContentView(R.layout.circular_progress)
|
||||
dialog?.dialogWidth = 300.dpToPx(context)
|
||||
dialog?.setTitle(title)
|
||||
dialog?.enqueue()
|
||||
return dialog
|
||||
|
|
|
|||
|
|
@ -19,13 +19,20 @@ import com.habitrpg.android.habitica.ui.activities.MainActivity
|
|||
import com.habitrpg.common.habitica.extensions.DataBindingUtils
|
||||
import com.habitrpg.common.habitica.extensions.loadImage
|
||||
import com.habitrpg.common.habitica.helpers.launchCatching
|
||||
import dagger.hilt.EntryPoint
|
||||
import dagger.hilt.InstallIn
|
||||
import dagger.hilt.android.EntryPointAccessors
|
||||
import dagger.hilt.components.SingletonComponent
|
||||
import java.util.Locale
|
||||
import javax.inject.Inject
|
||||
|
||||
class PetSuggestHatchDialog(context: Context) : HabiticaAlertDialog(context) {
|
||||
|
||||
@Inject
|
||||
lateinit var hatchPetUseCase: HatchPetUseCase
|
||||
@EntryPoint
|
||||
@InstallIn(SingletonComponent::class)
|
||||
interface PetSuggestHatchDialogEntryPoint {
|
||||
fun useCase(): HatchPetUseCase
|
||||
}
|
||||
var hatchPetUseCase: HatchPetUseCase
|
||||
|
||||
private lateinit var binding: DialogPetSuggestHatchBinding
|
||||
|
||||
|
|
@ -34,6 +41,9 @@ class PetSuggestHatchDialog(context: Context) : HabiticaAlertDialog(context) {
|
|||
inflater?.let { binding = DialogPetSuggestHatchBinding.inflate(it) }
|
||||
setAdditionalContentView(binding.root)
|
||||
binding.shimmerView.startShimmer()
|
||||
|
||||
val hiltEntryPoint = EntryPointAccessors.fromApplication(context, PetSuggestHatchDialogEntryPoint::class.java)
|
||||
hatchPetUseCase = hiltEntryPoint.useCase()
|
||||
}
|
||||
|
||||
fun configure(
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
NAME=4.1.8
|
||||
CODE=5821
|
||||
NAME=4.2
|
||||
CODE=5851
|
||||
Loading…
Reference in a new issue