kopia lustrzana https://github.com/ryukoposting/Signal-Android
Fix donation payment update issue.
rodzic
fa613557e8
commit
2fd6b7c49e
|
@ -11,6 +11,7 @@ import org.thoughtcrime.securesms.database.SignalDatabase
|
||||||
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
|
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
|
||||||
import org.thoughtcrime.securesms.jobmanager.JobTracker
|
import org.thoughtcrime.securesms.jobmanager.JobTracker
|
||||||
import org.thoughtcrime.securesms.jobs.MultiDeviceSubscriptionSyncRequestJob
|
import org.thoughtcrime.securesms.jobs.MultiDeviceSubscriptionSyncRequestJob
|
||||||
|
import org.thoughtcrime.securesms.jobs.SubscriptionKeepAliveJob
|
||||||
import org.thoughtcrime.securesms.jobs.SubscriptionReceiptRequestResponseJob
|
import org.thoughtcrime.securesms.jobs.SubscriptionReceiptRequestResponseJob
|
||||||
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
||||||
import org.thoughtcrime.securesms.recipients.Recipient
|
import org.thoughtcrime.securesms.recipients.Recipient
|
||||||
|
@ -43,6 +44,11 @@ class MonthlyDonationRepository(private val donationsService: DonationsService)
|
||||||
Single.fromCallable { donationsService.getSubscription(localSubscription.subscriberId) }
|
Single.fromCallable { donationsService.getSubscription(localSubscription.subscriberId) }
|
||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.flatMap(ServiceResponse<ActiveSubscription>::flattenResult)
|
.flatMap(ServiceResponse<ActiveSubscription>::flattenResult)
|
||||||
|
.doOnSuccess { activeSubscription ->
|
||||||
|
if (activeSubscription.isActive && activeSubscription.activeSubscription.endOfCurrentPeriod > SignalStore.donationsValues().getLastEndOfPeriod()) {
|
||||||
|
SubscriptionKeepAliveJob.enqueueAndTrackTime(System.currentTimeMillis())
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
Single.just(ActiveSubscription.EMPTY)
|
Single.just(ActiveSubscription.EMPTY)
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,7 @@ data class ManageDonationsState(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getStateFromActiveSubscription(activeSubscription: ActiveSubscription): SubscriptionRedemptionState? {
|
private fun getStateFromActiveSubscription(activeSubscription: ActiveSubscription): SubscriptionRedemptionState? {
|
||||||
return when {
|
return when {
|
||||||
activeSubscription.isFailedPayment -> SubscriptionRedemptionState.FAILED
|
activeSubscription.isFailedPayment -> SubscriptionRedemptionState.FAILED
|
||||||
activeSubscription.isInProgress -> SubscriptionRedemptionState.IN_PROGRESS
|
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());
|
||||||
|
}
|
||||||
|
}
|
Ładowanie…
Reference in New Issue