From 97de1a0ed499916ca2e5cf82f0acfde8f192e5f5 Mon Sep 17 00:00:00 2001 From: Toni Rico Date: Wed, 19 Jul 2023 16:03:48 +0200 Subject: [PATCH] Disable offline entitlements in custom entitlements computation mode --- .../OfflineEntitlementsManager.kt | 4 ++- .../OfflineEntitlementsManagerTest.kt | 29 +++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/purchases/src/main/kotlin/com/revenuecat/purchases/common/offlineentitlements/OfflineEntitlementsManager.kt b/purchases/src/main/kotlin/com/revenuecat/purchases/common/offlineentitlements/OfflineEntitlementsManager.kt index 8bde52aa1..47ca3bc5c 100644 --- a/purchases/src/main/kotlin/com/revenuecat/purchases/common/offlineentitlements/OfflineEntitlementsManager.kt +++ b/purchases/src/main/kotlin/com/revenuecat/purchases/common/offlineentitlements/OfflineEntitlementsManager.kt @@ -114,7 +114,9 @@ internal class OfflineEntitlementsManager( // We disable offline entitlements in observer mode (finishTransactions = true) since it doesn't // provide any value and simplifies operations in that mode. - private fun isOfflineEntitlementsEnabled() = appConfig.finishTransactions && appConfig.enableOfflineEntitlements + private fun isOfflineEntitlementsEnabled() = appConfig.finishTransactions && + appConfig.enableOfflineEntitlements && + !appConfig.customEntitlementsComputation } private typealias OfflineCustomerInfoCallback = Pair<(CustomerInfo) -> Unit, (PurchasesError) -> Unit> diff --git a/purchases/src/test/java/com/revenuecat/purchases/common/offlineentitlements/OfflineEntitlementsManagerTest.kt b/purchases/src/test/java/com/revenuecat/purchases/common/offlineentitlements/OfflineEntitlementsManagerTest.kt index e7c36c77b..5d915731f 100644 --- a/purchases/src/test/java/com/revenuecat/purchases/common/offlineentitlements/OfflineEntitlementsManagerTest.kt +++ b/purchases/src/test/java/com/revenuecat/purchases/common/offlineentitlements/OfflineEntitlementsManagerTest.kt @@ -60,6 +60,9 @@ class OfflineEntitlementsManagerTest { every { appConfig.finishTransactions } returns true + every { + appConfig.customEntitlementsComputation + } returns false every { appConfig.enableOfflineEntitlements } returns true @@ -142,6 +145,18 @@ class OfflineEntitlementsManagerTest { assertThat(result).isFalse } + @Test + fun `shouldCalculateOfflineCustomerInfoInGetCustomerInfoRequest returns false if custom entitlement computation`() { + every { deviceCache.getCachedCustomerInfo(appUserID) } returns null + every { appConfig.customEntitlementsComputation } returns true + val isServerError = true + val result = offlineEntitlementsManager.shouldCalculateOfflineCustomerInfoInGetCustomerInfoRequest( + isServerError, + appUserID + ) + assertThat(result).isFalse + } + // endregion // region shouldCalculateOfflineCustomerInfoInPostReceipt @@ -172,6 +187,13 @@ class OfflineEntitlementsManagerTest { assertThat(offlineEntitlementsManager.shouldCalculateOfflineCustomerInfoInPostReceipt(isServerError)).isFalse } + @Test + fun `shouldCalculateOfflineCustomerInfoInPostReceipt returns false if custom entitlements computation mode`() { + every { appConfig.customEntitlementsComputation } returns true + val isServerError = true + assertThat(offlineEntitlementsManager.shouldCalculateOfflineCustomerInfoInPostReceipt(isServerError)).isFalse + } + // endregion // region resetOfflineCustomerInfoCache @@ -404,6 +426,13 @@ class OfflineEntitlementsManagerTest { verify(exactly = 1) { deviceCache.cacheProductEntitlementMapping(expectedMappings) } } + @Test + fun `updateProductEntitlementMappingCacheIfStale does nothing in custom entitlement computation mode`() { + every { appConfig.customEntitlementsComputation } returns true + offlineEntitlementsManager.updateProductEntitlementMappingCacheIfStale() + verify(exactly = 0) { backend.getProductEntitlementMapping(any(), any()) } + } + // endregion // region helpers