react-native-iap 12.10.8 → 12.12.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/README.md +11 -8
- package/android/gradle.properties +2 -2
- package/android/src/amazon/java/com/dooboolab/rniap/RNIapAmazonListener.kt +17 -0
- package/android/src/main/java/com/dooboolab/rniap/PromiseUtils.kt +1 -0
- package/ios/IapSerializationUtils.swift +26 -4
- package/ios/RNIapIosSk2.swift +66 -21
- package/lib/commonjs/eventEmitter.js +3 -0
- package/lib/commonjs/eventEmitter.js.map +1 -1
- package/lib/commonjs/hooks/useIAP.js +11 -14
- package/lib/commonjs/hooks/useIAP.js.map +1 -1
- package/lib/commonjs/hooks/withIAPContext.js +11 -7
- package/lib/commonjs/hooks/withIAPContext.js.map +1 -1
- package/lib/commonjs/iap.js +60 -71
- package/lib/commonjs/iap.js.map +1 -1
- package/lib/commonjs/internal/enhancedFetch.js.map +1 -1
- package/lib/commonjs/internal/fillProductsWithAdditionalData.js +5 -0
- package/lib/commonjs/internal/fillProductsWithAdditionalData.js.map +1 -1
- package/lib/commonjs/internal/platform.js +5 -8
- package/lib/commonjs/internal/platform.js.map +1 -1
- package/lib/commonjs/modules/amazon.js +12 -15
- package/lib/commonjs/modules/amazon.js.map +1 -1
- package/lib/commonjs/modules/android.js +15 -19
- package/lib/commonjs/modules/android.js.map +1 -1
- package/lib/commonjs/modules/ios.js +7 -9
- package/lib/commonjs/modules/ios.js.map +1 -1
- package/lib/commonjs/modules/iosSk2.js.map +1 -1
- package/lib/commonjs/purchaseError.js +1 -2
- package/lib/commonjs/purchaseError.js.map +1 -1
- package/lib/commonjs/types/android.js +5 -10
- package/lib/commonjs/types/android.js.map +1 -1
- package/lib/commonjs/types/apple.js.map +1 -1
- package/lib/commonjs/types/appleSk2.js +54 -36
- package/lib/commonjs/types/appleSk2.js.map +1 -1
- package/lib/commonjs/types/index.js +22 -13
- package/lib/commonjs/types/index.js.map +1 -1
- package/lib/module/eventEmitter.js +4 -1
- package/lib/module/eventEmitter.js.map +1 -1
- package/lib/module/hooks/useIAP.js +11 -14
- package/lib/module/hooks/useIAP.js.map +1 -1
- package/lib/module/hooks/withIAPContext.js +9 -5
- package/lib/module/hooks/withIAPContext.js.map +1 -1
- package/lib/module/iap.js +58 -69
- package/lib/module/iap.js.map +1 -1
- package/lib/module/internal/enhancedFetch.js.map +1 -1
- package/lib/module/internal/fillProductsWithAdditionalData.js +5 -0
- package/lib/module/internal/fillProductsWithAdditionalData.js.map +1 -1
- package/lib/module/internal/platform.js.map +1 -1
- package/lib/module/modules/amazon.js +12 -13
- package/lib/module/modules/amazon.js.map +1 -1
- package/lib/module/modules/android.js +14 -17
- package/lib/module/modules/android.js.map +1 -1
- package/lib/module/modules/ios.js +7 -9
- package/lib/module/modules/ios.js.map +1 -1
- package/lib/module/modules/iosSk2.js.map +1 -1
- package/lib/module/types/apple.js.map +1 -1
- package/lib/module/types/appleSk2.js +55 -36
- package/lib/module/types/appleSk2.js.map +1 -1
- package/lib/module/types/index.js +19 -0
- package/lib/module/types/index.js.map +1 -1
- package/lib/typescript/src/eventEmitter.d.ts.map +1 -1
- package/lib/typescript/src/hooks/withIAPContext.d.ts.map +1 -1
- package/lib/typescript/src/internal/fillProductsWithAdditionalData.d.ts.map +1 -1
- package/lib/typescript/src/types/appleSk2.d.ts +17 -3
- package/lib/typescript/src/types/appleSk2.d.ts.map +1 -1
- package/lib/typescript/src/types/index.d.ts +6 -0
- package/lib/typescript/src/types/index.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/eventEmitter.ts +11 -1
- package/src/hooks/withIAPContext.tsx +1 -0
- package/src/internal/fillProductsWithAdditionalData.ts +3 -0
- package/src/types/appleSk2.ts +32 -3
- package/src/types/index.ts +7 -0
package/README.md
CHANGED
|
@@ -46,20 +46,23 @@ Read the [documentation](https://react-native-iap.dooboolab.com). See the [troub
|
|
|
46
46
|
|
|
47
47
|
Follow [this guide](./IapExample/README.md) to get the example running.
|
|
48
48
|
|
|
49
|
-
##
|
|
49
|
+
## Sponsors
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
### Silver Tier
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
| [Revenuecat](https://www.revenuecat.com) |
|
|
54
|
+
| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
|
|
55
|
+
| <a href="https://www.revenuecat.com"><img src="https://github.com/dooboolab-community/react-native-iap/assets/27461460/1e387a47-afe0-4b85-ad78-1064ca6623fa" width="300"/></a> |
|
|
54
56
|
|
|
55
|
-
|
|
56
|
-
this project to be maintained. If you'd like to help us, please consider being
|
|
57
|
-
with us in [Open Collective](https://opencollective.com/react-native-iap).
|
|
57
|
+
### Bronze Tier
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
| [NAMI](https://namiml.com) |
|
|
60
|
+
| :--------------------------------------------------------------------------------------------------------------------------------------------------------------------: |
|
|
61
|
+
| <a href="https://namiml.com"><img src="https://github.com/dooboolab-community/react-native-iap/assets/27461460/89d71f61-bb73-400a-83bd-fe0f96eb726e" width="150"/></a> |
|
|
60
62
|
|
|
61
63
|
Support this project by becoming a sponsor. Your logo will show up here with
|
|
62
|
-
a link to your website. [
|
|
64
|
+
a link to your website. [Buy me a coffee](https://www.buymeacoffee.com/dooboolab) or
|
|
65
|
+
[Become a sponsor](https://opencollective.com/react-native-iap#sponsor).
|
|
63
66
|
<a href="https://opencollective.com/react-native-iap#sponsors" target="_blank"><img src="https://opencollective.com/react-native-iap/sponsors.svg?width=890" /></a>
|
|
64
67
|
|
|
65
68
|
### Backers
|
|
@@ -5,8 +5,8 @@ RNIap_compileSdkVersion=31
|
|
|
5
5
|
RNIap_buildToolsVersion=30.0.2
|
|
6
6
|
RNIap_ndkversion=21.4.7075529
|
|
7
7
|
RNIap_playServicesVersion=18.1.0
|
|
8
|
-
RNIap_amazonSdkVersion=3.0.
|
|
9
|
-
RNIap_playBillingSdkVersion=
|
|
8
|
+
RNIap_amazonSdkVersion=3.0.4
|
|
9
|
+
RNIap_playBillingSdkVersion=6.0.1
|
|
10
10
|
|
|
11
11
|
android.useAndroidX=true
|
|
12
12
|
android.enableJetifier=true
|
|
@@ -255,6 +255,23 @@ class RNIapAmazonListener(
|
|
|
255
255
|
null,
|
|
256
256
|
)
|
|
257
257
|
}
|
|
258
|
+
PurchaseResponse.RequestStatus.PENDING -> {
|
|
259
|
+
val error = Arguments.createMap()
|
|
260
|
+
val debugMessage = "Purchase is pending. Please wait for the transaction to complete."
|
|
261
|
+
val errorCode = PromiseUtils.E_PENDING
|
|
262
|
+
error.putInt("responseCode", 0)
|
|
263
|
+
error.putString("code", errorCode)
|
|
264
|
+
error.putString("debugMessage", debugMessage)
|
|
265
|
+
error.putString("message", debugMessage)
|
|
266
|
+
eventSender?.sendEvent("purchase-error", error)
|
|
267
|
+
PromiseUtils
|
|
268
|
+
.rejectPromisesForKey(
|
|
269
|
+
RNIapAmazonModule.PROMISE_BUY_ITEM,
|
|
270
|
+
errorCode,
|
|
271
|
+
debugMessage,
|
|
272
|
+
null,
|
|
273
|
+
)
|
|
274
|
+
}
|
|
258
275
|
PurchaseResponse.RequestStatus.NOT_SUPPORTED -> {
|
|
259
276
|
val error = Arguments.createMap()
|
|
260
277
|
val debugMessage = "This feature is not available on your device."
|
|
@@ -40,6 +40,7 @@ object PromiseUtils {
|
|
|
40
40
|
const val E_UNKNOWN = "E_UNKNOWN"
|
|
41
41
|
const val E_NOT_PREPARED = "E_NOT_PREPARED"
|
|
42
42
|
const val E_ALREADY_PREPARED = "E_ALREADY_PREPARED"
|
|
43
|
+
const val E_PENDING = "E_PENDING"
|
|
43
44
|
const val E_NOT_ENDED = "E_NOT_ENDED"
|
|
44
45
|
const val E_USER_CANCELLED = "E_USER_CANCELLED"
|
|
45
46
|
const val E_ITEM_UNAVAILABLE = "E_ITEM_UNAVAILABLE"
|
|
@@ -19,7 +19,8 @@ func serialize(_ p: Product) -> [String: Any?] {
|
|
|
19
19
|
"jsonRepresentation": serializeDebug(p.jsonRepresentation),
|
|
20
20
|
"price": p.price,
|
|
21
21
|
"subscription": serialize(p.subscription),
|
|
22
|
-
"type": serialize(p.type)
|
|
22
|
+
"type": serialize(p.type),
|
|
23
|
+
"currency": p.priceFormatStyle.currencyCode
|
|
23
24
|
]
|
|
24
25
|
}
|
|
25
26
|
|
|
@@ -31,6 +32,10 @@ func serializeDebug (_ d: Data) -> String? {
|
|
|
31
32
|
#endif
|
|
32
33
|
}
|
|
33
34
|
|
|
35
|
+
func serialize (_ d: Data) -> String? {
|
|
36
|
+
return String( decoding: d, as: UTF8.self)
|
|
37
|
+
}
|
|
38
|
+
|
|
34
39
|
func serializeDebug (_ s: String) -> String? {
|
|
35
40
|
#if DEBUG
|
|
36
41
|
return s
|
|
@@ -75,12 +80,29 @@ func serialize(_ sp: Product.SubscriptionPeriod.Unit?) -> String? {
|
|
|
75
80
|
@available(iOS 15.0, tvOS 15.0, *)
|
|
76
81
|
func serialize(_ s: Product.SubscriptionInfo.Status?) -> [String: Any?]? {
|
|
77
82
|
guard let s = s else {return nil}
|
|
78
|
-
return ["state": serialize( s.state)
|
|
79
|
-
|
|
83
|
+
return ["state": serialize( s.state),
|
|
84
|
+
"renewalInfo": serialize(s.renewalInfo)
|
|
80
85
|
// "transaction": serialize(s.transaction),
|
|
81
86
|
]
|
|
82
87
|
}
|
|
83
88
|
|
|
89
|
+
@available(iOS 15.0, tvOS 15.0, *)
|
|
90
|
+
func serialize(_ vri: VerificationResult<Product.SubscriptionInfo.RenewalInfo>?) -> [String: Any?]? {
|
|
91
|
+
guard let vri = vri else {return nil}
|
|
92
|
+
do {
|
|
93
|
+
let ri = try vri.payloadValue
|
|
94
|
+
let jsonStringRepresentation = String(data: ri.jsonRepresentation, encoding: .utf8) ?? ""
|
|
95
|
+
return [
|
|
96
|
+
"jsonRepresentation": jsonStringRepresentation,
|
|
97
|
+
"willAutoRenew": ri.willAutoRenew,
|
|
98
|
+
"autoRenewPreference": ri.autoRenewPreference
|
|
99
|
+
]
|
|
100
|
+
} catch {
|
|
101
|
+
print("Error in parsing VerificationResult<Product.SubscriptionInfo.RenewalInfo>")
|
|
102
|
+
return nil
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
84
106
|
@available(iOS 15.0, tvOS 15.0, *)
|
|
85
107
|
func serialize(_ rs: Product.SubscriptionInfo.RenewalState?) -> String? {
|
|
86
108
|
guard let rs = rs else {return nil}
|
|
@@ -158,7 +180,7 @@ func serialize(_ t: Transaction) -> [String: Any?] {
|
|
|
158
180
|
"environment": environment,
|
|
159
181
|
"id": t.id,
|
|
160
182
|
"isUpgraded": t.isUpgraded,
|
|
161
|
-
"jsonRepresentation":
|
|
183
|
+
"jsonRepresentation": serialize(t.jsonRepresentation),
|
|
162
184
|
"offerID": t.offerID,
|
|
163
185
|
"offerType": serialize(t.offerType),
|
|
164
186
|
"originalID": t.originalID,
|
package/ios/RNIapIosSk2.swift
CHANGED
|
@@ -277,10 +277,6 @@ class RNIapIosSk2: RCTEventEmitter, Sk2Delegate {
|
|
|
277
277
|
delegate.stopObserving()
|
|
278
278
|
}
|
|
279
279
|
|
|
280
|
-
override func addListener(_ eventName: String?) {
|
|
281
|
-
super.addListener(eventName)
|
|
282
|
-
}
|
|
283
|
-
|
|
284
280
|
/**
|
|
285
281
|
"iap-transaction-updated" is unique to Sk2.
|
|
286
282
|
"iap-promoted-product" is only avaiable on Sk1
|
|
@@ -424,14 +420,23 @@ class RNIapIosSk2: RCTEventEmitter, Sk2Delegate {
|
|
|
424
420
|
|
|
425
421
|
@available(iOS 15.0, tvOS 15.0, *)
|
|
426
422
|
class RNIapIosSk2iOS15: Sk2Delegate {
|
|
427
|
-
private var
|
|
428
|
-
private
|
|
423
|
+
private var _hasListeners = false
|
|
424
|
+
private let _hasListenersQueue = DispatchQueue(label: "com.dooboolab.rniap.hasListenersQueue", attributes: .concurrent)
|
|
429
425
|
private var transactions: [String: Transaction]
|
|
430
426
|
private var updateListenerTask: Task<Void, Error>?
|
|
431
427
|
fileprivate var sendEvent: ((String?, Any?) -> Void)?
|
|
428
|
+
var hasListeners: Bool {
|
|
429
|
+
get {
|
|
430
|
+
return _hasListenersQueue.sync { _hasListeners }
|
|
431
|
+
}
|
|
432
|
+
set {
|
|
433
|
+
_hasListenersQueue.async(flags: .barrier) { [weak self] in
|
|
434
|
+
self?._hasListeners = newValue
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
}
|
|
432
438
|
init(sendEvent: ((String?, Any?) -> Void)? ) {
|
|
433
439
|
self.sendEvent = sendEvent
|
|
434
|
-
products = [String: Product]()
|
|
435
440
|
transactions = [String: Transaction]()
|
|
436
441
|
}
|
|
437
442
|
|
|
@@ -439,6 +444,32 @@ class RNIapIosSk2iOS15: Sk2Delegate {
|
|
|
439
444
|
removeTransactionObserver()
|
|
440
445
|
}
|
|
441
446
|
|
|
447
|
+
actor ProductStore {
|
|
448
|
+
private(set) var products: [String: Product] = [:]
|
|
449
|
+
|
|
450
|
+
func addProduct(_ product: Product) {
|
|
451
|
+
self.products[product.id] = product
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
func getAllProducts() -> [Product] {
|
|
455
|
+
return Array(self.products.values)
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
func getProduct(productID: String) -> Product? {
|
|
459
|
+
return self.products[productID]
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
func removeAll() {
|
|
463
|
+
products.removeAll()
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
func performOnActor(_ action: @escaping (isolated ProductStore) -> Void) async {
|
|
467
|
+
action(self)
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
private let productStore = ProductStore()
|
|
472
|
+
|
|
442
473
|
@objc public func disable(
|
|
443
474
|
_ resolve: @escaping RCTPromiseResolveBlock = { _ in },
|
|
444
475
|
reject: @escaping RCTPromiseRejectBlock = { _, _, _ in }
|
|
@@ -520,7 +551,9 @@ class RNIapIosSk2iOS15: Sk2Delegate {
|
|
|
520
551
|
_ resolve: @escaping RCTPromiseResolveBlock = { _ in },
|
|
521
552
|
reject: @escaping RCTPromiseRejectBlock = { _, _, _ in }
|
|
522
553
|
) {
|
|
523
|
-
|
|
554
|
+
Task {
|
|
555
|
+
await productStore.removeAll()
|
|
556
|
+
}
|
|
524
557
|
transactions.removeAll()
|
|
525
558
|
removeTransactionObserver()
|
|
526
559
|
resolve(nil)
|
|
@@ -533,10 +566,16 @@ class RNIapIosSk2iOS15: Sk2Delegate {
|
|
|
533
566
|
) {
|
|
534
567
|
Task {
|
|
535
568
|
do {
|
|
536
|
-
let
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
569
|
+
let fetchedProducts = try await Product.products(for: skus)
|
|
570
|
+
|
|
571
|
+
await productStore.performOnActor { isolatedStore in
|
|
572
|
+
fetchedProducts.forEach({ product in
|
|
573
|
+
isolatedStore.addProduct(product)
|
|
574
|
+
})
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
let products = await productStore.getAllProducts()
|
|
578
|
+
|
|
540
579
|
resolve(products.map({ (prod: Product) -> [String: Any?]? in
|
|
541
580
|
return serialize(prod)
|
|
542
581
|
}).compactMap({$0}))
|
|
@@ -578,12 +617,12 @@ class RNIapIosSk2iOS15: Sk2Delegate {
|
|
|
578
617
|
}
|
|
579
618
|
switch transaction.productType {
|
|
580
619
|
case .nonConsumable:
|
|
581
|
-
if
|
|
620
|
+
if await productStore.getProduct(productID: transaction.productID) != nil {
|
|
582
621
|
addTransaction(transaction: transaction)
|
|
583
622
|
}
|
|
584
623
|
|
|
585
624
|
case .nonRenewable:
|
|
586
|
-
if
|
|
625
|
+
if await productStore.getProduct(productID: transaction.productID) != nil {
|
|
587
626
|
// Non-renewing subscriptions have no inherent expiration date, so they're always
|
|
588
627
|
// contained in `Transaction.currentEntitlements` after the user purchases them.
|
|
589
628
|
// This app defines this non-renewing subscription's expiration date to be one year after purchase.
|
|
@@ -599,12 +638,12 @@ class RNIapIosSk2iOS15: Sk2Delegate {
|
|
|
599
638
|
}
|
|
600
639
|
|
|
601
640
|
case .autoRenewable:
|
|
602
|
-
if
|
|
641
|
+
if await productStore.getProduct(productID: transaction.productID) != nil {
|
|
603
642
|
addTransaction(transaction: transaction)
|
|
604
643
|
}
|
|
605
644
|
|
|
606
645
|
case .consumable:
|
|
607
|
-
if
|
|
646
|
+
if await productStore.getProduct(productID: transaction.productID) != nil {
|
|
608
647
|
addTransaction(transaction: transaction)
|
|
609
648
|
}
|
|
610
649
|
|
|
@@ -649,7 +688,7 @@ class RNIapIosSk2iOS15: Sk2Delegate {
|
|
|
649
688
|
reject: @escaping RCTPromiseRejectBlock = { _, _, _ in }
|
|
650
689
|
) {
|
|
651
690
|
Task {
|
|
652
|
-
let product: Product? =
|
|
691
|
+
let product: Product? = await productStore.getProduct(productID: sku)
|
|
653
692
|
|
|
654
693
|
if let product = product {
|
|
655
694
|
do {
|
|
@@ -777,7 +816,8 @@ class RNIapIosSk2iOS15: Sk2Delegate {
|
|
|
777
816
|
) {
|
|
778
817
|
Task {
|
|
779
818
|
do {
|
|
780
|
-
let
|
|
819
|
+
let product = await productStore.getProduct(productID: sku)
|
|
820
|
+
let status: [Product.SubscriptionInfo.Status]? = try await product?.subscription?.status
|
|
781
821
|
guard let status = status else {
|
|
782
822
|
resolve(nil)
|
|
783
823
|
return
|
|
@@ -795,7 +835,7 @@ class RNIapIosSk2iOS15: Sk2Delegate {
|
|
|
795
835
|
reject: @escaping RCTPromiseRejectBlock = { _, _, _ in }
|
|
796
836
|
) {
|
|
797
837
|
Task {
|
|
798
|
-
if let product =
|
|
838
|
+
if let product = await productStore.getProduct(productID: sku) {
|
|
799
839
|
if let result = await product.currentEntitlement {
|
|
800
840
|
do {
|
|
801
841
|
// Check whether the transaction is verified. If it isn’t, catch `failedVerification` error.
|
|
@@ -822,7 +862,7 @@ class RNIapIosSk2iOS15: Sk2Delegate {
|
|
|
822
862
|
reject: @escaping RCTPromiseRejectBlock = { _, _, _ in }
|
|
823
863
|
) {
|
|
824
864
|
Task {
|
|
825
|
-
if let product =
|
|
865
|
+
if let product = await productStore.getProduct(productID: sku) {
|
|
826
866
|
if let result = await product.latestTransaction {
|
|
827
867
|
do {
|
|
828
868
|
// Check whether the transaction is verified. If it isn’t, catch `failedVerification` error.
|
|
@@ -878,6 +918,11 @@ class RNIapIosSk2iOS15: Sk2Delegate {
|
|
|
878
918
|
resolve(nil)
|
|
879
919
|
} catch {
|
|
880
920
|
reject(IapErrors.E_SYNC_ERROR.rawValue, "Error synchronizing with the AppStore", error)
|
|
921
|
+
if "\(error)" == "userCancelled" {
|
|
922
|
+
reject( IapErrors.E_USER_CANCELLED.rawValue, "User cancelled synchronizing with the AppStore", error)
|
|
923
|
+
} else {
|
|
924
|
+
reject( IapErrors.E_SYNC_ERROR.rawValue, "Error synchronizing with the AppStore", error)
|
|
925
|
+
}
|
|
881
926
|
}
|
|
882
927
|
}
|
|
883
928
|
}
|
|
@@ -956,7 +1001,7 @@ class RNIapIosSk2iOS15: Sk2Delegate {
|
|
|
956
1001
|
}
|
|
957
1002
|
Task {
|
|
958
1003
|
if let windowScene = await UIApplication.shared.keyWindow?.windowScene {
|
|
959
|
-
if let product =
|
|
1004
|
+
if let product = await productStore.getProduct(productID: sku) {
|
|
960
1005
|
if let result = await product.latestTransaction {
|
|
961
1006
|
do {
|
|
962
1007
|
// Check whether the transaction is verified. If it isn’t, catch `failedVerification` error.
|
|
@@ -46,6 +46,9 @@ const purchaseUpdatedListener = listener => {
|
|
|
46
46
|
listener((0, _appleSk.transactionSk2ToPurchaseMap)(event));
|
|
47
47
|
} : listener;
|
|
48
48
|
const emitterSubscription = eventEmitter.addListener('purchase-updated', proxyListener);
|
|
49
|
+
if (_internal.isAndroid) {
|
|
50
|
+
(0, _internal.getAndroidModule)().startListening();
|
|
51
|
+
}
|
|
49
52
|
return emitterSubscription;
|
|
50
53
|
};
|
|
51
54
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_appleSk","_iap","_internal","purchaseUpdatedListener","listener","eventEmitter","NativeEventEmitter","getNativeModule","proxyListener","isIosStorekit2","event","transactionSk2ToPurchaseMap","emitterSubscription","addListener","exports","purchaseErrorListener","promotedProductListener","isIos","getIosModule","transactionListener"],"sourceRoot":"../../src","sources":["eventEmitter.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,IAAA,GAAAF,OAAA;AACA,IAAAG,SAAA,GAAAH,OAAA;
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_appleSk","_iap","_internal","purchaseUpdatedListener","listener","eventEmitter","NativeEventEmitter","getNativeModule","proxyListener","isIosStorekit2","event","transactionSk2ToPurchaseMap","emitterSubscription","addListener","isAndroid","getAndroidModule","startListening","exports","purchaseErrorListener","promotedProductListener","isIos","getIosModule","transactionListener"],"sourceRoot":"../../src","sources":["eventEmitter.ts"],"mappings":"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"}
|
|
@@ -25,18 +25,16 @@ const useIAP = () => {
|
|
|
25
25
|
setCurrentPurchase,
|
|
26
26
|
setCurrentPurchaseError
|
|
27
27
|
} = (0, _withIAPContext.useIAPContext)();
|
|
28
|
-
const getProducts = (0, _react.useCallback)(async
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
} = _ref;
|
|
28
|
+
const getProducts = (0, _react.useCallback)(async ({
|
|
29
|
+
skus
|
|
30
|
+
}) => {
|
|
32
31
|
setProducts(await (0, _iap.getProducts)({
|
|
33
32
|
skus
|
|
34
33
|
}));
|
|
35
34
|
}, [setProducts]);
|
|
36
|
-
const getSubscriptions = (0, _react.useCallback)(async
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
} = _ref2;
|
|
35
|
+
const getSubscriptions = (0, _react.useCallback)(async ({
|
|
36
|
+
skus
|
|
37
|
+
}) => {
|
|
40
38
|
setSubscriptions(await (0, _iap.getSubscriptions)({
|
|
41
39
|
skus
|
|
42
40
|
}));
|
|
@@ -47,12 +45,11 @@ const useIAP = () => {
|
|
|
47
45
|
const getPurchaseHistory = (0, _react.useCallback)(async () => {
|
|
48
46
|
setPurchaseHistory(await (0, _iap.getPurchaseHistory)());
|
|
49
47
|
}, [setPurchaseHistory]);
|
|
50
|
-
const finishTransaction = (0, _react.useCallback)(async
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
} = _ref3;
|
|
48
|
+
const finishTransaction = (0, _react.useCallback)(async ({
|
|
49
|
+
purchase,
|
|
50
|
+
isConsumable,
|
|
51
|
+
developerPayloadAndroid
|
|
52
|
+
}) => {
|
|
56
53
|
try {
|
|
57
54
|
return await (0, _iap.finishTransaction)({
|
|
58
55
|
purchase,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_iap","_withIAPContext","useIAP","connected","products","promotedProductsIOS","subscriptions","purchaseHistory","availablePurchases","currentPurchase","currentPurchaseError","initConnectionError","setProducts","setSubscriptions","setAvailablePurchases","setPurchaseHistory","setCurrentPurchase","setCurrentPurchaseError","useIAPContext","getProducts","useCallback","
|
|
1
|
+
{"version":3,"names":["_react","require","_iap","_withIAPContext","useIAP","connected","products","promotedProductsIOS","subscriptions","purchaseHistory","availablePurchases","currentPurchase","currentPurchaseError","initConnectionError","setProducts","setSubscriptions","setAvailablePurchases","setPurchaseHistory","setCurrentPurchase","setCurrentPurchaseError","useIAPContext","getProducts","useCallback","skus","iapGetProducts","getSubscriptions","iapGetSubscriptions","getAvailablePurchases","iapGetAvailablePurchases","getPurchaseHistory","iapGetPurchaseHistory","finishTransaction","purchase","isConsumable","developerPayloadAndroid","iapFinishTransaction","err","productId","undefined","requestPurchase","iapRequestPurchase","requestSubscription","iapRequestSubscription","exports"],"sourceRoot":"../../../src","sources":["hooks/useIAP.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,IAAA,GAAAD,OAAA;AAYA,IAAAE,eAAA,GAAAF,OAAA;AA6BO,MAAMG,MAAM,GAAGA,CAAA,KAAkB;EACtC,MAAM;IACJC,SAAS;IACTC,QAAQ;IACRC,mBAAmB;IACnBC,aAAa;IACbC,eAAe;IACfC,kBAAkB;IAClBC,eAAe;IACfC,oBAAoB;IACpBC,mBAAmB;IACnBC,WAAW;IACXC,gBAAgB;IAChBC,qBAAqB;IACrBC,kBAAkB;IAClBC,kBAAkB;IAClBC;EACF,CAAC,GAAG,IAAAC,6BAAa,EAAC,CAAC;EAEnB,MAAMC,WAAW,GAAG,IAAAC,kBAAW,EAC7B,OAAO;IAACC;EAAsB,CAAC,KAAoB;IACjDT,WAAW,CAAC,MAAM,IAAAU,gBAAc,EAAC;MAACD;IAAI,CAAC,CAAC,CAAC;EAC3C,CAAC,EACD,CAACT,WAAW,CACd,CAAC;EAED,MAAMW,gBAAgB,GAAG,IAAAH,kBAAW,EAClC,OAAO;IAACC;EAAsB,CAAC,KAAoB;IACjDR,gBAAgB,CAAC,MAAM,IAAAW,qBAAmB,EAAC;MAACH;IAAI,CAAC,CAAC,CAAC;EACrD,CAAC,EACD,CAACR,gBAAgB,CACnB,CAAC;EAED,MAAMY,qBAAqB,GAAG,IAAAL,kBAAW,EAAC,YAA2B;IACnEN,qBAAqB,CAAC,MAAM,IAAAY,0BAAwB,EAAC,CAAC,CAAC;EACzD,CAAC,EAAE,CAACZ,qBAAqB,CAAC,CAAC;EAE3B,MAAMa,kBAAkB,GAAG,IAAAP,kBAAW,EAAC,YAA2B;IAChEL,kBAAkB,CAAC,MAAM,IAAAa,uBAAqB,EAAC,CAAC,CAAC;EACnD,CAAC,EAAE,CAACb,kBAAkB,CAAC,CAAC;EAExB,MAAMc,iBAAiB,GAAG,IAAAT,kBAAW,EACnC,OAAO;IACLU,QAAQ;IACRC,YAAY;IACZC;EAKF,CAAC,KAAwD;IACvD,IAAI;MACF,OAAO,MAAM,IAAAC,sBAAoB,EAAC;QAChCH,QAAQ;QACRC,YAAY;QACZC;MACF,CAAC,CAAC;IACJ,CAAC,CAAC,OAAOE,GAAG,EAAE;MACZ,MAAMA,GAAG;IACX,CAAC,SAAS;MACR,IAAIJ,QAAQ,CAACK,SAAS,MAAK1B,eAAe,aAAfA,eAAe,uBAAfA,eAAe,CAAE0B,SAAS,GAAE;QACrDnB,kBAAkB,CAACoB,SAAS,CAAC;MAC/B;MAEA,IAAIN,QAAQ,CAACK,SAAS,MAAKzB,oBAAoB,aAApBA,oBAAoB,uBAApBA,oBAAoB,CAAEyB,SAAS,GAAE;QAC1DlB,uBAAuB,CAACmB,SAAS,CAAC;MACpC;IACF;EACF,CAAC,EACD,CACE3B,eAAe,aAAfA,eAAe,uBAAfA,eAAe,CAAE0B,SAAS,EAC1BzB,oBAAoB,aAApBA,oBAAoB,uBAApBA,oBAAoB,CAAEyB,SAAS,EAC/BnB,kBAAkB,EAClBC,uBAAuB,CAE3B,CAAC;EAED,OAAO;IACLd,SAAS;IACTC,QAAQ;IACRC,mBAAmB;IACnBC,aAAa;IACbC,eAAe;IACfC,kBAAkB;IAClBC,eAAe;IACfC,oBAAoB;IACpBC,mBAAmB;IACnBkB,iBAAiB;IACjBV,WAAW;IACXI,gBAAgB;IAChBE,qBAAqB;IACrBE,kBAAkB;IAClBU,eAAe,EAAEC,oBAAkB;IACnCC,mBAAmB,EAAEC;EACvB,CAAC;AACH,CAAC;AAACC,OAAA,CAAAvC,MAAA,GAAAA,MAAA"}
|
|
@@ -8,8 +8,8 @@ exports.withIAPContext = withIAPContext;
|
|
|
8
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
9
|
var _eventEmitter = require("../eventEmitter");
|
|
10
10
|
var _iap = require("../iap");
|
|
11
|
-
function _getRequireWildcardCache(
|
|
12
|
-
function _interopRequireWildcard(
|
|
11
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
12
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
13
13
|
// @ts-ignore
|
|
14
14
|
const IAPContext = /*#__PURE__*/_react.default.createContext(null);
|
|
15
15
|
function useIAPContext() {
|
|
@@ -78,13 +78,17 @@ function withIAPContext(Component) {
|
|
|
78
78
|
return () => {
|
|
79
79
|
purchaseUpdateSubscription.remove();
|
|
80
80
|
purchaseErrorSubscription.remove();
|
|
81
|
-
promotedProductSubscription === null || promotedProductSubscription === void 0
|
|
82
|
-
transactionUpdateSubscription === null || transactionUpdateSubscription === void 0
|
|
81
|
+
promotedProductSubscription === null || promotedProductSubscription === void 0 || promotedProductSubscription.remove();
|
|
82
|
+
transactionUpdateSubscription === null || transactionUpdateSubscription === void 0 || transactionUpdateSubscription.remove();
|
|
83
83
|
};
|
|
84
84
|
}, [connected]);
|
|
85
|
-
return
|
|
86
|
-
|
|
87
|
-
|
|
85
|
+
return (
|
|
86
|
+
/*#__PURE__*/
|
|
87
|
+
// @ts-ignore
|
|
88
|
+
_react.default.createElement(IAPContext.Provider, {
|
|
89
|
+
value: context
|
|
90
|
+
}, /*#__PURE__*/_react.default.createElement(Component, props))
|
|
91
|
+
);
|
|
88
92
|
};
|
|
89
93
|
}
|
|
90
94
|
//# sourceMappingURL=withIAPContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_eventEmitter","_iap","_getRequireWildcardCache","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_eventEmitter","_iap","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","IAPContext","React","createContext","useIAPContext","ctx","useContext","Error","withIAPContext","Component","WrapperComponent","props","connected","setConnected","useState","products","setProducts","promotedProductsIOS","setPromotedProductsIOS","subscriptions","setSubscriptions","purchaseHistory","setPurchaseHistory","availablePurchases","setAvailablePurchases","currentPurchase","setCurrentPurchase","currentTransaction","setCurrentTransaction","currentPurchaseError","setCurrentPurchaseError","initConnectionError","setInitConnectionError","context","useMemo","useEffect","initConnection","then","value","undefined","catch","purchaseUpdateSubscription","purchaseUpdatedListener","purchase","transactionUpdateSubscription","transactionListener","transactionOrError","error","transaction","purchaseErrorSubscription","purchaseErrorListener","promotedProductSubscription","promotedProductListener","product","IapIos","getPromotedProductIOS","prevProducts","remove","createElement","Provider"],"sourceRoot":"../../../src","sources":["hooks/withIAPContext.tsx"],"mappings":"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"}
|