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 { return Completable.fromAction {
val inAppPayment = SignalDatabase.inAppPayments.getById(inAppPaymentId)!! val inAppPayment = SignalDatabase.inAppPayments.getById(inAppPaymentId)!!
if (inAppPayment.data.error == null) { if (inAppPayment.data.error == null) {
Log.d(TAG, "Setting error on InAppPayment[$inAppPaymentId]")
SignalDatabase.inAppPayments.update( SignalDatabase.inAppPayments.update(
inAppPayment.copy( inAppPayment.copy(
notified = false, notified = false,

View File

@@ -9,6 +9,7 @@ import org.signal.donations.PaymentSourceType
import org.thoughtcrime.securesms.badges.models.Badge 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.DonationSerializationHelper.toFiatMoney
import org.thoughtcrime.securesms.components.settings.app.subscription.boost.Boost 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
import org.thoughtcrime.securesms.components.settings.app.subscription.errors.DonationError.BadgeRedemptionError import org.thoughtcrime.securesms.components.settings.app.subscription.errors.DonationError.BadgeRedemptionError
import org.thoughtcrime.securesms.components.settings.app.subscription.errors.DonationErrorSource 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)) }.take(1).firstOrError().timeout(10, TimeUnit.SECONDS, Single.error(timeoutError))
}.map { }.map {
if (it.data.error != null) { if (it.data.error != null) {
Log.d(TAG, "Failure during redemption chain.", true) Log.d(TAG, "Failure during redemption chain: ${it.data.error}", true)
throw DonationError.genericBadgeRedemptionFailure(DonationErrorSource.MONTHLY) throw InAppPaymentError(it.data.error)
} }
it it
}.ignoreElement() }.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.requireSubscriberType
import org.thoughtcrime.securesms.components.settings.app.subscription.InAppPaymentsRepository.toErrorSource 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.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.components.settings.app.subscription.errors.DonationError.BadgeRedemptionError
import org.thoughtcrime.securesms.database.InAppPaymentTable import org.thoughtcrime.securesms.database.InAppPaymentTable
import org.thoughtcrime.securesms.database.SignalDatabase import org.thoughtcrime.securesms.database.SignalDatabase
@@ -247,7 +247,7 @@ object RecurringInAppPaymentRepository {
}.take(1).map { }.take(1).map {
if (it.data.error != null) { if (it.data.error != null) {
Log.d(TAG, "Failure during redemption chain: ${it.data.error}", true) Log.d(TAG, "Failure during redemption chain: ${it.data.error}", true)
throw DonationError.genericBadgeRedemptionFailure(errorSource) throw InAppPaymentError(it.data.error)
} }
it it
}.firstOrError() }.firstOrError()