From 98f3a2957cc9fbfb5d41c13da182f2d6642c1b79 Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Fri, 27 Oct 2023 14:35:11 +0200 Subject: [PATCH] fix crash --- .../ui/activities/ClassSelectionActivity.kt | 1 - .../ui/fragments/inventory/shops/ShopFragment.kt | 5 ++--- .../preferences/AccountPreferenceFragment.kt | 4 ++-- .../ui/viewmodels/NotificationsViewModel.kt | 2 +- .../ui/views/dialogs/HabiticaProgressDialog.kt | 14 ++++++++++++-- version.properties | 2 +- 6 files changed, 18 insertions(+), 10 deletions(-) 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 2c42f7b15..5bec8dce8 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 @@ -1,6 +1,5 @@ package com.habitrpg.android.habitica.ui.activities -import android.content.Context import android.graphics.drawable.BitmapDrawable import android.graphics.drawable.Drawable import android.os.Bundle 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 6bf194965..8822e9737 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,7 +33,6 @@ import com.habitrpg.android.habitica.ui.views.CurrencyText import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaProgressDialog import com.habitrpg.android.habitica.ui.views.insufficientCurrency.InsufficientGemsDialog -import com.habitrpg.android.habitica.ui.views.insufficientCurrency.InsufficientHourglassesDialog import com.habitrpg.android.habitica.ui.views.shops.PurchaseDialog import com.habitrpg.common.habitica.helpers.ExceptionHandler import com.habitrpg.common.habitica.helpers.RecyclerViewState @@ -256,7 +255,7 @@ open class ShopFragment : BaseMainFragment() alert.setMessage(getString(R.string.change_class_equipment_warning)) alert.addButton(R.string.choose_class, true) { _, _ -> val dialog = HabiticaProgressDialog.show( - context, + requireActivity(), getString(R.string.changing_class_progress), 300 ) @@ -274,7 +273,7 @@ open class ShopFragment : BaseMainFragment() alert.setTitle(getString(R.string.class_confirmation, classIdentifier)) alert.addButton(R.string.choose_class, true) { _, _ -> val dialog = HabiticaProgressDialog.show( - context, + requireActivity(), getString(R.string.changing_class_progress), 300 ) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/AccountPreferenceFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/AccountPreferenceFragment.kt index 5c4bffedd..617424412 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/AccountPreferenceFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/AccountPreferenceFragment.kt @@ -488,7 +488,7 @@ class AccountPreferenceFragment : } private fun deleteAccount(password: String) { - val dialog = context?.let { HabiticaProgressDialog.show(it, R.string.deleting_account) } + val dialog = activity?.let { HabiticaProgressDialog.show(it, R.string.deleting_account) } lifecycleScope.launchCatching({ throwable -> dialog?.dismiss() if (throwable is HttpException && throwable.code() == 401) { @@ -537,7 +537,7 @@ class AccountPreferenceFragment : } private fun resetAccount() { - val dialog = context?.let { HabiticaProgressDialog.show(it, R.string.resetting_account) } + val dialog = activity?.let { HabiticaProgressDialog.show(it, R.string.resetting_account) } lifecycleScope.launch(ExceptionHandler.coroutine()) { userRepository.resetAccount() dialog?.dismiss() diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/NotificationsViewModel.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/NotificationsViewModel.kt index fb8724bbe..cd4819bba 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/NotificationsViewModel.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewmodels/NotificationsViewModel.kt @@ -93,7 +93,7 @@ open class NotificationsViewModel @Inject constructor( fun getNotificationCount(): Flow { return getNotifications().map { it.count { notification -> - (notification.type == Notification.Type.UNALLOCATED_STATS_POINTS.type) == hasStats + (notification.type != Notification.Type.UNALLOCATED_STATS_POINTS.type) || hasStats } }.distinctUntilChanged() } 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 a2e5c535f..c81e9ac7b 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 @@ -1,10 +1,14 @@ package com.habitrpg.android.habitica.ui.views.dialogs import android.content.Context +import androidx.appcompat.app.AppCompatActivity import androidx.compose.foundation.layout.size import androidx.compose.ui.Modifier import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.unit.dp +import androidx.fragment.app.FragmentActivity +import androidx.lifecycle.setViewTreeLifecycleOwner +import androidx.savedstate.setViewTreeSavedStateRegistryOwner import com.habitrpg.common.habitica.theme.HabiticaTheme import com.habitrpg.common.habitica.views.HabiticaCircularProgressView import com.habitrpg.common.habitica.extensions.dpToPx @@ -12,11 +16,11 @@ import com.habitrpg.common.habitica.extensions.dpToPx class HabiticaProgressDialog(context: Context) : HabiticaAlertDialog(context) { companion object { - fun show(context: Context, titleID: Int): HabiticaProgressDialog { + fun show(context: FragmentActivity, titleID: Int): HabiticaProgressDialog { return show(context, context.getString(titleID)) } - fun show(context: Context, title: String?, dialogWidth: Int = 300): HabiticaProgressDialog { + fun show(context: FragmentActivity, title: String?, dialogWidth: Int = 300): HabiticaProgressDialog { val dialog = HabiticaProgressDialog(context) val composeView = ComposeView(context) dialog.setAdditionalContentView(composeView) @@ -25,6 +29,12 @@ class HabiticaProgressDialog(context: Context) : HabiticaAlertDialog(context) { HabiticaCircularProgressView(Modifier.size(60.dp)) } } + dialog.window?.let { + dialog.additionalContentView?.setViewTreeSavedStateRegistryOwner(context) + it.decorView.setViewTreeSavedStateRegistryOwner(context) + dialog.additionalContentView?.setViewTreeLifecycleOwner(context) + it.decorView.setViewTreeLifecycleOwner(context) + } dialog.dialogWidth = dialogWidth.dpToPx(context) dialog.setTitle(title) dialog.enqueue() diff --git a/version.properties b/version.properties index a4f67b197..be4b51af0 100644 --- a/version.properties +++ b/version.properties @@ -1,2 +1,2 @@ NAME=4.3 -CODE=6711 \ No newline at end of file +CODE=6721 \ No newline at end of file