summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AddTimeViewModel.kt5
-rw-r--r--android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/AddTimeViewModelTest.kt7
2 files changed, 9 insertions, 3 deletions
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AddTimeViewModel.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AddTimeViewModel.kt
index 141e854b81..36e6864a80 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AddTimeViewModel.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/AddTimeViewModel.kt
@@ -8,6 +8,7 @@ import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.filter
+import kotlinx.coroutines.flow.filterNotNull
import kotlinx.coroutines.flow.receiveAsFlow
import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.launch
@@ -35,14 +36,14 @@ class AddTimeViewModel(
val uiState: StateFlow<Lc<Unit, AddTimeUiState>> =
combine(
- paymentUseCase.paymentAvailability,
+ paymentUseCase.paymentAvailability.filterNotNull(),
paymentUseCase.purchaseResult,
connectionProxy.tunnelState,
) { paymentAvailability, purchaseResult, tunnelState ->
Lc.Content(
AddTimeUiState(
purchaseState = purchaseResult?.toPurchaseState(),
- billingPaymentState = paymentAvailability?.toPaymentState(),
+ billingPaymentState = paymentAvailability.toPaymentState(),
tunnelStateBlocked = tunnelState.isBlocked(),
showSitePayment = !isPlayBuild,
)
diff --git a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/AddTimeViewModelTest.kt b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/AddTimeViewModelTest.kt
index 1b9c4a9ef3..a40d1f02a2 100644
--- a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/AddTimeViewModelTest.kt
+++ b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/viewmodel/AddTimeViewModelTest.kt
@@ -21,6 +21,7 @@ import net.mullvad.mullvadvpn.lib.model.TunnelState
import net.mullvad.mullvadvpn.lib.payment.model.PaymentAvailability
import net.mullvad.mullvadvpn.lib.payment.model.PaymentProduct
import net.mullvad.mullvadvpn.lib.payment.model.ProductId
+import net.mullvad.mullvadvpn.lib.payment.model.ProductPrice
import net.mullvad.mullvadvpn.lib.payment.model.PurchaseResult
import net.mullvad.mullvadvpn.lib.payment.model.VerificationResult
import net.mullvad.mullvadvpn.lib.shared.AccountRepository
@@ -174,8 +175,12 @@ class AddTimeViewModelTest {
@Test
fun `purchaseResult emitting Success should result in success dialog state`() = runTest {
// Arrange
- val result = PurchaseState.Success(ProductId("one_month"))
+ val productId = ProductId("one_month")
+ val paymentProduct =
+ PaymentProduct(productId = productId, price = ProductPrice("€5.00"), status = null)
+ val result = PurchaseState.Success(productId)
val purchaseResultData = PurchaseResult.Completed.Success(ProductId("one_month"))
+ paymentAvailability.emit(PaymentAvailability.ProductsAvailable(listOf(paymentProduct)))
// Act, Assert
viewModel.uiState.test {