From 6860f969734756f60e5f7d46cca0fc138270eadd Mon Sep 17 00:00:00 2001
From: Alex Hart <alex@signal.org>
Date: Wed, 20 Apr 2022 15:52:45 -0300
Subject: [PATCH] Add subscription retry on 402 and print out status when we
 think a sub is active.

---
 .../jobs/SubscriptionReceiptRequestResponseJob.java        | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/SubscriptionReceiptRequestResponseJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/SubscriptionReceiptRequestResponseJob.java
index 9dc8a1c68e..3671fffade 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/jobs/SubscriptionReceiptRequestResponseJob.java
+++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/SubscriptionReceiptRequestResponseJob.java
@@ -157,7 +157,7 @@ public class SubscriptionReceiptRequestResponseJob extends BaseJob {
       Log.w(TAG, "Subscription is not yet active. Status: " + subscription.getStatus(), true);
       throw new RetryableException();
     } else {
-      Log.i(TAG, "Recording end of period from active subscription.", true);
+      Log.i(TAG, "Recording end of period from active subscription: " + subscription.getStatus(), true);
       SignalStore.donationsValues().setLastEndOfPeriod(subscription.getEndOfCurrentPeriod());
       MultiDeviceSubscriptionSyncRequestJob.enqueue();
     }
@@ -240,9 +240,8 @@ public class SubscriptionReceiptRequestResponseJob extends BaseJob {
         DonationError.routeDonationError(context, DonationError.genericBadgeRedemptionFailure(getErrorSource()));
         throw new Exception(response.getApplicationError().get());
       case 402:
-        Log.w(TAG, "Subscription payment failure in credential response.", response.getApplicationError().get(), true);
-        onPaymentFailure(null, null, 0L);
-        throw new Exception(response.getApplicationError().get());
+        Log.w(TAG, "Payment looks like a failure but may be retried.", response.getApplicationError().get(), true);
+        throw new RetryableException();
       case 403:
         Log.w(TAG, "SubscriberId password mismatch or account auth was present.", response.getApplicationError().get(), true);
         DonationError.routeDonationError(context, DonationError.genericBadgeRedemptionFailure(getErrorSource()));
-- 
GitLab