Fix donation payment update issue.
This commit is contained in:
parent
fa613557e8
commit
2fd6b7c49e
3 changed files with 25 additions and 1 deletions
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue