Fix donation payment update issue.

This commit is contained in:
Alex Hart 2023-01-09 15:20:41 -04:00
parent fa613557e8
commit 2fd6b7c49e
3 changed files with 25 additions and 1 deletions

View file

@ -11,6 +11,7 @@ import org.thoughtcrime.securesms.database.SignalDatabase
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
import org.thoughtcrime.securesms.jobmanager.JobTracker
import org.thoughtcrime.securesms.jobs.MultiDeviceSubscriptionSyncRequestJob
import org.thoughtcrime.securesms.jobs.SubscriptionKeepAliveJob
import org.thoughtcrime.securesms.jobs.SubscriptionReceiptRequestResponseJob
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.recipients.Recipient
@ -43,6 +44,11 @@ class MonthlyDonationRepository(private val donationsService: DonationsService)
Single.fromCallable { donationsService.getSubscription(localSubscription.subscriberId) }
.subscribeOn(Schedulers.io())
.flatMap(ServiceResponse<ActiveSubscription>::flattenResult)
.doOnSuccess { activeSubscription ->
if (activeSubscription.isActive && activeSubscription.activeSubscription.endOfCurrentPeriod > SignalStore.donationsValues().getLastEndOfPeriod()) {
SubscriptionKeepAliveJob.enqueueAndTrackTime(System.currentTimeMillis())
}
}
} else {
Single.just(ActiveSubscription.EMPTY)
}

View file

@ -22,7 +22,7 @@ data class ManageDonationsState(
}
}
fun getStateFromActiveSubscription(activeSubscription: ActiveSubscription): SubscriptionRedemptionState? {
private fun getStateFromActiveSubscription(activeSubscription: ActiveSubscription): SubscriptionRedemptionState? {
return when {
activeSubscription.isFailedPayment -> SubscriptionRedemptionState.FAILED
activeSubscription.isInProgress -> SubscriptionRedemptionState.IN_PROGRESS

View file

@ -0,0 +1,18 @@
package org.whispersystems.signalservice.api.subscriptions;
import org.junit.Test;
import org.whispersystems.signalservice.internal.util.JsonUtil;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
public class ActiveSubscriptionTest {
@Test
public void givenActiveSubscription_whenIIsPaymentFailure_thenIExpectFalse() throws Exception {
String input = "{\"subscription\":{\"level\":2000,\"billingCycleAnchor\":1636124746.000000000,\"endOfCurrentPeriod\":1675609546.000000000,\"active\":true,\"cancelAtPeriodEnd\":false,\"currency\":\"USD\",\"amount\":2000,\"status\":\"active\"},\"chargeFailure\":null}";
ActiveSubscription activeSubscription = JsonUtil.fromJson(input, ActiveSubscription.class);
assertTrue(activeSubscription.isActive());
assertFalse(activeSubscription.isFailedPayment());
}
}