react-native-iap 15.5.4 → 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 +135 -11
- 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
|
@@ -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() }
|
|
@@ -891,18 +938,59 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
891
938
|
listener: (purchase: NitroPurchase) -> Unit,
|
|
892
939
|
options: PurchaseUpdatedListenerOptions?
|
|
893
940
|
): Double {
|
|
894
|
-
|
|
941
|
+
val (token, shouldFlush) = synchronized(purchaseUpdatedListeners) {
|
|
895
942
|
val token = nextPurchaseUpdatedListenerToken
|
|
896
943
|
nextPurchaseUpdatedListenerToken += 1.0
|
|
897
944
|
purchaseUpdatedListeners.add(PurchaseUpdatedListenerRegistration(token, listener))
|
|
898
|
-
|
|
945
|
+
val shouldFlush = pendingPurchaseUpdates.beginFlushIfNeeded()
|
|
946
|
+
token to shouldFlush
|
|
899
947
|
}
|
|
948
|
+
if (shouldFlush) flushPendingPurchaseUpdates()
|
|
949
|
+
return token
|
|
900
950
|
}
|
|
901
951
|
|
|
902
952
|
override fun addPurchaseErrorListener(listener: (error: NitroPurchaseResult) -> Unit) {
|
|
903
|
-
synchronized(purchaseErrorListeners) {
|
|
953
|
+
val shouldFlush = synchronized(purchaseErrorListeners) {
|
|
904
954
|
purchaseErrorListeners.add(listener)
|
|
955
|
+
pendingPurchaseErrors.beginFlushIfNeeded()
|
|
905
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
|
+
)
|
|
906
994
|
}
|
|
907
995
|
|
|
908
996
|
override fun removePurchaseUpdatedListener(token: Double) {
|
|
@@ -912,9 +1000,10 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
912
1000
|
}
|
|
913
1001
|
|
|
914
1002
|
override fun removePurchaseErrorListener(listener: (error: NitroPurchaseResult) -> Unit) {
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
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)
|
|
918
1007
|
}
|
|
919
1008
|
|
|
920
1009
|
override fun addPromotedProductListenerIOS(listener: (product: NitroProduct) -> Unit) {
|
|
@@ -935,7 +1024,10 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
935
1024
|
// Helper methods
|
|
936
1025
|
|
|
937
1026
|
/**
|
|
938
|
-
* 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.
|
|
939
1031
|
*/
|
|
940
1032
|
private fun sendPurchaseUpdate(purchase: NitroPurchase) {
|
|
941
1033
|
RnIapLog.result(
|
|
@@ -943,20 +1035,32 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
943
1035
|
mapOf("productId" to purchase.productId, "platform" to purchase.platform)
|
|
944
1036
|
)
|
|
945
1037
|
val snapshot = synchronized(purchaseUpdatedListeners) {
|
|
946
|
-
purchaseUpdatedListeners.
|
|
1038
|
+
if (pendingPurchaseUpdates.enqueueIfNeeded(purchaseUpdatedListeners.isNotEmpty(), purchase)) {
|
|
1039
|
+
emptyList()
|
|
1040
|
+
} else {
|
|
1041
|
+
purchaseUpdatedListeners.map { it.listener }
|
|
1042
|
+
}
|
|
947
1043
|
}
|
|
948
1044
|
snapshot.forEach { it(purchase) }
|
|
949
1045
|
}
|
|
950
1046
|
|
|
951
1047
|
/**
|
|
952
|
-
* 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.
|
|
953
1051
|
*/
|
|
954
1052
|
private fun sendPurchaseError(error: NitroPurchaseResult) {
|
|
955
1053
|
RnIapLog.result(
|
|
956
1054
|
"sendPurchaseError",
|
|
957
1055
|
mapOf("code" to error.code, "message" to error.message)
|
|
958
1056
|
)
|
|
959
|
-
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
|
+
}
|
|
960
1064
|
snapshot.forEach { it(error) }
|
|
961
1065
|
}
|
|
962
1066
|
|
|
@@ -1983,6 +2087,26 @@ class HybridRnIap : HybridRnIapSpec() {
|
|
|
1983
2087
|
}
|
|
1984
2088
|
}
|
|
1985
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
|
+
|
|
1986
2110
|
// Billing Programs helper functions
|
|
1987
2111
|
private fun mapBillingProgram(program: BillingProgramAndroid): OpenIapBillingProgramAndroid {
|
|
1988
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":"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","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
|
// ============================================================================
|