From 75c5c9c15ce5ee2a4bd2aaabdc3cccfbba7e993f Mon Sep 17 00:00:00 2001 From: NickSxti Date: Tue, 7 Apr 2026 18:44:11 +0400 Subject: [PATCH 1/3] Update example app to use DeferredPurchasesListener Replace the deprecated EntitlementsUpdateListener with the new DeferredPurchasesListener in the EntitlementsScreen of the sample app. The new listener receives a PurchaseResult and we read entitlements from it to update the local state. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../src/screens/EntitlementsScreen/index.tsx | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/example/src/screens/EntitlementsScreen/index.tsx b/example/src/screens/EntitlementsScreen/index.tsx index b6360141..544cc0de 100644 --- a/example/src/screens/EntitlementsScreen/index.tsx +++ b/example/src/screens/EntitlementsScreen/index.tsx @@ -7,7 +7,7 @@ import { ScrollView, Platform, } from 'react-native'; -import Qonversion, { Entitlement } from '@qonversion/react-native-sdk'; +import Qonversion, { PurchaseResult } from '@qonversion/react-native-sdk'; import Snackbar from 'react-native-snackbar'; import { AppContext } from '../../store/AppStore'; import SkeletonLoader from '../../components/SkeletonLoader'; @@ -37,22 +37,27 @@ const EntitlementsScreen: React.FC = () => { } }; - const setEntitlementsListener = () => { - console.log('🔄 [Qonversion] Setting entitlements update listener...'); - Qonversion.getSharedInstance().setEntitlementsUpdateListener({ - onEntitlementsUpdated(entitlements: Map) { + const setDeferredPurchasesListener = () => { + console.log('🔄 [Qonversion] Setting deferred purchases listener...'); + Qonversion.getSharedInstance().setDeferredPurchasesListener({ + onDeferredPurchaseCompleted(purchaseResult: PurchaseResult) { console.log( - '📡 [Qonversion] Entitlements updated via listener:', - Object.fromEntries(entitlements) + '📡 [Qonversion] Deferred purchase completed via listener:', + purchaseResult ); - dispatch({ type: 'SET_ENTITLEMENTS', payload: entitlements }); + if (purchaseResult.entitlements) { + dispatch({ + type: 'SET_ENTITLEMENTS', + payload: purchaseResult.entitlements, + }); + } }, }); console.log( - '✅ [Qonversion] Entitlements update listener set successfully' + '✅ [Qonversion] Deferred purchases listener set successfully' ); Snackbar.show({ - text: 'Entitlements listener set successfully!', + text: 'Deferred purchases listener set successfully!', duration: Snackbar.LENGTH_SHORT, }); }; @@ -148,10 +153,10 @@ const EntitlementsScreen: React.FC = () => { - Set Entitlements Updated Listener + Set Deferred Purchases Listener From 4d0cdb86ac44c205638f7b3853c98a284d25ef49 Mon Sep 17 00:00:00 2001 From: SpertsyanKM Date: Tue, 28 Apr 2026 15:55:06 +0000 Subject: [PATCH 2/3] [create-pull-request] automated change --- package.json | 2 +- src/internal/QonversionInternal.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index f4f66565..5930cd51 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@qonversion/react-native-sdk", "title": "React Native Qonversion", - "version": "10.7.0", + "version": "10.7.1", "description": "Qonversion provides full in-app purchases infrastructure, so you do not need to build your own server for receipt validation. Implement in-app subscriptions, validate user receipts, check subscription status, and provide access to your app features and content using our StoreKit wrapper and Google Play Billing wrapper.", "main": "./lib/module/index.js", "types": "./lib/typescript/src/index.d.ts", diff --git a/src/internal/QonversionInternal.ts b/src/internal/QonversionInternal.ts index 410d2a88..a27a19f5 100644 --- a/src/internal/QonversionInternal.ts +++ b/src/internal/QonversionInternal.ts @@ -25,7 +25,7 @@ import PromotionalOffer from '../dto/PromotionalOffer'; import RNQonversion from './specs/NativeQonversionModule'; import type { QPromoOfferDetails } from './specs/NativeQonversionModule'; -export const sdkVersion = "10.7.0"; +export const sdkVersion = "10.7.1"; export const sdkSource = "rn"; export default class QonversionInternal implements QonversionApi { From 126e1f0d776d199de118b769ebf972ff76243acf Mon Sep 17 00:00:00 2001 From: SpertsyanKM Date: Tue, 28 Apr 2026 15:55:49 +0000 Subject: [PATCH 3/3] Sandwich version upgraded to 7.8.2 --- android/build.gradle | 2 +- qonversion-react-native-sdk.podspec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index b6517899..5500f1b8 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -80,7 +80,7 @@ def kotlin_version = getExtOrDefault("kotlinVersion") dependencies { implementation "com.facebook.react:react-android" implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" - implementation "io.qonversion:sandwich:7.8.0" + implementation "io.qonversion:sandwich:7.8.2" } if (isNewArchitectureEnabled()) { diff --git a/qonversion-react-native-sdk.podspec b/qonversion-react-native-sdk.podspec index 8b1f89a6..edc86e27 100644 --- a/qonversion-react-native-sdk.podspec +++ b/qonversion-react-native-sdk.podspec @@ -16,6 +16,6 @@ Pod::Spec.new do |s| s.source_files = "ios/**/*.{h,m,mm,cpp,swift}" s.private_header_files = "ios/**/*.h" - s.dependency "QonversionSandwich", "7.8.0" + s.dependency "QonversionSandwich", "7.8.2" install_modules_dependencies(s) end