From 7bca2108648aea113e8cc1e9c1e19154d73c7c2e Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Sun, 2 Apr 2023 10:35:38 +0200 Subject: [PATCH] fix sprite substitution --- Habitica/res/layout/circular_progress.xml | 2 +- .../habitica/HabiticaBaseApplication.kt | 3 +- .../data/implementation/TaskRepositoryImpl.kt | 1 + .../ui/activities/ClassSelectionActivity.kt | 2 +- .../habitica/ui/activities/MainActivity.kt | 2 + .../customization/AvatarOverviewFragment.kt | 2 + .../fragments/inventory/shops/ShopFragment.kt | 71 +++++++++---------- .../views/dialogs/HabiticaProgressDialog.kt | 5 +- .../ui/views/dialogs/PetSuggestHatchDialog.kt | 16 ++++- version.properties | 4 +- 10 files changed, 62 insertions(+), 46 deletions(-) diff --git a/Habitica/res/layout/circular_progress.xml b/Habitica/res/layout/circular_progress.xml index 84aa5df2f..53a558221 100644 --- a/Habitica/res/layout/circular_progress.xml +++ b/Habitica/res/layout/circular_progress.xml @@ -11,4 +11,4 @@ android:progressTint="@color/text_brand_neon" android:layout_gravity="center" android:indeterminate="true" /> - \ No newline at end of file + diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaBaseApplication.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaBaseApplication.kt index 60af70990..6b54676c0 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaBaseApplication.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/HabiticaBaseApplication.kt @@ -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() diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.kt index 3aa0946fb..60a9850a4 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/data/implementation/TaskRepositoryImpl.kt @@ -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) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ClassSelectionActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ClassSelectionActivity.kt index b79cdc72d..89bcefb0c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ClassSelectionActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/ClassSelectionActivity.kt @@ -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() } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt index 407001e4b..ee53b5280 100755 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.kt @@ -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) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarOverviewFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarOverviewFragment.kt index 2e2f0471e..7e29a36d3 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarOverviewFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarOverviewFragment.kt @@ -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(), AdapterView.OnItemSelectedListener { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/shops/ShopFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/shops/ShopFragment.kt index 26e2a01de..0b9357a18 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/shops/ShopFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/shops/ShopFragment.kt @@ -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() 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() 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() 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() 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() 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() } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/HabiticaProgressDialog.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/HabiticaProgressDialog.kt index 938125ffa..80202daee 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/HabiticaProgressDialog.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/HabiticaProgressDialog.kt @@ -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 diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/PetSuggestHatchDialog.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/PetSuggestHatchDialog.kt index ea7e754f9..8c8cb3cf5 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/PetSuggestHatchDialog.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/PetSuggestHatchDialog.kt @@ -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( diff --git a/version.properties b/version.properties index fbaddb34c..3c03a4243 100644 --- a/version.properties +++ b/version.properties @@ -1,2 +1,2 @@ -NAME=4.1.8 -CODE=5821 \ No newline at end of file +NAME=4.2 +CODE=5851 \ No newline at end of file