Skip to content

Commit 4b5be54

Browse files
authored
Merge pull request #407 from qonversion/release/10.1.0
2 parents 9b6d149 + 94cb1ff commit 4b5be54

28 files changed

+888
-105
lines changed

android/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ def kotlin_version = getExtOrDefault("kotlinVersion")
8080
dependencies {
8181
implementation "com.facebook.react:react-android"
8282
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
83-
implementation "io.qonversion:sandwich:7.2.0"
83+
implementation "io.qonversion:sandwich:7.3.0"
8484
}
8585

8686
if (isNewArchitectureEnabled()) {

android/src/main/java/com/qonversion/reactnativesdk/NoCodesModule.kt

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import com.facebook.react.bridge.WritableNativeMap
1010
import io.qonversion.sandwich.BridgeData
1111
import io.qonversion.sandwich.NoCodesSandwich
1212
import io.qonversion.sandwich.NoCodesEventListener
13+
import io.qonversion.sandwich.NoCodesPurchaseDelegateBridge
1314

1415
@ReactModule(name = NoCodesModule.NAME)
1516
class NoCodesModule(private val reactContext: ReactApplicationContext) : NativeNoCodesModuleSpec(reactContext) {
@@ -26,15 +27,25 @@ class NoCodesModule(private val reactContext: ReactApplicationContext) : NativeN
2627
emitOnNoCodeEvent(eventMap)
2728
}
2829
}
30+
private val purchaseDelegate: NoCodesPurchaseDelegateBridge = object : NoCodesPurchaseDelegateBridge {
31+
override fun purchase(product: BridgeData) {
32+
val productMap = EntitiesConverter.convertMapToWritableMap(product)
33+
emitOnNoCodePurchase(productMap)
34+
}
35+
36+
override fun restore() {
37+
emitOnNoCodeRestore()
38+
}
39+
}
2940

3041
override fun getName(): String {
3142
return NAME
3243
}
3344

3445
@ReactMethod
35-
override fun initialize(projectKey: String, source: String, version: String, proxyUrl: String?) {
46+
override fun initialize(projectKey: String, source: String, version: String, proxyUrl: String?, locale: String?) {
3647
noCodesSandwich.storeSdkInfo(reactContext, source, version)
37-
noCodesSandwich.initialize(reactContext, projectKey, null, null, proxyUrl)
48+
noCodesSandwich.initialize(reactContext, projectKey, null, null, proxyUrl, locale)
3849
noCodesSandwich.setDelegate(noCodesEventListener)
3950
noCodesSandwich.setScreenCustomizationDelegate()
4051
}
@@ -70,6 +81,36 @@ class NoCodesModule(private val reactContext: ReactApplicationContext) : NativeN
7081
}
7182
}
7283

84+
@ReactMethod
85+
override fun setPurchaseDelegate() {
86+
noCodesSandwich.setPurchaseDelegate(purchaseDelegate)
87+
}
88+
89+
@ReactMethod
90+
override fun delegatedPurchaseCompleted() {
91+
noCodesSandwich.delegatedPurchaseCompleted()
92+
}
93+
94+
@ReactMethod
95+
override fun delegatedPurchaseFailed(errorMessage: String) {
96+
noCodesSandwich.delegatedPurchaseFailed(errorMessage)
97+
}
98+
99+
@ReactMethod
100+
override fun delegatedRestoreCompleted() {
101+
noCodesSandwich.delegatedRestoreCompleted()
102+
}
103+
104+
@ReactMethod
105+
override fun delegatedRestoreFailed(errorMessage: String) {
106+
noCodesSandwich.delegatedRestoreFailed(errorMessage)
107+
}
108+
109+
@ReactMethod
110+
override fun setLocale(locale: String?) {
111+
noCodesSandwich.setLocale(locale)
112+
}
113+
73114
companion object {
74115
const val NAME = "RNNoCodes"
75116
}

android/src/main/java/com/qonversion/reactnativesdk/QonversionModule.kt

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,33 @@ class QonversionModule(reactContext: ReactApplicationContext) : NativeQonversion
8989
)
9090
}
9191

92+
@ReactMethod
93+
override fun purchaseWithResult(
94+
productId: String,
95+
quantity: Double,
96+
contextKeys: ReadableArray?,
97+
promoOffer: ReadableMap?,
98+
offerId: String?,
99+
applyOffer: Boolean,
100+
oldProductId: String?,
101+
updatePolicyKey: String?,
102+
promise: Promise
103+
) {
104+
var contextKeysList: List<String>? = null
105+
if (contextKeys != null) {
106+
contextKeysList = EntitiesConverter.convertArrayToStringList(contextKeys)
107+
}
108+
qonversionSandwich.purchaseWithResult(
109+
productId,
110+
offerId,
111+
applyOffer,
112+
oldProductId,
113+
updatePolicyKey,
114+
contextKeysList,
115+
getResultListener(promise)
116+
)
117+
}
118+
92119
@ReactMethod
93120
override fun updatePurchase(
94121
productId: String,

example/ios/Podfile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@ if linkage != nil
1616
use_frameworks! :linkage => linkage.to_sym
1717
end
1818

19+
# For testing Sandwich SDK locally, uncomment the following line
20+
# pod 'QonversionSandwich', :path => '../../../sandwich-sdk'
21+
1922
target 'QonversionExample' do
2023
config = use_native_modules!
2124

example/ios/Podfile.lock

Lines changed: 65 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,16 @@ PODS:
88
- hermes-engine (0.80.1):
99
- hermes-engine/Pre-built (= 0.80.1)
1010
- hermes-engine/Pre-built (0.80.1)
11-
- Qonversion (6.1.0):
12-
- Qonversion/Main (= 6.1.0)
13-
- qonversion-react-native-sdk (10.0.1):
11+
- Qonversion (6.3.0):
12+
- Qonversion/Main (= 6.3.0)
13+
- qonversion-react-native-sdk (10.0.2):
1414
- boost
1515
- DoubleConversion
1616
- fast_float
1717
- fmt
1818
- glog
1919
- hermes-engine
20-
- QonversionSandwich (= 7.2.0)
20+
- QonversionSandwich (= 7.3.0)
2121
- RCT-Folly
2222
- RCT-Folly/Fabric
2323
- RCTRequired
@@ -40,9 +40,9 @@ PODS:
4040
- ReactCommon/turbomodule/core
4141
- SocketRocket
4242
- Yoga
43-
- Qonversion/Main (6.1.0)
44-
- QonversionSandwich (7.2.0):
45-
- Qonversion (= 6.1.0)
43+
- Qonversion/Main (6.3.0)
44+
- QonversionSandwich (7.3.0):
45+
- Qonversion (= 6.3.0)
4646
- RCT-Folly (2024.11.18.00):
4747
- boost
4848
- DoubleConversion
@@ -2437,78 +2437,78 @@ SPEC CHECKSUMS:
24372437
fmt: a40bb5bd0294ea969aaaba240a927bd33d878cdd
24382438
glog: 5683914934d5b6e4240e497e0f4a3b42d1854183
24392439
hermes-engine: 4f07404533b808de66cf48ac4200463068d0e95a
2440-
Qonversion: 0b64e731cb59f94ab03c132cea2b70552b4dcc2b
2441-
qonversion-react-native-sdk: f4866555352a9eede1049a32679fcbb2ebc6691b
2442-
QonversionSandwich: 6aee2b128590545439041bb793a77eaf1d4b325e
2440+
Qonversion: 8f8fb604e2b9fb442eeb6a7aefcbc6bd73c3b55a
2441+
qonversion-react-native-sdk: a11f2ab3bb7f7a89d8c16523e8b7b90985358455
2442+
QonversionSandwich: 046f2896c41037f3f58df63e4f22bd351312eeef
24432443
RCT-Folly: 59ec0ac1f2f39672a0c6e6cecdd39383b764646f
24442444
RCTDeprecation: efa5010912100e944a7ac9a93a157e1def1988fe
24452445
RCTRequired: bbc4cf999ddc4a4b076e076c74dd1d39d0254630
24462446
RCTTypeSafety: d877728097547d0a37786cc9130c43ad71739ac3
24472447
React: 4b0b9cb962e694611e5e8a697c1b0300a2510c21
24482448
React-callinvoker: 70f125c17c7132811a6b473946ac5e7ae93b5e57
2449-
React-Core: 7cbc3118df2334b2ef597d9a515938b02c82109f
2450-
React-CoreModules: 7d8c14ecb889e7786a04637583b55b7d8f246baf
2451-
React-cxxreact: f32be07cba236c2f20f4e05ca200577ba5358e78
2449+
React-Core: bab40f5b1f46fe0c5896895a6f333e861a821a81
2450+
React-CoreModules: 05647d952e521113c128360633896ba7ba652e82
2451+
React-cxxreact: 2b4bac1ec6eecc6288ac8a6caea6afb42585740e
24522452
React-debug: deb3a146ef717fa3e8f4c23e0288369fe53199b7
2453-
React-defaultsnativemodule: 2c13a4240c5f96c42d069d1ba2392de6b4145bbd
2454-
React-domnativemodule: 91349b0b1cb20310cec1341b87cdd461aaa85e57
2455-
React-Fabric: bdfc7ec2481f26d7a9b8f59461f29ba4d903c549
2456-
React-FabricComponents: 47898469543d1bfb4528a9846419ec5568be89b1
2457-
React-FabricImage: ac8fc85ef452e5e9ae935c41118814651bd9e7f3
2458-
React-featureflags: 793b911e4c53e680db4a7d9965d0d6dc87b2fa88
2459-
React-featureflagsnativemodule: 25c9516d0dd004493c9bbafeb97da20bf9bde7dc
2460-
React-graphics: e07281690425dd9eeba3875d1faad28bc1f6da3b
2461-
React-hermes: bc1440d0e0662cc813bbf1c5ffbf9e0db2993a0f
2462-
React-idlecallbacksnativemodule: a2a3bb4a1793280b34d06d00169153b094be8c16
2463-
React-ImageManager: c9fa7461f3cab08e7bc98cbf55455b499e71c8b3
2464-
React-jserrorhandler: 15e591702040afed99cfcd088cf2337a8d09d807
2465-
React-jsi: 512ab3a1a628bc8824c41de8bcbbb81b2ac6fa8d
2466-
React-jsiexecutor: 653ccd2dee1e5ea558eecaf2f27b8bba0f09add8
2467-
React-jsinspector: 9121ccd2676a3f7c079ac01c9f90183422e3190e
2468-
React-jsinspectorcdp: 5c723ff2a09d73f2fdc496a545fb7003e7fdc079
2469-
React-jsinspectornetwork: 9cb0173f69e8405cef33fc79030fad26bbc3c073
2470-
React-jsinspectortracing: 65dc04125dc2392d85a82b6916f8cb088ea77566
2471-
React-jsitooling: 21af93cc98f760dd88d65b06b9317e0d4849fbbc
2472-
React-jsitracing: 4cc1b7de8087ae41c61a0eeee2593bc3362908b6
2473-
React-logger: 2f0d40bc8e648fbb1ff3b6580ad54189a8753290
2474-
React-Mapbuffer: 9a7c65078c6851397c1999068989e4fc239d0c80
2475-
React-microtasksnativemodule: 4f1ef719ba6c7ebbd2d75346ffa2916f9b4771c9
2476-
React-NativeModulesApple: f6f696e510b9d89c3c06b7764f56947dc13ae922
2453+
React-defaultsnativemodule: 11e2948787a15d3cf1b66d7f29f13770a177bff7
2454+
React-domnativemodule: 2f4b279acdb2963736fb5de2f585811dd90070b5
2455+
React-Fabric: 6f8d1a303c96f1d078c14d74c4005bf457e5b782
2456+
React-FabricComponents: b106410970e9a0c4e592da656c7a7e0947306c23
2457+
React-FabricImage: 1abaf230dfce9b58fdf53c4128f3f40c6e64af6a
2458+
React-featureflags: f7ef58d91079efde3ad223bcca6d197e845d5bcf
2459+
React-featureflagsnativemodule: ae5abc9849d1696f4f8f11ee3744bf5715e032cf
2460+
React-graphics: b306856c6ed9aac32f717a229550406a53b28a6d
2461+
React-hermes: b6edce8fa19388654b1aea30844497cbeade83bc
2462+
React-idlecallbacksnativemodule: cb386712842cb9e479c89311edb234d529b64db4
2463+
React-ImageManager: 8ce94417853eaa22faaad1f4cc1952dd3f8e2275
2464+
React-jserrorhandler: ab827d67dc270a9c8703eef524230baeafaf6876
2465+
React-jsi: 545342ec5c78ab1277af5f0dbe8d489e7e73db14
2466+
React-jsiexecutor: 20210891c7c77255c16dec6762faf68b373f9f74
2467+
React-jsinspector: 4e73460e488132d70d2b4894e5578cc856f2cb74
2468+
React-jsinspectorcdp: 8b2bcb5779289cb2b9ca517f2965ed23eb2fd3e0
2469+
React-jsinspectornetwork: b5e0cb9e488d294eed2d8209dc3dc0f9587210c1
2470+
React-jsinspectortracing: f3c4036e7b984405ac910f878576d325dd9f2834
2471+
React-jsitooling: 75bbfd221b6173a5e848ca5a6680506bac064a56
2472+
React-jsitracing: 11ed7d821864dd988c159d4943e0a1e0937c11b1
2473+
React-logger: 984ebd897afad067555d081deaf03f57c4315723
2474+
React-Mapbuffer: 0c045c844ce6d85cde53e85ab163294c6adad349
2475+
React-microtasksnativemodule: d9499269ad1f484ae71319bac1d9231447f2094e
2476+
React-NativeModulesApple: 983f3483ef0a3446b56d490f09d579fba2442e17
24772477
React-oscompat: 114036cd8f064558c9c1a0c04fc9ae5e1453706a
2478-
React-perflogger: 4b2f88ae059b600daf268528a4a83366338eef05
2479-
React-performancetimeline: e15fd9798123436f99e46898422fe921fecf506b
2478+
React-perflogger: e7287fee27c16e3c8bd4d470f2361572b63be16b
2479+
React-performancetimeline: 8ebbaa31d2d0cea680b0a2a567500d3cab8954fc
24802480
React-RCTActionSheet: 68c68b0a7a5d2b0cfc255c64889b6e485974e988
2481-
React-RCTAnimation: 6bf502c89c53076f92cd1a254f5ec8d63ee263de
2482-
React-RCTAppDelegate: c90f5732784684c3dd226d812eccb578cd954ad7
2483-
React-RCTBlob: d2905f01749b80efd6d3b86fb15e30ed26d5450b
2484-
React-RCTFabric: 435b3ffaad113fb1f274c2f2a677c9fcc9b5cf55
2485-
React-RCTFBReactNativeSpec: a3178b419f42af196e90ca4bf07710dce5d68301
2486-
React-RCTImage: 8f5ffa03461339180a68820ea452af6e20ace2c7
2487-
React-RCTLinking: 1151646834d31f97580d8a75d768a84b2533b7f9
2488-
React-RCTNetwork: 52008724d0db90a540f4058ed0de0e41c4b7943c
2489-
React-RCTRuntime: 10ce9a7cb27ba307544d29a2a04e6202dc7b3e9a
2490-
React-RCTSettings: f724cacbd892ee18f985e1aebdd97386e49c76f5
2491-
React-RCTText: 6e1b95d9126d808410dfa96e09bc4441ec6f36f7
2492-
React-RCTVibration: 862a4e5b36d49e6299c8cbfb86486fc31f86f6fa
2481+
React-RCTAnimation: d6c5c728b888a967ce9aff1ff71a8ed71a68d069
2482+
React-RCTAppDelegate: 0fc048666bda159cd469a6fb9befb04b3fa62be4
2483+
React-RCTBlob: 12d8c699a1f906840113ee8d8bb575e69a05509f
2484+
React-RCTFabric: 01e815845ebc185f44205dcbf50eeb712fec23fe
2485+
React-RCTFBReactNativeSpec: f57927fb0af6ce2f25c19f8b894e2986138aa89f
2486+
React-RCTImage: a82518168f4ee407913b23ca749ca79ef51959f3
2487+
React-RCTLinking: 7f343b584c36f024f390fea563483568fe763ef6
2488+
React-RCTNetwork: 3165eb757ceb62a7cde4cdad043d63314122e8a3
2489+
React-RCTRuntime: feee590c459c4cb6aaa7a00f3abc8c04709b536f
2490+
React-RCTSettings: 6bad0ae45d8d872c873059f332f586f99875621f
2491+
React-RCTText: 657d60f35983062de8f0cea67c279aa7a3ea9858
2492+
React-RCTVibration: 78f4770515141efb7f55f9b27c49dda95319c3a8
24932493
React-rendererconsistency: f7baab26c6d0cd5b2eb7afcecfd2d8b957017b18
2494-
React-renderercss: 62acb8f010a062309e3bd0e203aa14636162e3b3
2495-
React-rendererdebug: 3a89ac44f15c7160735264d585a29525655238d2
2494+
React-renderercss: bdd2f83a4a054c3e4321fd61305c202b848e471b
2495+
React-rendererdebug: 9f8865ee038127a9d99d4b034c9da4935d204993
24962496
React-rncore: f7438473c4c71ee1963fb06a8635bb96013c9e1c
2497-
React-RuntimeApple: 81f0a9ba81ce7eb203529b0471dc69bf18f5f637
2498-
React-RuntimeCore: 6356e89b2518ba66a989c39a2adb18122a5e3b7b
2497+
React-RuntimeApple: 4d2ab9f72b9193da86eceded128a67254fc18aeb
2498+
React-RuntimeCore: 5fd73030438d094975ca0f549d162dd97746ae38
24992499
React-runtimeexecutor: 17c70842d5e611130cb66f91e247bc4a609c3508
2500-
React-RuntimeHermes: 0a1d7ce2fe08cf182235de1a9330b51aa6b935cd
2501-
React-runtimescheduler: 10ae98e1417eff159be5df8fdc8fcdaac557aba6
2500+
React-RuntimeHermes: 3c88e6e1ea7ea0899dcffc77c10d61ea46688cfd
2501+
React-runtimescheduler: 024500621c7c93d65371498abb4ee26d34f5d47d
25022502
React-timing: c3c923df2b86194e1682e01167717481232f1dc7
2503-
React-utils: 7791a96e194eec85cb41dc98a2045b5f07839598
2504-
ReactAppDependencyProvider: ba631a31783569c13056dd57ff39e19764abdd6f
2505-
ReactCodegen: b16d00d43b4e9dc44af53be171b17d93b4b20267
2506-
ReactCommon: 96684b90b235d6ae340d126141edd4563b7a446a
2507-
RNCClipboard: acf8ae07037c21f17d9284ca56e982186ed21465
2508-
RNSnackbar: b0914bd060cdb82862dc1a987be57a8b918610bf
2503+
React-utils: 9154a037543147e1c24098f1a48fc8472602c092
2504+
ReactAppDependencyProvider: afd905e84ee36e1678016ae04d7370c75ed539be
2505+
ReactCodegen: f8d5fb047c4cd9d2caade972cad9edac22521362
2506+
ReactCommon: 17fd88849a174bf9ce45461912291aca711410fc
2507+
RNCClipboard: b228d492733d66e0126e18ce66c6d2f90bacc7e5
2508+
RNSnackbar: c1b235eb606b03938c693ce769ed3059c31dff9b
25092509
SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748
25102510
Yoga: 703055a9f39562521cdb8657162dfd80f8c174c3
25112511

2512-
PODFILE CHECKSUM: 05782888d88e3a4a4bbc945c42df54704269e6ea
2512+
PODFILE CHECKSUM: af1f55bfb8d0c6c0a79cd9607de82ff807bedfbb
25132513

2514-
COCOAPODS: 1.16.2
2514+
COCOAPODS: 1.15.2

0 commit comments

Comments
 (0)