summaryrefslogtreecommitdiffhomepage
path: root/android/lib/payment
diff options
context:
space:
mode:
authorJonatan Rhodin <jonatan.rhodin@mullvad.net>2024-06-19 13:08:30 +0200
committerJonatan Rhodin <jonatan.rhodin@mullvad.net>2024-06-19 13:08:30 +0200
commit121286df1096aa5981c5dbe57155b92a4cb05d8b (patch)
treecde86340f45e0bcca147edcc4277e80e937b4a0b /android/lib/payment
parent88c5d622d797faf99528f79a0907b101fa8f4cae (diff)
parent8934d4b62c9e301b5f844204b95f171ccbc7edca (diff)
downloadmullvadvpn-121286df1096aa5981c5dbe57155b92a4cb05d8b.tar.xz
mullvadvpn-121286df1096aa5981c5dbe57155b92a4cb05d8b.zip
Merge branch 'add-schedulers-from-arrow-instead-of-using-our-own-retry-droid-1014'
Diffstat (limited to 'android/lib/payment')
-rw-r--r--android/lib/payment/build.gradle.kts1
-rw-r--r--android/lib/payment/src/main/kotlin/net/mullvad/mullvadvpn/lib/payment/PaymentRepository.kt4
-rw-r--r--android/lib/payment/src/main/kotlin/net/mullvad/mullvadvpn/lib/payment/model/VerificationError.kt7
-rw-r--r--android/lib/payment/src/main/kotlin/net/mullvad/mullvadvpn/lib/payment/model/VerificationResult.kt14
4 files changed, 12 insertions, 14 deletions
diff --git a/android/lib/payment/build.gradle.kts b/android/lib/payment/build.gradle.kts
index 23f945b4f9..892ce21c75 100644
--- a/android/lib/payment/build.gradle.kts
+++ b/android/lib/payment/build.gradle.kts
@@ -39,6 +39,7 @@ android {
}
dependencies {
+ implementation(Dependencies.Arrow.core)
implementation(Dependencies.Kotlin.stdlib)
implementation(Dependencies.KotlinX.coroutinesAndroid)
}
diff --git a/android/lib/payment/src/main/kotlin/net/mullvad/mullvadvpn/lib/payment/PaymentRepository.kt b/android/lib/payment/src/main/kotlin/net/mullvad/mullvadvpn/lib/payment/PaymentRepository.kt
index 73fd0c061d..0f076eab74 100644
--- a/android/lib/payment/src/main/kotlin/net/mullvad/mullvadvpn/lib/payment/PaymentRepository.kt
+++ b/android/lib/payment/src/main/kotlin/net/mullvad/mullvadvpn/lib/payment/PaymentRepository.kt
@@ -1,10 +1,12 @@
package net.mullvad.mullvadvpn.lib.payment
import android.app.Activity
+import arrow.core.Either
import kotlinx.coroutines.flow.Flow
import net.mullvad.mullvadvpn.lib.payment.model.PaymentAvailability
import net.mullvad.mullvadvpn.lib.payment.model.ProductId
import net.mullvad.mullvadvpn.lib.payment.model.PurchaseResult
+import net.mullvad.mullvadvpn.lib.payment.model.VerificationError
import net.mullvad.mullvadvpn.lib.payment.model.VerificationResult
interface PaymentRepository {
@@ -14,7 +16,7 @@ interface PaymentRepository {
activityProvider: () -> Activity
): Flow<PurchaseResult>
- fun verifyPurchases(): Flow<VerificationResult>
+ suspend fun verifyPurchases(): Either<VerificationError, VerificationResult>
fun queryPaymentAvailability(): Flow<PaymentAvailability>
}
diff --git a/android/lib/payment/src/main/kotlin/net/mullvad/mullvadvpn/lib/payment/model/VerificationError.kt b/android/lib/payment/src/main/kotlin/net/mullvad/mullvadvpn/lib/payment/model/VerificationError.kt
new file mode 100644
index 0000000000..51cf8d1d28
--- /dev/null
+++ b/android/lib/payment/src/main/kotlin/net/mullvad/mullvadvpn/lib/payment/model/VerificationError.kt
@@ -0,0 +1,7 @@
+package net.mullvad.mullvadvpn.lib.payment.model
+
+sealed interface VerificationError {
+ data class BillingError(val exception: Throwable) : VerificationError
+
+ data object PlayVerificationError : VerificationError
+}
diff --git a/android/lib/payment/src/main/kotlin/net/mullvad/mullvadvpn/lib/payment/model/VerificationResult.kt b/android/lib/payment/src/main/kotlin/net/mullvad/mullvadvpn/lib/payment/model/VerificationResult.kt
index 725ea0af68..8cf971194d 100644
--- a/android/lib/payment/src/main/kotlin/net/mullvad/mullvadvpn/lib/payment/model/VerificationResult.kt
+++ b/android/lib/payment/src/main/kotlin/net/mullvad/mullvadvpn/lib/payment/model/VerificationResult.kt
@@ -1,19 +1,7 @@
package net.mullvad.mullvadvpn.lib.payment.model
-sealed interface VerificationResult {
- data object FetchingUnfinishedPurchases : VerificationResult
-
- data object VerificationStarted : VerificationResult
-
- // No verification was needed as there is no purchases to verify
+interface VerificationResult {
data object NothingToVerify : VerificationResult
data object Success : VerificationResult
-
- // Generic error, add more cases as needed
- sealed interface Error : VerificationResult {
- data class BillingError(val exception: Throwable?) : Error
-
- data class VerificationError(val exception: Throwable?) : Error
- }
}