mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-21 09:20:19 +01:00
Fix BackupSubscriptionCheckJob tests.
This commit is contained in:
@@ -269,8 +269,27 @@ class BackupStateObserver(
|
||||
|
||||
Log.d(TAG, "[getNetworkBackupState][subscriptionStateMismatchDetected] hasActiveGooglePlayBillingSubscription: $hasActiveGooglePlayBillingSubscription")
|
||||
|
||||
val activeSubscription = withContext(Dispatchers.IO) {
|
||||
RecurringInAppPaymentRepository.getActiveSubscriptionSync(InAppPaymentSubscriberRecord.Type.BACKUP).getOrNull()
|
||||
val activeSubscriptionResult = withContext(Dispatchers.IO) {
|
||||
RecurringInAppPaymentRepository.getActiveSubscriptionSync(InAppPaymentSubscriberRecord.Type.BACKUP)
|
||||
}
|
||||
|
||||
val activeSubscription: ActiveSubscription? = when (activeSubscriptionResult) {
|
||||
is NetworkResult.ApplicationError<ActiveSubscription> -> {
|
||||
Log.w(TAG, "[getNetworkBackupState][subscriptionStateMismatchDetected] Failed to load active subscription due to an application error.", activeSubscriptionResult.getCause(), true)
|
||||
return getStateOnError()
|
||||
}
|
||||
is NetworkResult.NetworkError<ActiveSubscription> -> {
|
||||
Log.w(TAG, "[getNetworkBackupState][subscriptionStateMismatchDetected] Failed to load active subscription due to a network error.", activeSubscriptionResult.getCause(), true)
|
||||
return getStateOnError()
|
||||
}
|
||||
is NetworkResult.StatusCodeError<ActiveSubscription> -> {
|
||||
Log.i(TAG, "[getNetworkBackupState][subscriptionStateMismatchDetected] Failed to load active subscription due to a status code error.", activeSubscriptionResult.getCause(), true)
|
||||
null
|
||||
}
|
||||
is NetworkResult.Success<ActiveSubscription> -> {
|
||||
Log.i(TAG, "[getNetworkBackupState][subscriptionStateMismatchDetected] Successfully loaded active subscription.", true)
|
||||
activeSubscriptionResult.result
|
||||
}
|
||||
}
|
||||
|
||||
val hasActiveSignalSubscription = activeSubscription?.isActive == true
|
||||
@@ -358,10 +377,10 @@ class BackupStateObserver(
|
||||
RecurringInAppPaymentRepository.getActiveSubscriptionSync(InAppPaymentSubscriberRecord.Type.BACKUP)
|
||||
}
|
||||
|
||||
return if (activeSubscription.isSuccess) {
|
||||
return if (activeSubscription is NetworkResult.Success) {
|
||||
Log.d(TAG, "[getPaidBackupState] Retrieved subscription details.")
|
||||
|
||||
val subscription = activeSubscription.getOrThrow().activeSubscription
|
||||
val subscription = activeSubscription.successOrThrow().activeSubscription
|
||||
if (subscription != null) {
|
||||
Log.d(TAG, "[getPaidBackupState] Subscription found. Updating UI state with subscription details. Status: ${subscription.status}")
|
||||
|
||||
|
||||
@@ -11,6 +11,10 @@ import org.thoughtcrime.securesms.backup.v2.MessageBackupTier
|
||||
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.toPaymentSourceType
|
||||
import org.thoughtcrime.securesms.components.settings.app.subscription.RecurringInAppPaymentRepository.cancelActiveSubscriptionIfNecessarySync
|
||||
import org.thoughtcrime.securesms.components.settings.app.subscription.RecurringInAppPaymentRepository.cancelActiveSubscriptionSync
|
||||
import org.thoughtcrime.securesms.components.settings.app.subscription.RecurringInAppPaymentRepository.getActiveSubscriptionSync
|
||||
import org.thoughtcrime.securesms.components.settings.app.subscription.RecurringInAppPaymentRepository.rotateSubscriberIdSync
|
||||
import org.thoughtcrime.securesms.database.InAppPaymentTable
|
||||
import org.thoughtcrime.securesms.database.SignalDatabase
|
||||
import org.thoughtcrime.securesms.database.model.InAppPaymentSubscriberRecord
|
||||
@@ -25,6 +29,7 @@ import org.thoughtcrime.securesms.storage.StorageSyncHelper
|
||||
import org.thoughtcrime.securesms.subscription.LevelUpdate
|
||||
import org.thoughtcrime.securesms.subscription.LevelUpdateOperation
|
||||
import org.thoughtcrime.securesms.subscription.Subscription
|
||||
import org.whispersystems.signalservice.api.NetworkResult
|
||||
import org.whispersystems.signalservice.api.storage.IAPSubscriptionId
|
||||
import org.whispersystems.signalservice.api.subscriptions.ActiveSubscription
|
||||
import org.whispersystems.signalservice.api.subscriptions.IdempotencyKey
|
||||
@@ -51,7 +56,7 @@ object RecurringInAppPaymentRepository {
|
||||
@CheckResult
|
||||
fun getActiveSubscription(type: InAppPaymentSubscriberRecord.Type): Single<ActiveSubscription> {
|
||||
return Single.fromCallable {
|
||||
getActiveSubscriptionSync(type).getOrThrow()
|
||||
getActiveSubscriptionSync(type).successOrThrow()
|
||||
}.subscribeOn(Schedulers.io())
|
||||
}
|
||||
|
||||
@@ -77,26 +82,23 @@ object RecurringInAppPaymentRepository {
|
||||
* Gets the active subscription if it exists for the given [InAppPaymentSubscriberRecord.Type]
|
||||
*/
|
||||
@WorkerThread
|
||||
fun getActiveSubscriptionSync(type: InAppPaymentSubscriberRecord.Type): Result<ActiveSubscription> {
|
||||
fun getActiveSubscriptionSync(type: InAppPaymentSubscriberRecord.Type): NetworkResult<ActiveSubscription> {
|
||||
if (type == InAppPaymentSubscriberRecord.Type.BACKUP && SignalStore.backup.backupTierInternalOverride == MessageBackupTier.PAID) {
|
||||
Log.d(TAG, "Returning mock paid subscription.")
|
||||
return Result.success(MOCK_PAID_SUBSCRIPTION)
|
||||
return NetworkResult.Success(MOCK_PAID_SUBSCRIPTION)
|
||||
}
|
||||
|
||||
val response = InAppPaymentsRepository.getSubscriber(type)?.let {
|
||||
donationsService.getSubscription(it.subscriberId)
|
||||
} ?: return Result.success(ActiveSubscription.EMPTY)
|
||||
} ?: return NetworkResult.Success(ActiveSubscription.EMPTY)
|
||||
|
||||
return try {
|
||||
val result = response.resultOrThrow
|
||||
response.result.ifPresent { result ->
|
||||
if (result.isActive && result.activeSubscription.endOfCurrentPeriod > SignalStore.inAppPayments.getLastEndOfPeriod()) {
|
||||
InAppPaymentKeepAliveJob.enqueueAndTrackTime(System.currentTimeMillis().milliseconds)
|
||||
}
|
||||
|
||||
Result.success(result)
|
||||
} catch (e: Exception) {
|
||||
Result.failure(e)
|
||||
}
|
||||
|
||||
return response.toNetworkResult()
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user