diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/InAppPaymentsRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/InAppPaymentsRepository.kt index cfaf2489dc..045ff41857 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/InAppPaymentsRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/InAppPaymentsRepository.kt @@ -588,12 +588,14 @@ object InAppPaymentsRepository { val fromDatabase: Observable = Observable.create { emitter -> val observer = InAppPaymentObserver { val latestInAppPayment = SignalDatabase.inAppPayments.getLatestInAppPaymentByType(type) - emitter.onNext(Optional.ofNullable(latestInAppPayment)) } AppDependencies.databaseObserver.registerInAppPaymentObserver(observer) emitter.setCancellable { AppDependencies.databaseObserver.unregisterObserver(observer) } + + val latestInAppPayment = SignalDatabase.inAppPayments.getLatestInAppPaymentByType(type) + emitter.onNext(Optional.ofNullable(latestInAppPayment)) }.switchMap { inAppPaymentOptional -> val inAppPayment = inAppPaymentOptional.getOrNull() ?: return@switchMap Observable.just(DonationRedemptionJobStatus.None) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/manage/ManageDonationsViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/manage/ManageDonationsViewModel.kt index dd720f9e4e..e31346a0ba 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/manage/ManageDonationsViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/manage/ManageDonationsViewModel.kt @@ -66,8 +66,6 @@ class ManageDonationsViewModel : ViewModel() { } viewModelScope.launch(Dispatchers.IO) { - updateRecurringDonationState() - InAppPaymentsRepository.observeInAppPaymentRedemption(InAppPaymentType.RECURRING_DONATION) .asFlow() .collect { redemptionStatus -> @@ -79,6 +77,7 @@ class ManageDonationsViewModel : ViewModel() { store.update { manageDonationsState -> manageDonationsState.copy( + isLoaded = true, nonVerifiedMonthlyDonation = if (redemptionStatus is DonationRedemptionJobStatus.PendingExternalVerification) redemptionStatus.nonVerifiedMonthlyDonation else null, subscriptionRedemptionState = deriveRedemptionState(redemptionStatus, latestPayment), activeSubscription = activeSubscription @@ -160,21 +159,6 @@ class ManageDonationsViewModel : ViewModel() { ) } - private fun updateRecurringDonationState() { - val latestPayment = SignalDatabase.inAppPayments.getLatestInAppPaymentByType(InAppPaymentType.RECURRING_DONATION) - - val activeSubscription: InAppPaymentTable.InAppPayment? = latestPayment?.let { - if (it.data.cancellation == null) it else null - } - - store.update { manageDonationsState -> - manageDonationsState.copy( - isLoaded = true, - activeSubscription = activeSubscription - ) - } - } - private fun deriveRedemptionState(status: DonationRedemptionJobStatus, latestPayment: InAppPaymentTable.InAppPayment?): ManageDonationsState.RedemptionState { return when (status) { DonationRedemptionJobStatus.None -> ManageDonationsState.RedemptionState.NONE