react-native-iap 15.5.3 → 15.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/src/main/java/com/margelo/nitro/iap/HybridRnIap.kt +159 -46
- package/android/src/main/java/com/margelo/nitro/iap/PendingEventBuffer.kt +86 -0
- package/ios/HybridRnIap.swift +6 -0
- package/lib/module/hooks/useIAP.js +8 -2
- package/lib/module/hooks/useIAP.js.map +1 -1
- package/lib/module/index.js +33 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/index.kepler.js +1 -0
- package/lib/module/index.kepler.js.map +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/module/vega-adapter.js +3 -0
- package/lib/module/vega-adapter.js.map +1 -1
- package/lib/typescript/src/hooks/useIAP.d.ts +2 -0
- package/lib/typescript/src/hooks/useIAP.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +19 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/index.kepler.d.ts +1 -0
- package/lib/typescript/src/index.kepler.d.ts.map +1 -1
- package/lib/typescript/src/specs/RnIap.nitro.d.ts +8 -0
- package/lib/typescript/src/specs/RnIap.nitro.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +15 -0
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/lib/typescript/src/vega-adapter.d.ts.map +1 -1
- package/nitrogen/generated/android/c++/JHybridRnIapSpec.cpp +16 -0
- package/nitrogen/generated/android/c++/JHybridRnIapSpec.hpp +1 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/HybridRnIapSpec.kt +4 -0
- package/nitrogen/generated/ios/c++/HybridRnIapSpecSwift.hpp +8 -0
- package/nitrogen/generated/ios/swift/HybridRnIapSpec.swift +1 -0
- package/nitrogen/generated/ios/swift/HybridRnIapSpec_cxx.swift +19 -0
- package/nitrogen/generated/shared/c++/HybridRnIapSpec.cpp +1 -0
- package/nitrogen/generated/shared/c++/HybridRnIapSpec.hpp +1 -0
- package/openiap-versions.json +2 -2
- package/package.json +1 -1
- package/src/hooks/useIAP.ts +8 -0
- package/src/index.kepler.ts +4 -0
- package/src/index.ts +35 -0
- package/src/specs/RnIap.nitro.ts +9 -0
- package/src/types.ts +15 -0
- package/src/vega-adapter.ts +4 -0
- package/android/src/main/java/com/margelo/nitro/iap/ProductQueryHelpers.kt +0 -42
|
@@ -86,6 +86,26 @@ internal suspend fun endRnConnectionWithCleanup(
|
|
|
86
86
|
cleanup()
|
|
87
87
|
}
|
|
88
88
|
|
|
89
|
+
/**
|
|
90
|
+
* Removes the singleton JS fan-out listener without relying on callback identity.
|
|
91
|
+
* Nitro creates a fresh Kotlin callback wrapper for each bridge invocation, so
|
|
92
|
+
* the wrapper received by remove is not equal to the one received by add.
|
|
93
|
+
*/
|
|
94
|
+
internal fun <T> removeSingletonBridgeListener(
|
|
95
|
+
registeredListeners: MutableList<T>,
|
|
96
|
+
@Suppress("UNUSED_PARAMETER") removalWrapper: T,
|
|
97
|
+
) {
|
|
98
|
+
synchronized(registeredListeners) {
|
|
99
|
+
registeredListeners.clear()
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Bound for the pending purchase-event queues, matching expo-iap's
|
|
105
|
+
* ExpoIapHelper.MAX_BUFFERED_EVENTS. Oldest entries are dropped on overflow.
|
|
106
|
+
*/
|
|
107
|
+
private const val MAX_PENDING_EVENTS = 200
|
|
108
|
+
|
|
89
109
|
class HybridRnIap : HybridRnIapSpec() {
|
|
90
110
|
private data class PurchaseUpdatedListenerRegistration(
|
|
91
111
|
val token: Double,
|
|
@@ -105,6 +125,26 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
105
125
|
private val purchaseUpdatedListeners = mutableListOf<PurchaseUpdatedListenerRegistration>()
|
|
106
126
|
private var nextPurchaseUpdatedListenerToken = 1.0
|
|
107
127
|
private val purchaseErrorListeners = mutableListOf<(NitroPurchaseResult) -> Unit>()
|
|
128
|
+
|
|
129
|
+
// Pending purchase events buffered while ZERO bridge listeners are attached
|
|
130
|
+
// (GitHub issue #166). Mirrors expo-iap's ExpoIapHelper.emitOrQueue bounded
|
|
131
|
+
// queue (MAX_BUFFERED_EVENTS = 200, drop-oldest on overflow); expo buffers
|
|
132
|
+
// purchase errors the same way, so both channels queue here. Covers:
|
|
133
|
+
// 1. events fired during initConnection before JS listeners attach
|
|
134
|
+
// (e.g. the already-owned recovery republish), and
|
|
135
|
+
// 2. events fired while all screens are unmounted, flushed on remount.
|
|
136
|
+
// Queued events are flushed FIFO using a listener snapshot per batch. A
|
|
137
|
+
// listener added during a flush receives later arrivals, but not backlog
|
|
138
|
+
// that predates its registration.
|
|
139
|
+
// Like expo (which clears its queue when the connection lifecycle ends),
|
|
140
|
+
// endConnection clears these queues; they survive plain unmount/remount
|
|
141
|
+
// because useIAP keeps the connection alive across screens.
|
|
142
|
+
private val pendingPurchaseUpdates = PendingEventBuffer<NitroPurchase>(MAX_PENDING_EVENTS) {
|
|
143
|
+
RnIapLog.warn("pendingPurchaseUpdates overflow; dropping oldest")
|
|
144
|
+
}
|
|
145
|
+
private val pendingPurchaseErrors = PendingEventBuffer<NitroPurchaseResult>(MAX_PENDING_EVENTS) {
|
|
146
|
+
RnIapLog.warn("pendingPurchaseErrors overflow; dropping oldest")
|
|
147
|
+
}
|
|
108
148
|
private val promotedProductListenersIOS = mutableListOf<(NitroProduct) -> Unit>()
|
|
109
149
|
private val userChoiceBillingListenersAndroid = mutableListOf<(UserChoiceBillingDetails) -> Unit>()
|
|
110
150
|
private val developerProvidedBillingListenersAndroid = mutableListOf<(DeveloperProvidedBillingDetailsAndroid) -> Unit>()
|
|
@@ -362,11 +402,18 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
362
402
|
productTypeBySku.clear()
|
|
363
403
|
isInitialized = false
|
|
364
404
|
// Native listener sets persist; clear only bridge callbacks.
|
|
405
|
+
// Pending event queues are cleared with them: like expo-iap
|
|
406
|
+
// (whose buffer resets when the connection lifecycle ends),
|
|
407
|
+
// buffered events do not survive an explicit endConnection.
|
|
365
408
|
synchronized(purchaseUpdatedListeners) {
|
|
366
409
|
purchaseUpdatedListeners.clear()
|
|
367
410
|
nextPurchaseUpdatedListenerToken = 1.0
|
|
411
|
+
pendingPurchaseUpdates.clear()
|
|
412
|
+
}
|
|
413
|
+
synchronized(purchaseErrorListeners) {
|
|
414
|
+
purchaseErrorListeners.clear()
|
|
415
|
+
pendingPurchaseErrors.clear()
|
|
368
416
|
}
|
|
369
|
-
synchronized(purchaseErrorListeners) { purchaseErrorListeners.clear() }
|
|
370
417
|
promotedProductListenersIOS.clear()
|
|
371
418
|
synchronized(userChoiceBillingListenersAndroid) { userChoiceBillingListenersAndroid.clear() }
|
|
372
419
|
synchronized(developerProvidedBillingListenersAndroid) { developerProvidedBillingListenersAndroid.clear() }
|
|
@@ -402,43 +449,32 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
402
449
|
val skusList = skus.toList()
|
|
403
450
|
|
|
404
451
|
val products: List<ProductCommon> = try {
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
fetched.map { mapOf("id" to it.id, "type" to it.type.rawValue) }
|
|
418
|
-
)
|
|
419
|
-
fetched
|
|
420
|
-
},
|
|
421
|
-
onFailure = { kind, error ->
|
|
422
|
-
RnIapLog.failure("fetchProducts.native[${kind.rawValue}]", error)
|
|
423
|
-
},
|
|
424
|
-
)
|
|
425
|
-
}
|
|
426
|
-
else -> {
|
|
427
|
-
RnIapLog.payload(
|
|
428
|
-
"fetchProducts.native",
|
|
429
|
-
mapOf("skus" to skusList, "type" to queryType.rawValue)
|
|
430
|
-
)
|
|
431
|
-
val fetched = openIap.fetchProducts(ProductRequest(skusList, queryType)).productsOrEmpty()
|
|
432
|
-
RnIapLog.result(
|
|
433
|
-
"fetchProducts.native",
|
|
434
|
-
fetched.map { mapOf("id" to it.id, "type" to it.type.rawValue) }
|
|
435
|
-
)
|
|
452
|
+
RnIapLog.payload(
|
|
453
|
+
"fetchProducts.native",
|
|
454
|
+
mapOf("skus" to skusList, "type" to queryType.rawValue)
|
|
455
|
+
)
|
|
456
|
+
// Pass the query type through unchanged: the native module resolves
|
|
457
|
+
// ProductQueryType.All itself, so each sku keeps its real product type
|
|
458
|
+
// instead of being shadowed by a per-type not-found placeholder.
|
|
459
|
+
val fetched = openIap.fetchProducts(ProductRequest(skusList, queryType)).productsOrEmpty()
|
|
460
|
+
RnIapLog.result(
|
|
461
|
+
"fetchProducts.native",
|
|
462
|
+
fetched.map { mapOf("id" to it.id, "type" to it.type.rawValue) }
|
|
463
|
+
)
|
|
436
464
|
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
465
|
+
// Match the iOS bridge's result shape: preserve input order,
|
|
466
|
+
// drop duplicate skus, then append any fetched products that
|
|
467
|
+
// were not requested.
|
|
468
|
+
val byId = fetched.associateBy { it.id }
|
|
469
|
+
val seenIds = mutableSetOf<String>()
|
|
470
|
+
val orderedProducts = mutableListOf<ProductCommon>()
|
|
471
|
+
skusList.forEach { sku ->
|
|
472
|
+
byId[sku]?.takeIf { seenIds.add(it.id) }?.let(orderedProducts::add)
|
|
441
473
|
}
|
|
474
|
+
fetched.forEach { product ->
|
|
475
|
+
if (seenIds.add(product.id)) orderedProducts.add(product)
|
|
476
|
+
}
|
|
477
|
+
orderedProducts
|
|
442
478
|
} catch (e: OpenIapError) {
|
|
443
479
|
throw OpenIapException(toErrorJson(e))
|
|
444
480
|
}
|
|
@@ -902,18 +938,59 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
902
938
|
listener: (purchase: NitroPurchase) -> Unit,
|
|
903
939
|
options: PurchaseUpdatedListenerOptions?
|
|
904
940
|
): Double {
|
|
905
|
-
|
|
941
|
+
val (token, shouldFlush) = synchronized(purchaseUpdatedListeners) {
|
|
906
942
|
val token = nextPurchaseUpdatedListenerToken
|
|
907
943
|
nextPurchaseUpdatedListenerToken += 1.0
|
|
908
944
|
purchaseUpdatedListeners.add(PurchaseUpdatedListenerRegistration(token, listener))
|
|
909
|
-
|
|
945
|
+
val shouldFlush = pendingPurchaseUpdates.beginFlushIfNeeded()
|
|
946
|
+
token to shouldFlush
|
|
910
947
|
}
|
|
948
|
+
if (shouldFlush) flushPendingPurchaseUpdates()
|
|
949
|
+
return token
|
|
911
950
|
}
|
|
912
951
|
|
|
913
952
|
override fun addPurchaseErrorListener(listener: (error: NitroPurchaseResult) -> Unit) {
|
|
914
|
-
synchronized(purchaseErrorListeners) {
|
|
953
|
+
val shouldFlush = synchronized(purchaseErrorListeners) {
|
|
915
954
|
purchaseErrorListeners.add(listener)
|
|
955
|
+
pendingPurchaseErrors.beginFlushIfNeeded()
|
|
916
956
|
}
|
|
957
|
+
if (shouldFlush) flushPendingPurchaseErrors()
|
|
958
|
+
}
|
|
959
|
+
|
|
960
|
+
private fun flushPendingPurchaseUpdates() {
|
|
961
|
+
drainPendingEvents(
|
|
962
|
+
takeDelivery = {
|
|
963
|
+
synchronized(purchaseUpdatedListeners) {
|
|
964
|
+
pendingPurchaseUpdates.takeBatchOrFinish()?.let { backlog ->
|
|
965
|
+
PendingEventDelivery(
|
|
966
|
+
events = backlog,
|
|
967
|
+
listeners = purchaseUpdatedListeners.map { it.listener },
|
|
968
|
+
)
|
|
969
|
+
}
|
|
970
|
+
}
|
|
971
|
+
},
|
|
972
|
+
onDeliveryFailure = {
|
|
973
|
+
RnIapLog.failure("purchaseUpdatedListener.flush", it)
|
|
974
|
+
}
|
|
975
|
+
)
|
|
976
|
+
}
|
|
977
|
+
|
|
978
|
+
private fun flushPendingPurchaseErrors() {
|
|
979
|
+
drainPendingEvents(
|
|
980
|
+
takeDelivery = {
|
|
981
|
+
synchronized(purchaseErrorListeners) {
|
|
982
|
+
pendingPurchaseErrors.takeBatchOrFinish()?.let { backlog ->
|
|
983
|
+
PendingEventDelivery(
|
|
984
|
+
events = backlog,
|
|
985
|
+
listeners = ArrayList(purchaseErrorListeners),
|
|
986
|
+
)
|
|
987
|
+
}
|
|
988
|
+
}
|
|
989
|
+
},
|
|
990
|
+
onDeliveryFailure = {
|
|
991
|
+
RnIapLog.failure("purchaseErrorListener.flush", it)
|
|
992
|
+
}
|
|
993
|
+
)
|
|
917
994
|
}
|
|
918
995
|
|
|
919
996
|
override fun removePurchaseUpdatedListener(token: Double) {
|
|
@@ -923,9 +1000,10 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
923
1000
|
}
|
|
924
1001
|
|
|
925
1002
|
override fun removePurchaseErrorListener(listener: (error: NitroPurchaseResult) -> Unit) {
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
1003
|
+
// The JS layer registers one native fan-out callback and calls remove
|
|
1004
|
+
// only after its final JS subscriber detaches. Clearing also matches
|
|
1005
|
+
// iOS and removes stale registrations left by earlier remounts.
|
|
1006
|
+
removeSingletonBridgeListener(purchaseErrorListeners, listener)
|
|
929
1007
|
}
|
|
930
1008
|
|
|
931
1009
|
override fun addPromotedProductListenerIOS(listener: (product: NitroProduct) -> Unit) {
|
|
@@ -946,7 +1024,10 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
946
1024
|
// Helper methods
|
|
947
1025
|
|
|
948
1026
|
/**
|
|
949
|
-
* Send purchase update event to listeners
|
|
1027
|
+
* Send purchase update event to listeners.
|
|
1028
|
+
* With zero listeners attached the event is buffered (bounded, drop-oldest)
|
|
1029
|
+
* instead of dropped, and flushed FIFO when a listener registers.
|
|
1030
|
+
* Events delivered to at least one listener are never queued.
|
|
950
1031
|
*/
|
|
951
1032
|
private fun sendPurchaseUpdate(purchase: NitroPurchase) {
|
|
952
1033
|
RnIapLog.result(
|
|
@@ -954,20 +1035,32 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
954
1035
|
mapOf("productId" to purchase.productId, "platform" to purchase.platform)
|
|
955
1036
|
)
|
|
956
1037
|
val snapshot = synchronized(purchaseUpdatedListeners) {
|
|
957
|
-
purchaseUpdatedListeners.
|
|
1038
|
+
if (pendingPurchaseUpdates.enqueueIfNeeded(purchaseUpdatedListeners.isNotEmpty(), purchase)) {
|
|
1039
|
+
emptyList()
|
|
1040
|
+
} else {
|
|
1041
|
+
purchaseUpdatedListeners.map { it.listener }
|
|
1042
|
+
}
|
|
958
1043
|
}
|
|
959
1044
|
snapshot.forEach { it(purchase) }
|
|
960
1045
|
}
|
|
961
1046
|
|
|
962
1047
|
/**
|
|
963
|
-
* Send purchase error event to listeners
|
|
1048
|
+
* Send purchase error event to listeners.
|
|
1049
|
+
* Mirrors sendPurchaseUpdate: buffered (bounded, drop-oldest) while zero
|
|
1050
|
+
* listeners are attached, flushed FIFO when a listener registers.
|
|
964
1051
|
*/
|
|
965
1052
|
private fun sendPurchaseError(error: NitroPurchaseResult) {
|
|
966
1053
|
RnIapLog.result(
|
|
967
1054
|
"sendPurchaseError",
|
|
968
1055
|
mapOf("code" to error.code, "message" to error.message)
|
|
969
1056
|
)
|
|
970
|
-
val snapshot = synchronized(purchaseErrorListeners) {
|
|
1057
|
+
val snapshot = synchronized(purchaseErrorListeners) {
|
|
1058
|
+
if (pendingPurchaseErrors.enqueueIfNeeded(purchaseErrorListeners.isNotEmpty(), error)) {
|
|
1059
|
+
emptyList()
|
|
1060
|
+
} else {
|
|
1061
|
+
ArrayList(purchaseErrorListeners)
|
|
1062
|
+
}
|
|
1063
|
+
}
|
|
971
1064
|
snapshot.forEach { it(error) }
|
|
972
1065
|
}
|
|
973
1066
|
|
|
@@ -1994,6 +2087,26 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
1994
2087
|
}
|
|
1995
2088
|
}
|
|
1996
2089
|
|
|
2090
|
+
override fun openRedeemOfferCodeAndroid(): Promise<Boolean> {
|
|
2091
|
+
return Promise.async {
|
|
2092
|
+
RnIapLog.payload("openRedeemOfferCodeAndroid", null)
|
|
2093
|
+
try {
|
|
2094
|
+
withContext(Dispatchers.Main) {
|
|
2095
|
+
runCatching { context.currentActivity }.getOrNull()?.let(openIap::setActivity)
|
|
2096
|
+
}
|
|
2097
|
+
val handler = openIap.mutationHandlers.openRedeemOfferCodeAndroid
|
|
2098
|
+
?: throw OpenIapError.FeatureNotSupported()
|
|
2099
|
+
val result = handler()
|
|
2100
|
+
RnIapLog.result("openRedeemOfferCodeAndroid", result)
|
|
2101
|
+
result
|
|
2102
|
+
} catch (err: Throwable) {
|
|
2103
|
+
RnIapLog.failure("openRedeemOfferCodeAndroid", err)
|
|
2104
|
+
val errorType = parseOpenIapError(err)
|
|
2105
|
+
throw OpenIapException(toErrorJson(errorType, debugMessage = err.message), err)
|
|
2106
|
+
}
|
|
2107
|
+
}
|
|
2108
|
+
}
|
|
2109
|
+
|
|
1997
2110
|
// Billing Programs helper functions
|
|
1998
2111
|
private fun mapBillingProgram(program: BillingProgramAndroid): OpenIapBillingProgramAndroid {
|
|
1999
2112
|
return when (program) {
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
package com.margelo.nitro.iap
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Bounded FIFO used while a bridge has no listener or is flushing a backlog.
|
|
5
|
+
*
|
|
6
|
+
* This class is intentionally not synchronized. Callers must invoke every
|
|
7
|
+
* method while holding the same lock that protects their listener registry so
|
|
8
|
+
* listener changes and queue state remain atomic.
|
|
9
|
+
*/
|
|
10
|
+
internal class PendingEventBuffer<T>(
|
|
11
|
+
private val capacity: Int,
|
|
12
|
+
private val onOverflow: () -> Unit,
|
|
13
|
+
) {
|
|
14
|
+
private val events = ArrayDeque<T>()
|
|
15
|
+
private var isFlushing = false
|
|
16
|
+
|
|
17
|
+
init {
|
|
18
|
+
require(capacity > 0) { "capacity must be greater than zero" }
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/** Returns true when [event] was queued instead of delivered live. */
|
|
22
|
+
fun enqueueIfNeeded(
|
|
23
|
+
hasListeners: Boolean,
|
|
24
|
+
event: T,
|
|
25
|
+
): Boolean {
|
|
26
|
+
if (hasListeners && !isFlushing) return false
|
|
27
|
+
|
|
28
|
+
if (events.size >= capacity) {
|
|
29
|
+
events.removeFirst()
|
|
30
|
+
onOverflow()
|
|
31
|
+
}
|
|
32
|
+
events.addLast(event)
|
|
33
|
+
return true
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/** Marks the buffer as flushing when a pending backlog exists. */
|
|
37
|
+
fun beginFlushIfNeeded(): Boolean {
|
|
38
|
+
if (isFlushing || events.isEmpty()) return false
|
|
39
|
+
isFlushing = true
|
|
40
|
+
return true
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Takes the current FIFO batch. A null result completes the flush and lets
|
|
45
|
+
* subsequent events resume live delivery.
|
|
46
|
+
*/
|
|
47
|
+
fun takeBatchOrFinish(): List<T>? {
|
|
48
|
+
if (events.isEmpty()) {
|
|
49
|
+
isFlushing = false
|
|
50
|
+
return null
|
|
51
|
+
}
|
|
52
|
+
return events.toList().also { events.clear() }
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
fun clear() {
|
|
56
|
+
events.clear()
|
|
57
|
+
isFlushing = false
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
internal data class PendingEventDelivery<T>(
|
|
62
|
+
val events: List<T>,
|
|
63
|
+
val listeners: List<(T) -> Unit>,
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Drains FIFO batches against a fresh listener snapshot for each batch.
|
|
68
|
+
*
|
|
69
|
+
* Events already present when a flush begins go only to listeners registered
|
|
70
|
+
* for that batch. Listeners added while callbacks run are included in the next
|
|
71
|
+
* batch, so they receive events that arrived after their registration without
|
|
72
|
+
* receiving the earlier backlog.
|
|
73
|
+
*/
|
|
74
|
+
internal fun <T> drainPendingEvents(
|
|
75
|
+
takeDelivery: () -> PendingEventDelivery<T>?,
|
|
76
|
+
onDeliveryFailure: (Throwable) -> Unit,
|
|
77
|
+
) {
|
|
78
|
+
while (true) {
|
|
79
|
+
val delivery = takeDelivery() ?: return
|
|
80
|
+
delivery.events.forEach { event ->
|
|
81
|
+
delivery.listeners.forEach { listener ->
|
|
82
|
+
runCatching { listener(event) }.onFailure(onDeliveryFailure)
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
package/ios/HybridRnIap.swift
CHANGED
|
@@ -1506,6 +1506,12 @@ class HybridRnIap: HybridRnIapSpec {
|
|
|
1506
1506
|
}
|
|
1507
1507
|
}
|
|
1508
1508
|
|
|
1509
|
+
func openRedeemOfferCodeAndroid() throws -> Promise<Bool> {
|
|
1510
|
+
return Promise.async {
|
|
1511
|
+
throw OpenIapException.make(code: .featureNotSupported, message: "Offer-code redemption is Android-only")
|
|
1512
|
+
}
|
|
1513
|
+
}
|
|
1514
|
+
|
|
1509
1515
|
// MARK: - External Purchase (iOS 16.0+)
|
|
1510
1516
|
|
|
1511
1517
|
func canPresentExternalPurchaseNoticeIOS() throws -> Promise<Bool> {
|
|
@@ -6,7 +6,7 @@ import { Platform } from 'react-native';
|
|
|
6
6
|
import { RnIapConsole } from "../utils/debug.js";
|
|
7
7
|
|
|
8
8
|
// Internal modules
|
|
9
|
-
import { initConnection, purchaseErrorListener, purchaseUpdatedListener, promotedProductListenerIOS, getAvailablePurchases, finishTransaction as finishTransactionInternal, requestPurchase as requestPurchaseInternal, fetchProducts, validateReceipt as validateReceiptInternal, verifyPurchase as verifyPurchaseTopLevel, verifyPurchaseWithProvider as verifyPurchaseWithProviderTopLevel, getActiveSubscriptions, hasActiveSubscriptions, syncIOS, getPromotedProductIOS, requestPurchaseOnPromotedProductIOS, checkAlternativeBillingAvailabilityAndroid, showAlternativeBillingDialogAndroid, createAlternativeBillingTokenAndroid, getBillingChoiceInfoAndroid, isBillingProgramAvailableAndroid, createBillingProgramReportingDetailsAndroid, launchExternalLinkAndroid, showBillingProgramInformationDialogAndroid, showInAppMessagesAndroid, userChoiceBillingListenerAndroid, developerProvidedBillingListenerAndroid, subscriptionBillingIssueListener, isStandardIOS } from "../index.js";
|
|
9
|
+
import { initConnection, purchaseErrorListener, purchaseUpdatedListener, promotedProductListenerIOS, getAvailablePurchases, finishTransaction as finishTransactionInternal, requestPurchase as requestPurchaseInternal, fetchProducts, validateReceipt as validateReceiptInternal, verifyPurchase as verifyPurchaseTopLevel, verifyPurchaseWithProvider as verifyPurchaseWithProviderTopLevel, getActiveSubscriptions, hasActiveSubscriptions, syncIOS, getPromotedProductIOS, requestPurchaseOnPromotedProductIOS, checkAlternativeBillingAvailabilityAndroid, showAlternativeBillingDialogAndroid, createAlternativeBillingTokenAndroid, getBillingChoiceInfoAndroid, isBillingProgramAvailableAndroid, createBillingProgramReportingDetailsAndroid, launchExternalLinkAndroid, showBillingProgramInformationDialogAndroid, showInAppMessagesAndroid, openRedeemOfferCodeAndroid, userChoiceBillingListenerAndroid, developerProvidedBillingListenerAndroid, subscriptionBillingIssueListener, isStandardIOS } from "../index.js";
|
|
10
10
|
|
|
11
11
|
// Types
|
|
12
12
|
import { ErrorCode } from "../types.js";
|
|
@@ -264,10 +264,15 @@ export function useIAP(options) {
|
|
|
264
264
|
return;
|
|
265
265
|
}
|
|
266
266
|
if (!result) {
|
|
267
|
+
cleanupListeners();
|
|
267
268
|
setConnected(false);
|
|
268
269
|
RnIapConsole.warn('[useIAP] initConnection returned false');
|
|
269
270
|
return;
|
|
270
271
|
}
|
|
272
|
+
|
|
273
|
+
// Android retains events emitted during connection setup in bounded
|
|
274
|
+
// native queues; registration flushes that backlog after Nitro is ready.
|
|
275
|
+
// Other platforms preserve the existing post-init listener ordering.
|
|
271
276
|
registerListeners();
|
|
272
277
|
setConnected(true);
|
|
273
278
|
} catch (error) {
|
|
@@ -343,7 +348,8 @@ export function useIAP(options) {
|
|
|
343
348
|
createBillingProgramReportingDetailsAndroid,
|
|
344
349
|
launchExternalLinkAndroid,
|
|
345
350
|
showBillingProgramInformationDialogAndroid,
|
|
346
|
-
showInAppMessagesAndroid
|
|
351
|
+
showInAppMessagesAndroid,
|
|
352
|
+
openRedeemOfferCodeAndroid
|
|
347
353
|
} : {})
|
|
348
354
|
};
|
|
349
355
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","useState","useRef","Platform","RnIapConsole","initConnection","purchaseErrorListener","purchaseUpdatedListener","promotedProductListenerIOS","getAvailablePurchases","finishTransaction","finishTransactionInternal","requestPurchase","requestPurchaseInternal","fetchProducts","validateReceipt","validateReceiptInternal","verifyPurchase","verifyPurchaseTopLevel","verifyPurchaseWithProvider","verifyPurchaseWithProviderTopLevel","getActiveSubscriptions","hasActiveSubscriptions","syncIOS","getPromotedProductIOS","requestPurchaseOnPromotedProductIOS","checkAlternativeBillingAvailabilityAndroid","showAlternativeBillingDialogAndroid","createAlternativeBillingTokenAndroid","getBillingChoiceInfoAndroid","isBillingProgramAvailableAndroid","createBillingProgramReportingDetailsAndroid","launchExternalLinkAndroid","showBillingProgramInformationDialogAndroid","showInAppMessagesAndroid","userChoiceBillingListenerAndroid","developerProvidedBillingListenerAndroid","subscriptionBillingIssueListener","isStandardIOS","ErrorCode","useIAP","options","connected","setConnected","products","setProducts","subscriptions","setSubscriptions","availablePurchases","setAvailablePurchases","promotedProductIOS","setPromotedProductIOS","activeSubscriptions","setActiveSubscriptions","optionsRef","connectedRef","mergeWithDuplicateCheck","existingItems","newItems","getKey","merged","forEach","newItem","isDuplicate","some","existingItem","push","current","subscriptionsRef","isMountedRef","subscriptionsRefState","invokeOnError","error","onError","Error","String","fetchProductsInternal","params","warn","requestType","type","debug","skus","result","length","items","prevSubscriptions","subscription","id","newProducts","filter","item","newSubscriptions","prevProducts","product","getAvailablePurchasesInternal","alsoPublishToEventListenerIOS","onlyIncludeActiveItemsIOS","includeSuspendedAndroid","getActiveSubscriptionsInternal","subscriptionIds","hasActiveSubscriptionsInternal","args","requestObj","restorePurchases","OS","buildAndroidConfig","config","enableBillingProgramAndroid","billingChoiceScreenTypeAndroid","alternativeBillingModeAndroid","registerListeners","purchaseUpdate","purchase","e","onPurchaseSuccess","purchaseUpdatedListenerOptions","purchaseError","code","InitConnection","onPurchaseError","onPromotedProductIOS","onUserChoiceBillingAndroid","userChoiceBillingAndroid","details","onDeveloperProvidedBillingAndroid","developerProvidedBillingAndroid","subscriptionBillingIssue","onSubscriptionBillingIssue","cleanupListeners","remove","undefined","initIapWithSubscriptions","reconnect"],"sourceRoot":"../../../src","sources":["hooks/useIAP.ts"],"mappings":";;AAAA;AACA,SAAQA,WAAW,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,QAAO,OAAO;AAC9D,SAAQC,QAAQ,QAAO,cAAc;AACrC,SAAQC,YAAY,QAAO,mBAAgB;;AAE3C;AACA,SACEC,cAAc,EACdC,qBAAqB,EACrBC,uBAAuB,EACvBC,0BAA0B,EAC1BC,qBAAqB,EACrBC,iBAAiB,IAAIC,yBAAyB,EAC9CC,eAAe,IAAIC,uBAAuB,EAC1CC,aAAa,EACbC,eAAe,IAAIC,uBAAuB,EAC1CC,cAAc,IAAIC,sBAAsB,EACxCC,0BAA0B,IAAIC,kCAAkC,EAChEC,sBAAsB,EACtBC,sBAAsB,EACtBC,OAAO,EACPC,qBAAqB,EACrBC,mCAAmC,EACnCC,0CAA0C,EAC1CC,mCAAmC,EACnCC,oCAAoC,EACpCC,2BAA2B,EAC3BC,gCAAgC,EAChCC,2CAA2C,EAC3CC,yBAAyB,EACzBC,0CAA0C,EAC1CC,wBAAwB,EACxBC,gCAAgC,EAChCC,uCAAuC,EACvCC,gCAAgC,EAChCC,aAAa,QACR,aAAK;;AAEZ;AACA,SAAQC,SAAS,QAAO,aAAU;;AA2BlC;;AAqRA;AACA;AACA;AACA;AACA,OAAO,SAASC,MAAMA,CAACC,OAAuB,EAAU;EACtD,MAAM,CAACC,SAAS,EAAEC,YAAY,CAAC,GAAG1C,QAAQ,CAAU,KAAK,CAAC;EAC1D,MAAM,CAAC2C,QAAQ,EAAEC,WAAW,CAAC,GAAG5C,QAAQ,CAAY,EAAE,CAAC;EACvD,MAAM,CAAC6C,aAAa,EAAEC,gBAAgB,CAAC,GAAG9C,QAAQ,CAAwB,EAAE,CAAC;EAC7E,MAAM,CAAC+C,kBAAkB,EAAEC,qBAAqB,CAAC,GAAGhD,QAAQ,CAAa,EAAE,CAAC;EAC5E,MAAM,CAACiD,kBAAkB,EAAEC,qBAAqB,CAAC,GAAGlD,QAAQ,CAAU,CAAC;EACvE,MAAM,CAACmD,mBAAmB,EAAEC,sBAAsB,CAAC,GAAGpD,QAAQ,CAE5D,EAAE,CAAC;EAEL,MAAMqD,UAAU,GAAGpD,MAAM,CAA4BuC,OAAO,CAAC;EAC7D,MAAMc,YAAY,GAAGrD,MAAM,CAAU,KAAK,CAAC;;EAE3C;EACA,MAAMsD,uBAAuB,GAAGzD,WAAW,CACzC,CACE0D,aAAkB,EAClBC,QAAa,EACbC,MAA2B,KACnB;IACR,MAAMC,MAAM,GAAG,CAAC,GAAGH,aAAa,CAAC;IACjCC,QAAQ,CAACG,OAAO,CAAEC,OAAO,IAAK;MAC5B,MAAMC,WAAW,GAAGH,MAAM,CAACI,IAAI,CAC5BC,YAAY,IAAKN,MAAM,CAACM,YAAY,CAAC,KAAKN,MAAM,CAACG,OAAO,CAC3D,CAAC;MACD,IAAI,CAACC,WAAW,EAAE;QAChBH,MAAM,CAACM,IAAI,CAACJ,OAAO,CAAC;MACtB;IACF,CAAC,CAAC;IACF,OAAOF,MAAM;EACf,CAAC,EACD,EACF,CAAC;EAED5D,SAAS,CAAC,MAAM;IACdsD,UAAU,CAACa,OAAO,GAAG1B,OAAO;EAC9B,CAAC,EAAE,CAACA,OAAO,CAAC,CAAC;EAEbzC,SAAS,CAAC,MAAM;IACduD,YAAY,CAACY,OAAO,GAAGzB,SAAS;EAClC,CAAC,EAAE,CAACA,SAAS,CAAC,CAAC;EAEf,MAAM0B,gBAAgB,GAAGlE,MAAM,CAO5B,CAAC,CAAC,CAAC;;EAEN;EACA,MAAMmE,YAAY,GAAGnE,MAAM,CAAU,IAAI,CAAC;EAE1C,MAAMoE,qBAAqB,GAAGpE,MAAM,CAAwB,EAAE,CAAC;EAE/DF,SAAS,CAAC,MAAM;IACdsE,qBAAqB,CAACH,OAAO,GAAGrB,aAAa;EAC/C,CAAC,EAAE,CAACA,aAAa,CAAC,CAAC;;EAEnB;EACA,MAAMyB,aAAa,GAAGxE,WAAW,CAAEyE,KAAc,IAAK;IACpD,IAAIlB,UAAU,CAACa,OAAO,EAAEM,OAAO,EAAE;MAC/BnB,UAAU,CAACa,OAAO,CAACM,OAAO,CACxBD,KAAK,YAAYE,KAAK,GAAGF,KAAK,GAAG,IAAIE,KAAK,CAACC,MAAM,CAACH,KAAK,CAAC,CAC1D,CAAC;IACH;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMI,qBAAqB,GAAG7E,WAAW,CACvC,MAAO8E,MAGN,IAAoB;IACnB,IAAI,CAACtB,YAAY,CAACY,OAAO,EAAE;MACzB/D,YAAY,CAAC0E,IAAI,CACf,2DACF,CAAC;MACD;IACF;IACA,IAAI;MACF,MAAMC,WAAW,GAAGF,MAAM,CAACG,IAAI,IAAI,QAAQ;MAC3C5E,YAAY,CAAC6E,KAAK,CAAC,sCAAsC,EAAE;QACzDC,IAAI,EAAEL,MAAM,CAACK,IAAI;QACjBF,IAAI,EAAED;MACR,CAAC,CAAC;MACF,MAAMI,MAAM,GAAG,MAAMrE,aAAa,CAAC;QACjCoE,IAAI,EAAEL,MAAM,CAACK,IAAI;QACjBF,IAAI,EAAED;MACR,CAAC,CAAC;MACF3E,YAAY,CAAC6E,KAAK,CAChB,+BAA+B,EAC/BE,MAAM,EAAEC,MAAM,IAAI,CACpB,CAAC;MACD,MAAMC,KAAK,GAAIF,MAAM,IAAI,EAAwC;;MAEjE;MACA,IAAIJ,WAAW,KAAK,MAAM,EAAE;QAC1B;QACAhC,gBAAgB,CAAEuC,iBAAwC,IACxD9B,uBAAuB,CACrB8B,iBAAiB,EACjBD,KAAK,EACJE,YAAiC,IAAKA,YAAY,CAACC,EACtD,CACF,CAAC;QACD;MACF;MAEA,IAAIT,WAAW,KAAK,KAAK,EAAE;QACzB;QACA,MAAMU,WAAW,GAAGJ,KAAK,CAACK,MAAM,CAC7BC,IAAI,IAAsBA,IAAI,CAACX,IAAI,KAAK,QAC3C,CAAC;QACD,MAAMY,gBAAgB,GAAGP,KAAK,CAACK,MAAM,CAClCC,IAAI,IAAkCA,IAAI,CAACX,IAAI,KAAK,MACvD,CAAC;QAEDnC,WAAW,CAAEgD,YAAuB,IAClCrC,uBAAuB,CACrBqC,YAAY,EACZJ,WAAW,EACVK,OAAgB,IAAKA,OAAO,CAACN,EAChC,CACF,CAAC;QACDzC,gBAAgB,CAAEuC,iBAAwC,IACxD9B,uBAAuB,CACrB8B,iBAAiB,EACjBM,gBAAgB,EACfL,YAAiC,IAAKA,YAAY,CAACC,EACtD,CACF,CAAC;QACD;MACF;;MAEA;MACA3C,WAAW,CAAEgD,YAAuB,IAClCrC,uBAAuB,CACrBqC,YAAY,EACZR,KAAK,EACJS,OAAgB,IAAKA,OAAO,CAACN,EAChC,CACF,CAAC;IACH,CAAC,CAAC,OAAOhB,KAAK,EAAE;MACdpE,YAAY,CAACoE,KAAK,CAAC,0BAA0B,EAAEA,KAAK,CAAC;MACrDD,aAAa,CAACC,KAAK,CAAC;IACtB;EACF,CAAC,EACD,CAAChB,uBAAuB,EAAEe,aAAa,CACzC,CAAC;EAED,MAAMwB,6BAA6B,GAAGhG,WAAW,CAC/C,MAAO0C,OAAyB,IAAoB;IAClD,IAAI;MACF,MAAM0C,MAAM,GAAG,MAAM1E,qBAAqB,CAAC;QACzCuF,6BAA6B,EAC3BvD,OAAO,EAAEuD,6BAA6B,IAAI,KAAK;QACjDC,yBAAyB,EAAExD,OAAO,EAAEwD,yBAAyB,IAAI,IAAI;QACrEC,uBAAuB,EAAEzD,OAAO,EAAEyD,uBAAuB,IAAI;MAC/D,CAAC,CAAC;MACF,IAAI7B,YAAY,CAACF,OAAO,EAAE;QACxBlB,qBAAqB,CAACkC,MAAM,CAAC;MAC/B;IACF,CAAC,CAAC,OAAOX,KAAK,EAAE;MACdpE,YAAY,CAACoE,KAAK,CAAC,qCAAqC,EAAEA,KAAK,CAAC;MAChED,aAAa,CAACC,KAAK,CAAC;IACtB;EACF,CAAC,EACD,CAACD,aAAa,CAChB,CAAC;EAED,MAAM4B,8BAA8B,GAAGpG,WAAW,CAChD,MAAOqG,eAA0B,IAAoC;IACnE,IAAI;MACF,MAAMjB,MAAM,GAAG,MAAM9D,sBAAsB,CAAC+E,eAAe,CAAC;MAC5D,IAAI/B,YAAY,CAACF,OAAO,EAAE;QACxBd,sBAAsB,CAAC8B,MAAM,CAAC;MAChC;MACA,OAAOA,MAAM;IACf,CAAC,CAAC,OAAOX,KAAK,EAAE;MACdpE,YAAY,CAACoE,KAAK,CAAC,qCAAqC,EAAEA,KAAK,CAAC;MAChED,aAAa,CAACC,KAAK,CAAC;MACpB,OAAO,EAAE;IACX;EACF,CAAC,EACD,CAACD,aAAa,CAChB,CAAC;EAED,MAAM8B,8BAA8B,GAAGtG,WAAW,CAChD,MAAOqG,eAA0B,IAAuB;IACtD,IAAI;MACF,OAAO,MAAM9E,sBAAsB,CAAC8E,eAAe,CAAC;IACtD,CAAC,CAAC,OAAO5B,KAAK,EAAE;MACdpE,YAAY,CAACoE,KAAK,CAAC,sCAAsC,EAAEA,KAAK,CAAC;MACjED,aAAa,CAACC,KAAK,CAAC;MACpB,OAAO,KAAK;IACd;EACF,CAAC,EACD,CAACD,aAAa,CAChB,CAAC;EAED,MAAM7D,iBAAiB,GAAGX,WAAW,CACnC,MAAOuG,IAAmC,IAAoB;IAC5D;IACA;IACA;IACA;IACA;IACA,MAAM3F,yBAAyB,CAAC2F,IAAI,CAAC;EACvC,CAAC,EACD,EACF,CAAC;EAED,MAAM1F,eAAe,GAAGb,WAAW,CACjC,MAAOwG,UAAgC,IAAoB;IACzD,MAAM1F,uBAAuB,CAAC0F,UAAU,CAAC;EAC3C,CAAC,EACD,EACF,CAAC;EAED,MAAMC,gBAAgB,GAAGzG,WAAW,CAClC,MAAO0C,OAAyB,IAAoB;IAClD,IAAI;MACF,IAAItC,QAAQ,CAACsG,EAAE,KAAK,KAAK,EAAE;QACzB,MAAMlF,OAAO,CAAC,CAAC;MACjB;MAEA,MAAMwE,6BAA6B,CAACtD,OAAO,CAAC;IAC9C,CAAC,CAAC,OAAO+B,KAAK,EAAE;MACdpE,YAAY,CAAC0E,IAAI,CAAC,8BAA8B,EAAEN,KAAK,CAAC;MACxDD,aAAa,CAACC,KAAK,CAAC;IACtB;EACF,CAAC,EACD,CAACuB,6BAA6B,EAAExB,aAAa,CAC/C,CAAC;EAED,MAAMxD,eAAe,GAAGhB,WAAW,CACjC,MAAO0C,OAA4B,IACjCzB,uBAAuB,CAACyB,OAAO,CAAC,EAClC,EACF,CAAC;EAED,MAAMxB,cAAc,GAAGlB,WAAW,CAChC,MAAO0C,OAA4B,IAAoC;IACrE,OAAOvB,sBAAsB,CAACuB,OAAO,CAAC;EACxC,CAAC,EACD,EACF,CAAC;EAED,MAAMtB,0BAA0B,GAAGpB,WAAW,CAC5C,MACE0C,OAAwC,IACM;IAC9C,OAAOrB,kCAAkC,CAACqB,OAAO,CAAC;EACpD,CAAC,EACD,EACF,CAAC;;EAED;EACA,MAAMiE,kBAAkB,GAAG3G,WAAW,CAAC,MAAM;IAC3C,IAAI4G,MAMS;IAEb,IAAIxG,QAAQ,CAACsG,EAAE,KAAK,SAAS,EAAE;MAC7B,IAAInD,UAAU,CAACa,OAAO,EAAEyC,2BAA2B,EAAE;QACnDD,MAAM,GAAG;UACPC,2BAA2B,EACzBtD,UAAU,CAACa,OAAO,CAACyC,2BAA2B;UAChD,IAAItD,UAAU,CAACa,OAAO,CAAC0C,8BAA8B,GACjD;YACEA,8BAA8B,EAC5BvD,UAAU,CAACa,OAAO,CAAC0C;UACvB,CAAC,GACD,CAAC,CAAC;QACR,CAAC;MACH,CAAC,MAAM,IAAIvD,UAAU,CAACa,OAAO,EAAE2C,6BAA6B,EAAE;QAC5DH,MAAM,GAAG;UACPG,6BAA6B,EAC3BxD,UAAU,CAACa,OAAO,CAAC2C;QACvB,CAAC;MACH;IACF;IAEA,OAAOH,MAAM;EACf,CAAC,EAAE,EAAE,CAAC;;EAEN;EACA,MAAMI,iBAAiB,GAAGhH,WAAW,CAAC,MAAM;IAC1C,IAAI,CAACqE,gBAAgB,CAACD,OAAO,CAAC6C,cAAc,EAAE;MAC5C5C,gBAAgB,CAACD,OAAO,CAAC6C,cAAc,GAAGzG,uBAAuB,CAC/D,MAAO0G,QAAkB,IAAK;QAC5B,IAAI;UACF,MAAMd,8BAA8B,CAAC,CAAC;UACtC,MAAMJ,6BAA6B,CAAC,CAAC;QACvC,CAAC,CAAC,OAAOmB,CAAC,EAAE;UACV9G,YAAY,CAAC0E,IAAI,CAAC,wCAAwC,EAAEoC,CAAC,CAAC;QAChE;QACA,IAAI5D,UAAU,CAACa,OAAO,EAAEgD,iBAAiB,EAAE;UACzC7D,UAAU,CAACa,OAAO,CAACgD,iBAAiB,CAACF,QAAQ,CAAC;QAChD;MACF,CAAC,EACD3D,UAAU,CAACa,OAAO,EAAEiD,8BACtB,CAAC;IACH;IAEA,IAAI,CAAChD,gBAAgB,CAACD,OAAO,CAACkD,aAAa,EAAE;MAC3CjD,gBAAgB,CAACD,OAAO,CAACkD,aAAa,GAAG/G,qBAAqB,CAC3DkE,KAAK,IAAK;QACT,IACEA,KAAK,CAAC8C,IAAI,KAAK/E,SAAS,CAACgF,cAAc,IACvC,CAAChE,YAAY,CAACY,OAAO,EACrB;UACA;QACF;QACA,IAAIb,UAAU,CAACa,OAAO,EAAEqD,eAAe,EAAE;UACvClE,UAAU,CAACa,OAAO,CAACqD,eAAe,CAAChD,KAAK,CAAC;QAC3C;MACF,CACF,CAAC;IACH;IAEA,IAAIlC,aAAa,CAAC,CAAC,IAAI,CAAC8B,gBAAgB,CAACD,OAAO,CAACjB,kBAAkB,EAAE;MACnEkB,gBAAgB,CAACD,OAAO,CAACjB,kBAAkB,GAAG1C,0BAA0B,CACrEsF,OAAgB,IAAK;QACpB3C,qBAAqB,CAAC2C,OAAO,CAAC;QAC9B,IAAIxC,UAAU,CAACa,OAAO,EAAEsD,oBAAoB,EAAE;UAC5CnE,UAAU,CAACa,OAAO,CAACsD,oBAAoB,CAAC3B,OAAO,CAAC;QAClD;MACF,CACF,CAAC;IACH;IAEA,IACE3F,QAAQ,CAACsG,EAAE,KAAK,SAAS,IACzBnD,UAAU,CAACa,OAAO,EAAEuD,0BAA0B,IAC9C,CAACtD,gBAAgB,CAACD,OAAO,CAACwD,wBAAwB,EAClD;MACAvD,gBAAgB,CAACD,OAAO,CAACwD,wBAAwB,GAC/CxF,gCAAgC,CAAEyF,OAAO,IAAK;QAC5C,IAAItE,UAAU,CAACa,OAAO,EAAEuD,0BAA0B,EAAE;UAClDpE,UAAU,CAACa,OAAO,CAACuD,0BAA0B,CAACE,OAAO,CAAC;QACxD;MACF,CAAC,CAAC;IACN;IAEA,IACEzH,QAAQ,CAACsG,EAAE,KAAK,SAAS,IACzBnD,UAAU,CAACa,OAAO,EAAE0D,iCAAiC,IACrD,CAACzD,gBAAgB,CAACD,OAAO,CAAC2D,+BAA+B,EACzD;MACA1D,gBAAgB,CAACD,OAAO,CAAC2D,+BAA+B,GACtD1F,uCAAuC,CAAEwF,OAAO,IAAK;QACnDtE,UAAU,CAACa,OAAO,EAAE0D,iCAAiC,GAAGD,OAAO,CAAC;MAClE,CAAC,CAAC;IACN;;IAEA;IACA;IACA,IAAI,CAACxD,gBAAgB,CAACD,OAAO,CAAC4D,wBAAwB,EAAE;MACtD3D,gBAAgB,CAACD,OAAO,CAAC4D,wBAAwB,GAC/C1F,gCAAgC,CAAE4E,QAAkB,IAAK;QACvD3D,UAAU,CAACa,OAAO,EAAE6D,0BAA0B,GAAGf,QAAQ,CAAC;MAC5D,CAAC,CAAC;IACN;EACF,CAAC,EAAE,CAACd,8BAA8B,EAAEJ,6BAA6B,CAAC,CAAC;;EAEnE;EACA,MAAMkC,gBAAgB,GAAGlI,WAAW,CAAC,MAAM;IACzCqE,gBAAgB,CAACD,OAAO,CAAC6C,cAAc,EAAEkB,MAAM,CAAC,CAAC;IACjD9D,gBAAgB,CAACD,OAAO,CAACkD,aAAa,EAAEa,MAAM,CAAC,CAAC;IAChD9D,gBAAgB,CAACD,OAAO,CAACjB,kBAAkB,EAAEgF,MAAM,CAAC,CAAC;IACrD9D,gBAAgB,CAACD,OAAO,CAACwD,wBAAwB,EAAEO,MAAM,CAAC,CAAC;IAC3D9D,gBAAgB,CAACD,OAAO,CAAC2D,+BAA+B,EAAEI,MAAM,CAAC,CAAC;IAClE9D,gBAAgB,CAACD,OAAO,CAAC4D,wBAAwB,EAAEG,MAAM,CAAC,CAAC;IAC3D9D,gBAAgB,CAACD,OAAO,CAAC6C,cAAc,GAAGmB,SAAS;IACnD/D,gBAAgB,CAACD,OAAO,CAACkD,aAAa,GAAGc,SAAS;IAClD/D,gBAAgB,CAACD,OAAO,CAACjB,kBAAkB,GAAGiF,SAAS;IACvD/D,gBAAgB,CAACD,OAAO,CAACwD,wBAAwB,GAAGQ,SAAS;IAC7D/D,gBAAgB,CAACD,OAAO,CAAC2D,+BAA+B,GAAGK,SAAS;IACpE/D,gBAAgB,CAACD,OAAO,CAAC4D,wBAAwB,GAAGI,SAAS;EAC/D,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMC,wBAAwB,GAAGrI,WAAW,CAAC,YAA2B;IACtE,MAAM4G,MAAM,GAAGD,kBAAkB,CAAC,CAAC;IAEnC,IAAI;MACF,MAAMvB,MAAM,GAAG,MAAM9E,cAAc,CAACsG,MAAM,CAAC;MAE3C,IAAI,CAACtC,YAAY,CAACF,OAAO,EAAE;QACzB;MACF;MAEA,IAAI,CAACgB,MAAM,EAAE;QACXxC,YAAY,CAAC,KAAK,CAAC;QACnBvC,YAAY,CAAC0E,IAAI,CAAC,wCAAwC,CAAC;QAC3D;MACF;MAEAiC,iBAAiB,CAAC,CAAC;MACnBpE,YAAY,CAAC,IAAI,CAAC;IACpB,CAAC,CAAC,OAAO6B,KAAK,EAAE;MACdpE,YAAY,CAACoE,KAAK,CAAC,wBAAwB,EAAEA,KAAK,CAAC;MACnDyD,gBAAgB,CAAC,CAAC;MAClB,IAAI5D,YAAY,CAACF,OAAO,EAAE;QACxBxB,YAAY,CAAC,KAAK,CAAC;MACrB;MACA4B,aAAa,CAACC,KAAK,CAAC;IACtB;EACF,CAAC,EAAE,CAACkC,kBAAkB,EAAEK,iBAAiB,EAAEkB,gBAAgB,EAAE1D,aAAa,CAAC,CAAC;EAE5E,MAAM8D,SAAS,GAAGtI,WAAW,CAAC,YAA8B;IAC1D,MAAM4G,MAAM,GAAGD,kBAAkB,CAAC,CAAC;IAEnC,IAAI;MACF,MAAMvB,MAAM,GAAG,MAAM9E,cAAc,CAACsG,MAAM,CAAC;MAE3C,IAAI,CAACtC,YAAY,CAACF,OAAO,EAAE;QACzB,OAAO,KAAK;MACd;MAEA,IAAIgB,MAAM,EAAE;QACV4B,iBAAiB,CAAC,CAAC;QACnBpE,YAAY,CAAC,IAAI,CAAC;QAClB,OAAO,IAAI;MACb;MAEAA,YAAY,CAAC,KAAK,CAAC;MACnB,OAAO,KAAK;IACd,CAAC,CAAC,OAAO6B,KAAK,EAAE;MACdpE,YAAY,CAACoE,KAAK,CAAC,4BAA4B,EAAEA,KAAK,CAAC;MACvDyD,gBAAgB,CAAC,CAAC;MAClB,IAAI5D,YAAY,CAACF,OAAO,EAAE;QACxBxB,YAAY,CAAC,KAAK,CAAC;MACrB;MACA4B,aAAa,CAACC,KAAK,CAAC;MACpB,OAAO,KAAK;IACd;EACF,CAAC,EAAE,CAACkC,kBAAkB,EAAEK,iBAAiB,EAAEkB,gBAAgB,EAAE1D,aAAa,CAAC,CAAC;EAE5EvE,SAAS,CAAC,MAAM;IACdqE,YAAY,CAACF,OAAO,GAAG,IAAI;IAC3BiE,wBAAwB,CAAC,CAAC;IAE1B,OAAO,MAAM;MACX/D,YAAY,CAACF,OAAO,GAAG,KAAK;MAC5B8D,gBAAgB,CAAC,CAAC;MAClB;MACAtF,YAAY,CAAC,KAAK,CAAC;IACrB,CAAC;EACH,CAAC,EAAE,CAACyF,wBAAwB,EAAEH,gBAAgB,CAAC,CAAC;EAEhD,OAAO;IACLvF,SAAS;IACTE,QAAQ;IACRE,aAAa;IACbpC,iBAAiB;IACjBsC,kBAAkB;IAClBE,kBAAkB;IAClBE,mBAAmB;IACnB3C,qBAAqB,EAAEsF,6BAA6B;IACpDjF,aAAa,EAAE8D,qBAAqB;IACpChE,eAAe;IACfG,eAAe;IACfE,cAAc;IACdE,0BAA0B;IAC1BqF,gBAAgB;IAChBhF,qBAAqB;IACrBC,mCAAmC;IACnCJ,sBAAsB,EAAE8E,8BAA8B;IACtD7E,sBAAsB,EAAE+E,8BAA8B;IACtDgC,SAAS;IACT;IACA,IAAIlI,QAAQ,CAACsG,EAAE,KAAK,SAAS,GACzB;MACE/E,0CAA0C;MAC1CC,mCAAmC;MACnCC,oCAAoC;MACpCC,2BAA2B;MAC3BC,gCAAgC;MAChCC,2CAA2C;MAC3CC,yBAAyB;MACzBC,0CAA0C;MAC1CC;IACF,CAAC,GACD,CAAC,CAAC;EACR,CAAC;AACH","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useState","useRef","Platform","RnIapConsole","initConnection","purchaseErrorListener","purchaseUpdatedListener","promotedProductListenerIOS","getAvailablePurchases","finishTransaction","finishTransactionInternal","requestPurchase","requestPurchaseInternal","fetchProducts","validateReceipt","validateReceiptInternal","verifyPurchase","verifyPurchaseTopLevel","verifyPurchaseWithProvider","verifyPurchaseWithProviderTopLevel","getActiveSubscriptions","hasActiveSubscriptions","syncIOS","getPromotedProductIOS","requestPurchaseOnPromotedProductIOS","checkAlternativeBillingAvailabilityAndroid","showAlternativeBillingDialogAndroid","createAlternativeBillingTokenAndroid","getBillingChoiceInfoAndroid","isBillingProgramAvailableAndroid","createBillingProgramReportingDetailsAndroid","launchExternalLinkAndroid","showBillingProgramInformationDialogAndroid","showInAppMessagesAndroid","openRedeemOfferCodeAndroid","userChoiceBillingListenerAndroid","developerProvidedBillingListenerAndroid","subscriptionBillingIssueListener","isStandardIOS","ErrorCode","useIAP","options","connected","setConnected","products","setProducts","subscriptions","setSubscriptions","availablePurchases","setAvailablePurchases","promotedProductIOS","setPromotedProductIOS","activeSubscriptions","setActiveSubscriptions","optionsRef","connectedRef","mergeWithDuplicateCheck","existingItems","newItems","getKey","merged","forEach","newItem","isDuplicate","some","existingItem","push","current","subscriptionsRef","isMountedRef","subscriptionsRefState","invokeOnError","error","onError","Error","String","fetchProductsInternal","params","warn","requestType","type","debug","skus","result","length","items","prevSubscriptions","subscription","id","newProducts","filter","item","newSubscriptions","prevProducts","product","getAvailablePurchasesInternal","alsoPublishToEventListenerIOS","onlyIncludeActiveItemsIOS","includeSuspendedAndroid","getActiveSubscriptionsInternal","subscriptionIds","hasActiveSubscriptionsInternal","args","requestObj","restorePurchases","OS","buildAndroidConfig","config","enableBillingProgramAndroid","billingChoiceScreenTypeAndroid","alternativeBillingModeAndroid","registerListeners","purchaseUpdate","purchase","e","onPurchaseSuccess","purchaseUpdatedListenerOptions","purchaseError","code","InitConnection","onPurchaseError","onPromotedProductIOS","onUserChoiceBillingAndroid","userChoiceBillingAndroid","details","onDeveloperProvidedBillingAndroid","developerProvidedBillingAndroid","subscriptionBillingIssue","onSubscriptionBillingIssue","cleanupListeners","remove","undefined","initIapWithSubscriptions","reconnect"],"sourceRoot":"../../../src","sources":["hooks/useIAP.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -310,6 +310,14 @@ export const purchaseErrorListener = listener => {
|
|
|
310
310
|
return {
|
|
311
311
|
remove: () => {
|
|
312
312
|
purchaseErrorJsListeners.delete(listener);
|
|
313
|
+
if (purchaseErrorJsListeners.size === 0 && purchaseErrorNativeAttached) {
|
|
314
|
+
try {
|
|
315
|
+
IAP.instance.removePurchaseErrorListener(purchaseErrorNativeHandler);
|
|
316
|
+
purchaseErrorNativeAttached = false;
|
|
317
|
+
} catch (e) {
|
|
318
|
+
RnIapConsole.warn('[purchaseErrorListener] native remove failed:', e);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
313
321
|
}
|
|
314
322
|
};
|
|
315
323
|
};
|
|
@@ -1595,6 +1603,31 @@ export const consumePurchaseAndroid = async purchaseToken => {
|
|
|
1595
1603
|
}
|
|
1596
1604
|
};
|
|
1597
1605
|
|
|
1606
|
+
/**
|
|
1607
|
+
* Open the Google Play offer/promo code redemption page (Android only).
|
|
1608
|
+
* On Google Play builds, launches the Play Store redeem page so the user can
|
|
1609
|
+
* enter a code. Returns false on store flavors without an equivalent flow.
|
|
1610
|
+
* Does not require the billing client to be initialized. Reconcile purchases
|
|
1611
|
+
* when the app resumes because listener delivery depends on connection state.
|
|
1612
|
+
*
|
|
1613
|
+
* @returns Promise<boolean> - true when the redemption page was launched
|
|
1614
|
+
* @platform Android
|
|
1615
|
+
*
|
|
1616
|
+
* @example
|
|
1617
|
+
* ```typescript
|
|
1618
|
+
* await openRedeemOfferCodeAndroid();
|
|
1619
|
+
* // Reconcile with getAvailablePurchases() when the app resumes.
|
|
1620
|
+
* ```
|
|
1621
|
+
*
|
|
1622
|
+
* @see {@link https://openiap.dev/docs/apis/android/open-redeem-offer-code-android}
|
|
1623
|
+
*/
|
|
1624
|
+
export const openRedeemOfferCodeAndroid = async () => {
|
|
1625
|
+
if (Platform.OS !== 'android') {
|
|
1626
|
+
throw new Error('openRedeemOfferCodeAndroid is only supported on Android');
|
|
1627
|
+
}
|
|
1628
|
+
return IAP.instance.openRedeemOfferCodeAndroid();
|
|
1629
|
+
};
|
|
1630
|
+
|
|
1598
1631
|
// ============================================================================
|
|
1599
1632
|
// iOS-SPECIFIC FUNCTIONS
|
|
1600
1633
|
// ============================================================================
|