From fdf3f19d094540e0c47626810f3f252a41ffdf2e Mon Sep 17 00:00:00 2001 From: Isabel Martin Date: Mon, 16 Sep 2024 13:07:50 -0700 Subject: [PATCH] MBL-1737: When user has no saved cards and stripe link fails or is canceled there is a crash --- .../compose/projectpage/CheckoutScreen.kt | 2 +- .../ui/fragments/BackingAddOnsFragment.kt | 8 +++++++- .../ui/fragments/CrowdfundCheckoutFragment.kt | 16 +++++++++++++--- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/kickstarter/ui/activities/compose/projectpage/CheckoutScreen.kt b/app/src/main/java/com/kickstarter/ui/activities/compose/projectpage/CheckoutScreen.kt index f7d2454f13..4b9ff77217 100644 --- a/app/src/main/java/com/kickstarter/ui/activities/compose/projectpage/CheckoutScreen.kt +++ b/app/src/main/java/com/kickstarter/ui/activities/compose/projectpage/CheckoutScreen.kt @@ -562,7 +562,7 @@ private fun UpdateSelectedCardIfNewCardAdded( storedCards: List, onOptionSelected: (StoredCard?) -> Unit ) { - if (index.value != storedCards.size) { + if (index.value != storedCards.size && storedCards.isNotEmpty()) { onOptionSelected(storedCards.first()) index.value = storedCards.size } diff --git a/app/src/main/java/com/kickstarter/ui/fragments/BackingAddOnsFragment.kt b/app/src/main/java/com/kickstarter/ui/fragments/BackingAddOnsFragment.kt index e68e3486bd..20c2676e75 100644 --- a/app/src/main/java/com/kickstarter/ui/fragments/BackingAddOnsFragment.kt +++ b/app/src/main/java/com/kickstarter/ui/fragments/BackingAddOnsFragment.kt @@ -50,7 +50,13 @@ class BackingAddOnsFragment : Fragment() { } viewModelC.provideErrorAction { message -> - showErrorToast(context, this, message ?: getString(R.string.general_error_something_wrong)) + activity?.runOnUiThread { + showErrorToast( + context, + this, + message ?: getString(R.string.general_error_something_wrong) + ) + } } // Dispose of the Composition when the view's LifecycleOwner diff --git a/app/src/main/java/com/kickstarter/ui/fragments/CrowdfundCheckoutFragment.kt b/app/src/main/java/com/kickstarter/ui/fragments/CrowdfundCheckoutFragment.kt index c962bda996..77cf00bfe6 100644 --- a/app/src/main/java/com/kickstarter/ui/fragments/CrowdfundCheckoutFragment.kt +++ b/app/src/main/java/com/kickstarter/ui/fragments/CrowdfundCheckoutFragment.kt @@ -167,7 +167,13 @@ class CrowdfundCheckoutFragment : Fragment() { } else { binding?.composeView?.let { view -> context?.let { - showErrorToast(it, view, error?.message ?: getString(R.string.general_error_something_wrong)) + activity?.runOnUiThread { + showErrorToast( + it, + view, + error?.message ?: getString(R.string.general_error_something_wrong) + ) + } } } } @@ -197,7 +203,9 @@ class CrowdfundCheckoutFragment : Fragment() { is PaymentSheetResult.Canceled -> { binding?.composeView?.let { view -> context?.let { - showErrorToast(it, view, getString(R.string.general_error_oops)) + activity?.runOnUiThread { + showErrorToast(it, view, getString(R.string.general_error_oops)) + } } } } @@ -205,7 +213,9 @@ class CrowdfundCheckoutFragment : Fragment() { binding?.composeView?.let { view -> context?.let { val errorMessage = paymentSheetResult.error.localizedMessage ?: getString(R.string.general_error_something_wrong) - showErrorToast(it, view, errorMessage) + activity?.runOnUiThread { + showErrorToast(it, view, errorMessage) + } } } }