summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorJonatan Rhodin <jonatan.rhodin@mullvad.net>2023-11-22 17:39:02 +0100
committerAlbin <albin@mullvad.net>2023-11-27 15:41:10 +0100
commit993c14dad004adc2b2b7dfd0fc567f34af8abb91 (patch)
treeac590e716aa3cbb44cdfdc387b6483f74a85add4 /android
parentf2add33d76a3863b4170fd105b1fe895cbc09b73 (diff)
downloadmullvadvpn-993c14dad004adc2b2b7dfd0fc567f34af8abb91.tar.xz
mullvadvpn-993c14dad004adc2b2b7dfd0fc567f34af8abb91.zip
Add payment verification to Connect Screen
Diffstat (limited to 'android')
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/UiModule.kt2
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/usecase/PaymentUseCase.kt7
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModel.kt7
3 files changed, 11 insertions, 5 deletions
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/UiModule.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/UiModule.kt
index 56df6699de..b39d16b0aa 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/UiModule.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/UiModule.kt
@@ -124,7 +124,7 @@ val uiModule = module {
viewModel {
ChangelogViewModel(get(), BuildConfig.VERSION_CODE, BuildConfig.ALWAYS_SHOW_CHANGELOG)
}
- viewModel { ConnectViewModel(get(), get(), get(), get(), get(), get()) }
+ viewModel { ConnectViewModel(get(), get(), get(), get(), get(), get(), get()) }
viewModel { DeviceListViewModel(get(), get()) }
viewModel { DeviceRevokedViewModel(get(), get()) }
viewModel { LoginViewModel(get(), get(), get()) }
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/usecase/PaymentUseCase.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/usecase/PaymentUseCase.kt
index 151e2caec7..bda53bcaf2 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/usecase/PaymentUseCase.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/usecase/PaymentUseCase.kt
@@ -20,7 +20,7 @@ interface PaymentUseCase {
suspend fun resetPurchaseResult()
- suspend fun verifyPurchases()
+ suspend fun verifyPurchases(onSuccessfulVerification: () -> Unit = {})
}
class PlayPaymentUseCase(private val paymentRepository: PaymentRepository) : PaymentUseCase {
@@ -42,11 +42,12 @@ class PlayPaymentUseCase(private val paymentRepository: PaymentRepository) : Pay
_purchaseResult.emit(null)
}
- override suspend fun verifyPurchases() {
+ override suspend fun verifyPurchases(onSuccessfulVerification: () -> Unit) {
paymentRepository.verifyPurchases().collect {
if (it == VerificationResult.Success) {
// Update the payment availability after a successful verification.
queryPaymentAvailability()
+ onSuccessfulVerification()
}
}
}
@@ -68,7 +69,7 @@ class EmptyPaymentUseCase : PaymentUseCase {
// No op
}
- override suspend fun verifyPurchases() {
+ override suspend fun verifyPurchases(onSuccessfulVerification: () -> Unit) {
// No op
}
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModel.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModel.kt
index 89b83d9f11..76c290f439 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModel.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/viewmodel/ConnectViewModel.kt
@@ -33,6 +33,7 @@ import net.mullvad.mullvadvpn.ui.serviceconnection.ServiceConnectionState
import net.mullvad.mullvadvpn.ui.serviceconnection.authTokenCache
import net.mullvad.mullvadvpn.ui.serviceconnection.connectionProxy
import net.mullvad.mullvadvpn.usecase.NewDeviceNotificationUseCase
+import net.mullvad.mullvadvpn.usecase.PaymentUseCase
import net.mullvad.mullvadvpn.usecase.RelayListUseCase
import net.mullvad.mullvadvpn.util.callbackFlowFromNotifier
import net.mullvad.mullvadvpn.util.combine
@@ -49,7 +50,8 @@ class ConnectViewModel(
private val deviceRepository: DeviceRepository,
private val inAppNotificationController: InAppNotificationController,
private val newDeviceNotificationUseCase: NewDeviceNotificationUseCase,
- private val relayListUseCase: RelayListUseCase
+ private val relayListUseCase: RelayListUseCase,
+ private val paymentUseCase: PaymentUseCase
) : ViewModel() {
private val _uiSideEffect = MutableSharedFlow<UiSideEffect>(extraBufferCapacity = 1)
val uiSideEffect = _uiSideEffect.asSharedFlow()
@@ -137,6 +139,9 @@ class ConnectViewModel(
// The create account cache is no longer needed as we have successfully reached the connect
// screen
accountRepository.clearCreatedAccountCache()
+ viewModelScope.launch {
+ paymentUseCase.verifyPurchases { accountRepository.fetchAccountExpiry() }
+ }
}
private fun LocationInfoCache.locationCallbackFlow() = callbackFlow {