From e0553a59d5b46d046e27decf0d685545d3816d12 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Wed, 22 Jan 2025 13:38:53 -0400 Subject: [PATCH] Add label when checking donation. --- .../subscription/InAppPaymentsRepository.kt | 4 +++- .../donate/DonateToSignalViewModel.kt | 2 ++ .../manage/ActiveSubscriptionPreference.kt | 6 ++++++ .../manage/DonationRedemptionJobStatus.kt | 18 +++++++++++++----- .../manage/ManageDonationsState.kt | 7 ++++--- .../manage/ManageDonationsViewModel.kt | 1 + app/src/main/res/values/strings.xml | 2 ++ 7 files changed, 31 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/InAppPaymentsRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/InAppPaymentsRepository.kt index 6cc2d5532d..2f88606fb7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/InAppPaymentsRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/InAppPaymentsRepository.kt @@ -523,7 +523,9 @@ object InAppPaymentsRepository { ) } InAppPaymentTable.State.PENDING -> { - if (inAppPayment.data.redemption?.stage == InAppPaymentData.RedemptionState.Stage.REDEMPTION_STARTED) { + if (inAppPayment.data.redemption?.keepAlive == true) { + DonationRedemptionJobStatus.PendingKeepAlive + } else if (inAppPayment.data.redemption?.stage == InAppPaymentData.RedemptionState.Stage.REDEMPTION_STARTED) { DonationRedemptionJobStatus.PendingReceiptRedemption } else { DonationRedemptionJobStatus.PendingReceiptRequest diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/DonateToSignalViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/DonateToSignalViewModel.kt index 2c96a69f3d..a0dc0e5023 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/DonateToSignalViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/DonateToSignalViewModel.kt @@ -240,6 +240,8 @@ class DonateToSignalViewModel( when (it) { is DonationRedemptionJobStatus.PendingExternalVerification -> Optional.ofNullable(it.pendingOneTimeDonation) + DonationRedemptionJobStatus.PendingKeepAlive -> error("Invalid state for one time donation") + DonationRedemptionJobStatus.PendingReceiptRedemption, DonationRedemptionJobStatus.PendingReceiptRequest, DonationRedemptionJobStatus.FailedSubscription, diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/manage/ActiveSubscriptionPreference.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/manage/ActiveSubscriptionPreference.kt index 8d82fddf07..9b8f8d2039 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/manage/ActiveSubscriptionPreference.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/manage/ActiveSubscriptionPreference.kt @@ -82,6 +82,7 @@ object ActiveSubscriptionPreference { ManageDonationsState.RedemptionState.IS_PENDING_BANK_TRANSFER -> presentPendingBankTransferState(model) ManageDonationsState.RedemptionState.IN_PROGRESS -> presentInProgressState() ManageDonationsState.RedemptionState.FAILED -> presentFailureState(model) + ManageDonationsState.RedemptionState.SUBSCRIPTION_REFRESH -> presentRefreshState() } } @@ -96,6 +97,11 @@ object ActiveSubscriptionPreference { progress.visible = false } + private fun presentRefreshState() { + expiry.text = context.getString(R.string.MySupportPreference__checking_subscription) + progress.visible = true + } + private fun presentPendingBankTransferState(model: Model) { expiry.text = context.getString(R.string.MySupportPreference__payment_pending) progress.visible = true diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/manage/DonationRedemptionJobStatus.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/manage/DonationRedemptionJobStatus.kt index d4ac1683e2..f5eb568fb1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/manage/DonationRedemptionJobStatus.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/manage/DonationRedemptionJobStatus.kt @@ -14,7 +14,7 @@ sealed class DonationRedemptionJobStatus { /** * No pending/running jobs for a donation type. */ - object None : DonationRedemptionJobStatus() + data object None : DonationRedemptionJobStatus() /** * Donation is pending external user verification (e.g., iDEAL). @@ -31,26 +31,34 @@ sealed class DonationRedemptionJobStatus { * * For one-time donations, pending donation data available via the store. */ - object PendingReceiptRequest : DonationRedemptionJobStatus() + data object PendingReceiptRequest : DonationRedemptionJobStatus() /** * Donation is at the receipt redemption status. * * For one-time donations, pending donation data available via the store. */ - object PendingReceiptRedemption : DonationRedemptionJobStatus() + data object PendingReceiptRedemption : DonationRedemptionJobStatus() + + /** + * Donation is being refreshed during a keep-alive. + * + * This is an invalid state for one-time donations. + */ + data object PendingKeepAlive : DonationRedemptionJobStatus() /** * Representation of a failed subscription job chain derived from no pending/running jobs and * a failure state in the store. */ - object FailedSubscription : DonationRedemptionJobStatus() + data object FailedSubscription : DonationRedemptionJobStatus() fun isInProgress(): Boolean { return when (this) { is PendingExternalVerification, PendingReceiptRedemption, - PendingReceiptRequest -> true + PendingReceiptRequest, + PendingKeepAlive -> true FailedSubscription, None -> false diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/manage/ManageDonationsState.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/manage/ManageDonationsState.kt index d212f09c37..b7127e8fc5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/manage/ManageDonationsState.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/manage/ManageDonationsState.kt @@ -36,15 +36,16 @@ data class ManageDonationsState( } sealed class TransactionState { - object Init : TransactionState() - object NetworkFailure : TransactionState() - object InTransaction : TransactionState() + data object Init : TransactionState() + data object NetworkFailure : TransactionState() + data object InTransaction : TransactionState() class NotInTransaction(val activeSubscription: ActiveSubscription) : TransactionState() } enum class RedemptionState { NONE, IN_PROGRESS, + SUBSCRIPTION_REFRESH, IS_PENDING_BANK_TRANSFER, FAILED } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/manage/ManageDonationsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/manage/ManageDonationsViewModel.kt index 0bcd7657f8..262c03ea24 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/manage/ManageDonationsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/manage/ManageDonationsViewModel.kt @@ -145,6 +145,7 @@ class ManageDonationsViewModel : ViewModel() { return when (status) { DonationRedemptionJobStatus.FailedSubscription -> ManageDonationsState.RedemptionState.FAILED DonationRedemptionJobStatus.None -> ManageDonationsState.RedemptionState.NONE + DonationRedemptionJobStatus.PendingKeepAlive -> ManageDonationsState.RedemptionState.SUBSCRIPTION_REFRESH is DonationRedemptionJobStatus.PendingExternalVerification, DonationRedemptionJobStatus.PendingReceiptRedemption, diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 91bc4560b3..1891081116 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -5828,6 +5828,8 @@ Your bank transfer of %1$s is pending. Bank transfers can take 1 to 14 business days to complete. Learn more + + Checking subscription… Update Signal