Display descriptive error using payment data instead of generic error.

This commit is contained in:
Alex Hart 2024-12-06 10:28:21 -04:00 committed by Greyson Parrelli
parent 64ad33b959
commit 6315c4e2e8
3 changed files with 6 additions and 4 deletions

View file

@ -154,6 +154,7 @@ object InAppPaymentsRepository {
return Completable.fromAction {
val inAppPayment = SignalDatabase.inAppPayments.getById(inAppPaymentId)!!
if (inAppPayment.data.error == null) {
Log.d(TAG, "Setting error on InAppPayment[$inAppPaymentId]")
SignalDatabase.inAppPayments.update(
inAppPayment.copy(
notified = false,

View file

@ -9,6 +9,7 @@ import org.signal.donations.PaymentSourceType
import org.thoughtcrime.securesms.badges.models.Badge
import org.thoughtcrime.securesms.components.settings.app.subscription.DonationSerializationHelper.toFiatMoney
import org.thoughtcrime.securesms.components.settings.app.subscription.boost.Boost
import org.thoughtcrime.securesms.components.settings.app.subscription.donate.InAppPaymentError
import org.thoughtcrime.securesms.components.settings.app.subscription.errors.DonationError
import org.thoughtcrime.securesms.components.settings.app.subscription.errors.DonationError.BadgeRedemptionError
import org.thoughtcrime.securesms.components.settings.app.subscription.errors.DonationErrorSource
@ -137,8 +138,8 @@ class OneTimeInAppPaymentRepository(private val donationsService: DonationsServi
}.take(1).firstOrError().timeout(10, TimeUnit.SECONDS, Single.error(timeoutError))
}.map {
if (it.data.error != null) {
Log.d(TAG, "Failure during redemption chain.", true)
throw DonationError.genericBadgeRedemptionFailure(DonationErrorSource.MONTHLY)
Log.d(TAG, "Failure during redemption chain: ${it.data.error}", true)
throw InAppPaymentError(it.data.error)
}
it
}.ignoreElement()

View file

@ -11,7 +11,7 @@ import org.thoughtcrime.securesms.badges.Badges
import org.thoughtcrime.securesms.components.settings.app.subscription.InAppPaymentsRepository.requireSubscriberType
import org.thoughtcrime.securesms.components.settings.app.subscription.InAppPaymentsRepository.toErrorSource
import org.thoughtcrime.securesms.components.settings.app.subscription.InAppPaymentsRepository.toPaymentSourceType
import org.thoughtcrime.securesms.components.settings.app.subscription.errors.DonationError
import org.thoughtcrime.securesms.components.settings.app.subscription.donate.InAppPaymentError
import org.thoughtcrime.securesms.components.settings.app.subscription.errors.DonationError.BadgeRedemptionError
import org.thoughtcrime.securesms.database.InAppPaymentTable
import org.thoughtcrime.securesms.database.SignalDatabase
@ -247,7 +247,7 @@ object RecurringInAppPaymentRepository {
}.take(1).map {
if (it.data.error != null) {
Log.d(TAG, "Failure during redemption chain: ${it.data.error}", true)
throw DonationError.genericBadgeRedemptionFailure(errorSource)
throw InAppPaymentError(it.data.error)
}
it
}.firstOrError()