react-native-iap 13.0.4 → 14.0.0-rc.1
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/NitroIap.podspec +33 -0
- package/README.md +163 -51
- package/android/CMakeLists.txt +32 -0
- package/android/build.gradle +107 -138
- package/android/fix-prefab.gradle +51 -0
- package/android/gradle.properties +5 -13
- package/android/src/main/AndroidManifest.xml +1 -4
- package/android/src/main/cpp/cpp-adapter.cpp +6 -0
- package/android/src/main/java/com/margelo/nitro/iap/HybridRnIap.kt +843 -0
- package/android/src/main/java/com/margelo/nitro/iap/NitroIapPackage.java +33 -0
- package/android/src/main/java/com/margelo/nitro/iap/Types.kt +173 -0
- package/ios/Bridge.h +8 -0
- package/ios/ErrorUtils.swift +153 -0
- package/ios/HybridRnIap.swift +1326 -0
- package/ios/ProductStore.swift +33 -0
- package/ios/reactnativeiap.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- package/ios/reactnativeiap.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/lib/module/helpers/subscription.js +56 -0
- package/lib/module/helpers/subscription.js.map +1 -0
- package/lib/module/hooks/useIAP.js +175 -123
- package/lib/module/hooks/useIAP.js.map +1 -1
- package/lib/module/index.js +1015 -9
- package/lib/module/index.js.map +1 -1
- package/lib/module/package.json +1 -0
- package/lib/module/specs/RnIap.nitro.js +4 -0
- package/lib/{commonjs/modules/common.js.map → module/specs/RnIap.nitro.js.map} +1 -1
- package/lib/module/types.js +187 -0
- package/lib/module/types.js.map +1 -0
- package/lib/module/utils/error.js +80 -0
- package/lib/module/utils/error.js.map +1 -0
- package/lib/module/utils/type-bridge.js +202 -0
- package/lib/module/utils/type-bridge.js.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/plugin/src/withIAP.d.ts +2 -7
- package/lib/typescript/plugin/src/withIAP.d.ts.map +1 -1
- package/lib/typescript/scripts/check-nitro-versions.d.ts +3 -0
- package/lib/typescript/scripts/check-nitro-versions.d.ts.map +1 -0
- package/lib/typescript/src/helpers/subscription.d.ts +14 -0
- package/lib/typescript/src/helpers/subscription.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useIAP.d.ts +42 -26
- package/lib/typescript/src/hooks/useIAP.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +356 -8
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/specs/RnIap.nitro.d.ts +404 -0
- package/lib/typescript/src/specs/RnIap.nitro.d.ts.map +1 -0
- package/lib/typescript/src/types.d.ts +544 -0
- package/lib/typescript/src/types.d.ts.map +1 -0
- package/lib/typescript/src/utils/error.d.ts +30 -0
- package/lib/typescript/src/utils/error.d.ts.map +1 -0
- package/lib/typescript/src/utils/type-bridge.d.ts +40 -0
- package/lib/typescript/src/utils/type-bridge.d.ts.map +1 -0
- package/nitro.json +17 -0
- package/nitrogen/generated/android/NitroIap+autolinking.cmake +80 -0
- package/nitrogen/generated/android/NitroIap+autolinking.gradle +27 -0
- package/nitrogen/generated/android/NitroIapOnLoad.cpp +50 -0
- package/nitrogen/generated/android/NitroIapOnLoad.hpp +25 -0
- package/nitrogen/generated/android/c++/JFunc_void_NitroProduct.hpp +78 -0
- package/nitrogen/generated/android/c++/JFunc_void_NitroPurchase.hpp +78 -0
- package/nitrogen/generated/android/c++/JFunc_void_NitroPurchaseResult.hpp +78 -0
- package/nitrogen/generated/android/c++/JHybridRnIapSpec.cpp +577 -0
- package/nitrogen/generated/android/c++/JHybridRnIapSpec.hpp +93 -0
- package/nitrogen/generated/android/c++/JNitroAndroidReceiptValidationOptions.hpp +66 -0
- package/nitrogen/generated/android/c++/JNitroAvailablePurchasesAndroidOptions.hpp +54 -0
- package/nitrogen/generated/android/c++/JNitroAvailablePurchasesIosOptions.hpp +65 -0
- package/nitrogen/generated/android/c++/JNitroAvailablePurchasesOptions.hpp +62 -0
- package/nitrogen/generated/android/c++/JNitroFinishTransactionAndroidParams.hpp +58 -0
- package/nitrogen/generated/android/c++/JNitroFinishTransactionIosParams.hpp +53 -0
- package/nitrogen/generated/android/c++/JNitroFinishTransactionParams.hpp +62 -0
- package/nitrogen/generated/android/c++/JNitroProduct.hpp +154 -0
- package/nitrogen/generated/android/c++/JNitroPurchase.hpp +122 -0
- package/nitrogen/generated/android/c++/JNitroPurchaseRequest.hpp +66 -0
- package/nitrogen/generated/android/c++/JNitroPurchaseResult.hpp +70 -0
- package/nitrogen/generated/android/c++/JNitroReceiptValidationParams.hpp +60 -0
- package/nitrogen/generated/android/c++/JNitroReceiptValidationResultAndroid.hpp +122 -0
- package/nitrogen/generated/android/c++/JNitroReceiptValidationResultIOS.hpp +68 -0
- package/nitrogen/generated/android/c++/JNitroRequestPurchaseAndroid.hpp +115 -0
- package/nitrogen/generated/android/c++/JNitroRequestPurchaseIos.hpp +84 -0
- package/nitrogen/generated/android/c++/JNitroSubscriptionOffer.hpp +57 -0
- package/nitrogen/generated/android/c++/JNitroSubscriptionRenewalInfo.hpp +74 -0
- package/nitrogen/generated/android/c++/JNitroSubscriptionStatus.hpp +64 -0
- package/nitrogen/generated/android/c++/JVariant_Boolean_NitroPurchaseResult.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_Boolean_NitroPurchaseResult.hpp +71 -0
- package/nitrogen/generated/android/c++/JVariant_NitroReceiptValidationResultIOS_NitroReceiptValidationResultAndroid.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_NitroReceiptValidationResultIOS_NitroReceiptValidationResultAndroid.hpp +75 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/Func_void_NitroProduct.kt +81 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/Func_void_NitroPurchase.kt +81 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/Func_void_NitroPurchaseResult.kt +81 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/HybridRnIapSpec.kt +198 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroAndroidReceiptValidationOptions.kt +38 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroAvailablePurchasesAndroidOptions.kt +29 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroAvailablePurchasesIosOptions.kt +38 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroAvailablePurchasesOptions.kt +32 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroFinishTransactionAndroidParams.kt +32 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroFinishTransactionIosParams.kt +29 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroFinishTransactionParams.kt +32 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroIapOnLoad.kt +35 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroProduct.kt +104 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroPurchase.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroPurchaseRequest.kt +32 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroPurchaseResult.kt +41 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroReceiptValidationParams.kt +32 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroReceiptValidationResultAndroid.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroReceiptValidationResultIOS.kt +38 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroRequestPurchaseAndroid.kt +47 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroRequestPurchaseIos.kt +41 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroSubscriptionOffer.kt +32 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroSubscriptionRenewalInfo.kt +44 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/NitroSubscriptionStatus.kt +35 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/Variant_Boolean_NitroPurchaseResult.kt +42 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/iap/Variant_NitroReceiptValidationResultIOS_NitroReceiptValidationResultAndroid.kt +42 -0
- package/nitrogen/generated/ios/NitroIap+autolinking.rb +60 -0
- package/nitrogen/generated/ios/NitroIap-Swift-Cxx-Bridge.cpp +152 -0
- package/nitrogen/generated/ios/NitroIap-Swift-Cxx-Bridge.hpp +1061 -0
- package/nitrogen/generated/ios/NitroIap-Swift-Cxx-Umbrella.hpp +107 -0
- package/nitrogen/generated/ios/NitroIapAutolinking.mm +33 -0
- package/nitrogen/generated/ios/NitroIapAutolinking.swift +25 -0
- package/nitrogen/generated/ios/c++/HybridRnIapSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridRnIapSpecSwift.hpp +355 -0
- package/nitrogen/generated/ios/swift/Func_void.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_NitroProduct.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_NitroPurchase.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_NitroPurchaseResult.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_bool.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_std__optional_NitroProduct_.swift +54 -0
- package/nitrogen/generated/ios/swift/Func_void_std__optional_NitroPurchase_.swift +54 -0
- package/nitrogen/generated/ios/swift/Func_void_std__optional_std__string_.swift +54 -0
- package/nitrogen/generated/ios/swift/Func_void_std__optional_std__vector_NitroSubscriptionStatus__.swift +54 -0
- package/nitrogen/generated/ios/swift/Func_void_std__string.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_std__variant_NitroReceiptValidationResultIOS__NitroReceiptValidationResultAndroid_.swift +59 -0
- package/nitrogen/generated/ios/swift/Func_void_std__variant_bool__NitroPurchaseResult_.swift +59 -0
- package/nitrogen/generated/ios/swift/Func_void_std__vector_NitroProduct_.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_std__vector_NitroPurchase_.swift +47 -0
- package/nitrogen/generated/ios/swift/HybridRnIapSpec.swift +78 -0
- package/nitrogen/generated/ios/swift/HybridRnIapSpec_cxx.swift +750 -0
- package/nitrogen/generated/ios/swift/NitroAndroidReceiptValidationOptions.swift +80 -0
- package/nitrogen/generated/ios/swift/NitroAvailablePurchasesAndroidOptions.swift +54 -0
- package/nitrogen/generated/ios/swift/NitroAvailablePurchasesIosOptions.swift +116 -0
- package/nitrogen/generated/ios/swift/NitroAvailablePurchasesOptions.swift +84 -0
- package/nitrogen/generated/ios/swift/NitroFinishTransactionAndroidParams.swift +58 -0
- package/nitrogen/generated/ios/swift/NitroFinishTransactionIosParams.swift +35 -0
- package/nitrogen/generated/ios/swift/NitroFinishTransactionParams.swift +84 -0
- package/nitrogen/generated/ios/swift/NitroProduct.swift +653 -0
- package/nitrogen/generated/ios/swift/NitroPurchase.swift +453 -0
- package/nitrogen/generated/ios/swift/NitroPurchaseRequest.swift +84 -0
- package/nitrogen/generated/ios/swift/NitroPurchaseResult.swift +117 -0
- package/nitrogen/generated/ios/swift/NitroReceiptValidationParams.swift +65 -0
- package/nitrogen/generated/ios/swift/NitroReceiptValidationResultAndroid.swift +258 -0
- package/nitrogen/generated/ios/swift/NitroReceiptValidationResultIOS.swift +87 -0
- package/nitrogen/generated/ios/swift/NitroRequestPurchaseAndroid.swift +225 -0
- package/nitrogen/generated/ios/swift/NitroRequestPurchaseIos.swift +161 -0
- package/nitrogen/generated/ios/swift/NitroSubscriptionOffer.swift +46 -0
- package/nitrogen/generated/ios/swift/NitroSubscriptionRenewalInfo.swift +152 -0
- package/nitrogen/generated/ios/swift/NitroSubscriptionStatus.swift +76 -0
- package/nitrogen/generated/ios/swift/Variant_Bool_NitroPurchaseResult.swift +18 -0
- package/nitrogen/generated/ios/swift/Variant_NitroReceiptValidationResultIOS_NitroReceiptValidationResultAndroid.swift +18 -0
- package/nitrogen/generated/shared/c++/HybridRnIapSpec.cpp +50 -0
- package/nitrogen/generated/shared/c++/HybridRnIapSpec.hpp +125 -0
- package/nitrogen/generated/shared/c++/NitroAndroidReceiptValidationOptions.hpp +80 -0
- package/nitrogen/generated/shared/c++/NitroAvailablePurchasesAndroidOptions.hpp +68 -0
- package/nitrogen/generated/shared/c++/NitroAvailablePurchasesIosOptions.hpp +79 -0
- package/nitrogen/generated/shared/c++/NitroAvailablePurchasesOptions.hpp +76 -0
- package/nitrogen/generated/shared/c++/NitroFinishTransactionAndroidParams.hpp +72 -0
- package/nitrogen/generated/shared/c++/NitroFinishTransactionIosParams.hpp +67 -0
- package/nitrogen/generated/shared/c++/NitroFinishTransactionParams.hpp +76 -0
- package/nitrogen/generated/shared/c++/NitroProduct.hpp +168 -0
- package/nitrogen/generated/shared/c++/NitroPurchase.hpp +136 -0
- package/nitrogen/generated/shared/c++/NitroPurchaseRequest.hpp +76 -0
- package/nitrogen/generated/shared/c++/NitroPurchaseResult.hpp +84 -0
- package/nitrogen/generated/shared/c++/NitroReceiptValidationParams.hpp +74 -0
- package/nitrogen/generated/shared/c++/NitroReceiptValidationResultAndroid.hpp +136 -0
- package/nitrogen/generated/shared/c++/NitroReceiptValidationResultIOS.hpp +82 -0
- package/nitrogen/generated/shared/c++/NitroRequestPurchaseAndroid.hpp +95 -0
- package/nitrogen/generated/shared/c++/NitroRequestPurchaseIos.hpp +85 -0
- package/nitrogen/generated/shared/c++/NitroSubscriptionOffer.hpp +71 -0
- package/nitrogen/generated/shared/c++/NitroSubscriptionRenewalInfo.hpp +88 -0
- package/nitrogen/generated/shared/c++/NitroSubscriptionStatus.hpp +78 -0
- package/package.json +145 -104
- package/plugin/build/src/withIAP.d.ts +3 -0
- package/plugin/build/src/withIAP.js +81 -0
- package/plugin/build/tsconfig.tsbuildinfo +1 -0
- package/plugin/build/withIAP.d.ts +2 -7
- package/plugin/build/withIAP.js +62 -51
- package/plugin/src/withIAP.ts +119 -0
- package/plugin/tsconfig.json +18 -0
- package/plugin/tsconfig.tsbuildinfo +1 -0
- package/src/helpers/subscription.ts +65 -0
- package/src/hooks/useIAP.ts +361 -222
- package/src/index.ts +1194 -9
- package/src/specs/RnIap.nitro.ts +501 -0
- package/src/types.ts +680 -0
- package/src/utils/error.ts +97 -0
- package/src/utils/type-bridge.ts +209 -0
- package/LICENSE +0 -21
- package/RNIap.podspec +0 -36
- package/android/src/amazon/AndroidManifest.xml +0 -14
- package/android/src/amazon/java/com/dooboolab/rniap/EventSender.kt +0 -10
- package/android/src/amazon/java/com/dooboolab/rniap/PurchasingServiceProxy.kt +0 -29
- package/android/src/amazon/java/com/dooboolab/rniap/PurchasingServiceProxyAmazonImpl.kt +0 -31
- package/android/src/amazon/java/com/dooboolab/rniap/RNIapActivityListener.kt +0 -55
- package/android/src/amazon/java/com/dooboolab/rniap/RNIapAmazonListener.kt +0 -325
- package/android/src/amazon/java/com/dooboolab/rniap/RNIapAmazonModule.kt +0 -244
- package/android/src/amazon/java/com/dooboolab/rniap/RNIapPackage.kt +0 -17
- package/android/src/amazon/java/com/dooboolab/rniap/modifysubscription/RNIapAmazonModifySubscriptionListener.kt +0 -88
- package/android/src/amazon/java/com/dooboolab/rniap/utils/Extensions.kt +0 -22
- package/android/src/main/java/com/dooboolab/rniap/PromiseUtils.kt +0 -62
- package/android/src/main/java/com/dooboolab/rniap/PromiseUtlis.kt +0 -43
- package/android/src/play/java/com/dooboolab/rniap/PlayUtils.kt +0 -114
- package/android/src/play/java/com/dooboolab/rniap/RNIapActivityListener.kt +0 -15
- package/android/src/play/java/com/dooboolab/rniap/RNIapModule.kt +0 -911
- package/android/src/play/java/com/dooboolab/rniap/RNIapPackage.kt +0 -17
- package/android/src/testAmazon/java/com/dooboolab/rniap/RNIapAmazonModuleTest.kt +0 -170
- package/app.plugin.js +0 -1
- package/ios/IapSerializationUtils.swift +0 -290
- package/ios/IapTypes.swift +0 -56
- package/ios/IapUtils.swift +0 -40
- package/ios/LatestPromiseKeeper.swift +0 -52
- package/ios/RNIapIos-Bridging-Header.h +0 -2
- package/ios/RNIapIos.m +0 -69
- package/ios/RNIapIos.swift +0 -868
- package/ios/RNIapIos.xcodeproj/project.pbxproj +0 -289
- package/ios/RNIapIosSk2.m +0 -126
- package/ios/RNIapIosSk2.swift +0 -1413
- package/ios/ThreadSafe.swift +0 -18
- package/lib/commonjs/eventEmitter.js +0 -195
- package/lib/commonjs/eventEmitter.js.map +0 -1
- package/lib/commonjs/hooks/index.js +0 -17
- package/lib/commonjs/hooks/index.js.map +0 -1
- package/lib/commonjs/hooks/useIAP.js +0 -203
- package/lib/commonjs/hooks/useIAP.js.map +0 -1
- package/lib/commonjs/hooks/withIAPContext.js +0 -95
- package/lib/commonjs/hooks/withIAPContext.js.map +0 -1
- package/lib/commonjs/iap.js +0 -836
- package/lib/commonjs/iap.js.map +0 -1
- package/lib/commonjs/index.js +0 -105
- package/lib/commonjs/index.js.map +0 -1
- package/lib/commonjs/internal/enhancedFetch.js +0 -26
- package/lib/commonjs/internal/enhancedFetch.js.map +0 -1
- package/lib/commonjs/internal/fillProductsWithAdditionalData.js +0 -50
- package/lib/commonjs/internal/fillProductsWithAdditionalData.js.map +0 -1
- package/lib/commonjs/internal/index.js +0 -39
- package/lib/commonjs/internal/index.js.map +0 -1
- package/lib/commonjs/internal/platform.js +0 -119
- package/lib/commonjs/internal/platform.js.map +0 -1
- package/lib/commonjs/modules/amazon.js +0 -50
- package/lib/commonjs/modules/amazon.js.map +0 -1
- package/lib/commonjs/modules/android.js +0 -92
- package/lib/commonjs/modules/android.js.map +0 -1
- package/lib/commonjs/modules/common.js +0 -2
- package/lib/commonjs/modules/index.js +0 -50
- package/lib/commonjs/modules/index.js.map +0 -1
- package/lib/commonjs/modules/ios.js +0 -160
- package/lib/commonjs/modules/ios.js.map +0 -1
- package/lib/commonjs/modules/iosSk2.js +0 -113
- package/lib/commonjs/modules/iosSk2.js.map +0 -1
- package/lib/commonjs/purchaseError.js +0 -170
- package/lib/commonjs/purchaseError.js.map +0 -1
- package/lib/commonjs/types/amazon.js +0 -2
- package/lib/commonjs/types/amazon.js.map +0 -1
- package/lib/commonjs/types/android.js +0 -67
- package/lib/commonjs/types/android.js.map +0 -1
- package/lib/commonjs/types/apple.js +0 -24
- package/lib/commonjs/types/apple.js.map +0 -1
- package/lib/commonjs/types/appleSk2.js +0 -137
- package/lib/commonjs/types/appleSk2.js.map +0 -1
- package/lib/commonjs/types/index.js +0 -67
- package/lib/commonjs/types/index.js.map +0 -1
- package/lib/commonjs/utils/errorMapping.js +0 -83
- package/lib/commonjs/utils/errorMapping.js.map +0 -1
- package/lib/commonjs/utils/typeGuards.js +0 -74
- package/lib/commonjs/utils/typeGuards.js.map +0 -1
- package/lib/module/eventEmitter.js +0 -185
- package/lib/module/eventEmitter.js.map +0 -1
- package/lib/module/hooks/index.js +0 -2
- package/lib/module/hooks/index.js.map +0 -1
- package/lib/module/hooks/withIAPContext.js +0 -86
- package/lib/module/hooks/withIAPContext.js.map +0 -1
- package/lib/module/iap.js +0 -805
- package/lib/module/iap.js.map +0 -1
- package/lib/module/internal/enhancedFetch.js +0 -19
- package/lib/module/internal/enhancedFetch.js.map +0 -1
- package/lib/module/internal/fillProductsWithAdditionalData.js +0 -43
- package/lib/module/internal/fillProductsWithAdditionalData.js.map +0 -1
- package/lib/module/internal/index.js +0 -4
- package/lib/module/internal/index.js.map +0 -1
- package/lib/module/internal/platform.js +0 -102
- package/lib/module/internal/platform.js.map +0 -1
- package/lib/module/modules/amazon.js +0 -42
- package/lib/module/modules/amazon.js.map +0 -1
- package/lib/module/modules/android.js +0 -81
- package/lib/module/modules/android.js.map +0 -1
- package/lib/module/modules/common.js +0 -2
- package/lib/module/modules/common.js.map +0 -1
- package/lib/module/modules/index.js +0 -5
- package/lib/module/modules/index.js.map +0 -1
- package/lib/module/modules/ios.js +0 -145
- package/lib/module/modules/ios.js.map +0 -1
- package/lib/module/modules/iosSk2.js +0 -96
- package/lib/module/modules/iosSk2.js.map +0 -1
- package/lib/module/purchaseError.js +0 -164
- package/lib/module/purchaseError.js.map +0 -1
- package/lib/module/types/amazon.js +0 -2
- package/lib/module/types/amazon.js.map +0 -1
- package/lib/module/types/android.js +0 -63
- package/lib/module/types/android.js.map +0 -1
- package/lib/module/types/apple.js +0 -17
- package/lib/module/types/apple.js.map +0 -1
- package/lib/module/types/appleSk2.js +0 -129
- package/lib/module/types/appleSk2.js.map +0 -1
- package/lib/module/types/index.js +0 -75
- package/lib/module/types/index.js.map +0 -1
- package/lib/module/utils/errorMapping.js +0 -75
- package/lib/module/utils/errorMapping.js.map +0 -1
- package/lib/module/utils/typeGuards.js +0 -61
- package/lib/module/utils/typeGuards.js.map +0 -1
- package/lib/typescript/src/eventEmitter.d.ts +0 -151
- package/lib/typescript/src/eventEmitter.d.ts.map +0 -1
- package/lib/typescript/src/hooks/index.d.ts +0 -2
- package/lib/typescript/src/hooks/index.d.ts.map +0 -1
- package/lib/typescript/src/hooks/withIAPContext.d.ts +0 -27
- package/lib/typescript/src/hooks/withIAPContext.d.ts.map +0 -1
- package/lib/typescript/src/iap.d.ts +0 -503
- package/lib/typescript/src/iap.d.ts.map +0 -1
- package/lib/typescript/src/internal/enhancedFetch.d.ts +0 -6
- package/lib/typescript/src/internal/enhancedFetch.d.ts.map +0 -1
- package/lib/typescript/src/internal/fillProductsWithAdditionalData.d.ts +0 -7
- package/lib/typescript/src/internal/fillProductsWithAdditionalData.d.ts.map +0 -1
- package/lib/typescript/src/internal/index.d.ts +0 -4
- package/lib/typescript/src/internal/index.d.ts.map +0 -1
- package/lib/typescript/src/internal/platform.d.ts +0 -27
- package/lib/typescript/src/internal/platform.d.ts.map +0 -1
- package/lib/typescript/src/modules/amazon.d.ts +0 -55
- package/lib/typescript/src/modules/amazon.d.ts.map +0 -1
- package/lib/typescript/src/modules/android.d.ts +0 -74
- package/lib/typescript/src/modules/android.d.ts.map +0 -1
- package/lib/typescript/src/modules/common.d.ts +0 -14
- package/lib/typescript/src/modules/common.d.ts.map +0 -1
- package/lib/typescript/src/modules/index.d.ts +0 -5
- package/lib/typescript/src/modules/index.d.ts.map +0 -1
- package/lib/typescript/src/modules/ios.d.ts +0 -117
- package/lib/typescript/src/modules/ios.d.ts.map +0 -1
- package/lib/typescript/src/modules/iosSk2.d.ts +0 -140
- package/lib/typescript/src/modules/iosSk2.d.ts.map +0 -1
- package/lib/typescript/src/purchaseError.d.ts +0 -133
- package/lib/typescript/src/purchaseError.d.ts.map +0 -1
- package/lib/typescript/src/types/amazon.d.ts +0 -33
- package/lib/typescript/src/types/amazon.d.ts.map +0 -1
- package/lib/typescript/src/types/android.d.ts +0 -66
- package/lib/typescript/src/types/android.d.ts.map +0 -1
- package/lib/typescript/src/types/apple.d.ts +0 -27
- package/lib/typescript/src/types/apple.d.ts.map +0 -1
- package/lib/typescript/src/types/appleSk2.d.ts +0 -129
- package/lib/typescript/src/types/appleSk2.d.ts.map +0 -1
- package/lib/typescript/src/types/index.d.ts +0 -302
- package/lib/typescript/src/types/index.d.ts.map +0 -1
- package/lib/typescript/src/utils/errorMapping.d.ts +0 -29
- package/lib/typescript/src/utils/errorMapping.d.ts.map +0 -1
- package/lib/typescript/src/utils/typeGuards.d.ts +0 -53
- package/lib/typescript/src/utils/typeGuards.d.ts.map +0 -1
- package/src/eventEmitter.ts +0 -212
- package/src/hooks/index.ts +0 -1
- package/src/hooks/withIAPContext.tsx +0 -179
- package/src/iap.ts +0 -1046
- package/src/internal/enhancedFetch.ts +0 -25
- package/src/internal/fillProductsWithAdditionalData.ts +0 -47
- package/src/internal/index.ts +0 -3
- package/src/internal/platform.ts +0 -135
- package/src/modules/amazon.ts +0 -94
- package/src/modules/android.ts +0 -179
- package/src/modules/common.ts +0 -16
- package/src/modules/index.ts +0 -4
- package/src/modules/ios.ts +0 -229
- package/src/modules/iosSk2.ts +0 -194
- package/src/purchaseError.ts +0 -196
- package/src/types/amazon.ts +0 -40
- package/src/types/android.ts +0 -89
- package/src/types/apple.ts +0 -44
- package/src/types/appleSk2.ts +0 -275
- package/src/types/index.ts +0 -379
- package/src/utils/errorMapping.ts +0 -88
- package/src/utils/typeGuards.ts +0 -90
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error utilities for parsing platform-specific error responses
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import {ErrorCode} from '../types';
|
|
6
|
+
|
|
7
|
+
export interface IapError {
|
|
8
|
+
code: string;
|
|
9
|
+
message: string;
|
|
10
|
+
responseCode?: number;
|
|
11
|
+
debugMessage?: string;
|
|
12
|
+
productId?: string;
|
|
13
|
+
[key: string]: any; // Allow additional platform-specific fields
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Parses error string from native modules into a structured error object
|
|
18
|
+
*
|
|
19
|
+
* Native modules return errors in different formats:
|
|
20
|
+
* - Android: JSON string like '{"code":"E_USER_CANCELLED","message":"User cancelled the purchase","responseCode":1}'
|
|
21
|
+
* - iOS: JSON string or plain message
|
|
22
|
+
* - Legacy: "CODE: message" format
|
|
23
|
+
*
|
|
24
|
+
* @param errorString - The error string from native module
|
|
25
|
+
* @returns Parsed error object with code and message
|
|
26
|
+
*/
|
|
27
|
+
export function parseErrorStringToJsonObj(
|
|
28
|
+
errorString: string | Error | unknown,
|
|
29
|
+
): IapError {
|
|
30
|
+
// Handle Error objects
|
|
31
|
+
if (errorString instanceof Error) {
|
|
32
|
+
errorString = errorString.message;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// Handle non-string inputs
|
|
36
|
+
if (typeof errorString !== 'string') {
|
|
37
|
+
return {
|
|
38
|
+
code: ErrorCode.E_UNKNOWN,
|
|
39
|
+
message: 'Unknown error occurred',
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Try to parse as JSON first
|
|
44
|
+
try {
|
|
45
|
+
const parsed = JSON.parse(errorString);
|
|
46
|
+
if (typeof parsed === 'object' && parsed !== null) {
|
|
47
|
+
// Ensure it has at least code and message
|
|
48
|
+
return {
|
|
49
|
+
code: parsed.code || ErrorCode.E_UNKNOWN,
|
|
50
|
+
message: parsed.message || errorString,
|
|
51
|
+
...parsed,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
} catch {
|
|
55
|
+
// Not JSON, continue with other formats
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Try to parse "CODE: message" format
|
|
59
|
+
const colonIndex = errorString.indexOf(':');
|
|
60
|
+
if (colonIndex > 0 && colonIndex < 50) {
|
|
61
|
+
// Reasonable position for error code
|
|
62
|
+
const potentialCode = errorString.substring(0, colonIndex).trim();
|
|
63
|
+
// Check if it looks like an error code (starts with E_ or contains uppercase)
|
|
64
|
+
if (potentialCode.startsWith('E_') || /^[A-Z_]+$/.test(potentialCode)) {
|
|
65
|
+
return {
|
|
66
|
+
code: potentialCode,
|
|
67
|
+
message: errorString.substring(colonIndex + 1).trim(),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Fallback: treat entire string as message
|
|
73
|
+
return {
|
|
74
|
+
code: ErrorCode.E_UNKNOWN,
|
|
75
|
+
message: errorString,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Checks if an error code indicates user cancellation
|
|
81
|
+
* @param error - Error object or string
|
|
82
|
+
* @returns true if the error is a user cancellation
|
|
83
|
+
*/
|
|
84
|
+
export function isUserCancelledError(
|
|
85
|
+
error: IapError | string | Error | unknown,
|
|
86
|
+
): boolean {
|
|
87
|
+
const errorObj =
|
|
88
|
+
typeof error === 'object' && error !== null && 'code' in error
|
|
89
|
+
? (error as IapError)
|
|
90
|
+
: parseErrorStringToJsonObj(error);
|
|
91
|
+
|
|
92
|
+
return (
|
|
93
|
+
errorObj.code === ErrorCode.E_USER_CANCELLED ||
|
|
94
|
+
errorObj.code === 'E_USER_CANCELED' || // Alternative spelling
|
|
95
|
+
errorObj.responseCode === 1
|
|
96
|
+
); // Android BillingClient.BillingResponseCode.USER_CANCELED
|
|
97
|
+
}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type Bridge Utilities
|
|
3
|
+
*
|
|
4
|
+
* This file provides conversion utilities between Nitro types (simple primitives)
|
|
5
|
+
* and TypeScript union types (complex types.ts definitions).
|
|
6
|
+
*
|
|
7
|
+
* Purpose: Prevent type fragmentation between native (Nitro) and TypeScript sides
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import type {NitroProduct, NitroPurchase} from '../specs/RnIap.nitro';
|
|
11
|
+
import type {Product, Purchase, SubscriptionProduct} from '../types';
|
|
12
|
+
import {Platform} from 'react-native';
|
|
13
|
+
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// PRODUCT CONVERSION
|
|
16
|
+
// ============================================================================
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Convert NitroProduct (from native) to TypeScript Product (for library consumers)
|
|
20
|
+
* This ensures all fields are properly mapped and accessible
|
|
21
|
+
*/
|
|
22
|
+
export function convertNitroProductToProduct(nitroProduct: NitroProduct): Product {
|
|
23
|
+
// Create base product with common fields, handling platform casting
|
|
24
|
+
const product: any = {
|
|
25
|
+
id: nitroProduct.id,
|
|
26
|
+
title: nitroProduct.title,
|
|
27
|
+
description: nitroProduct.description,
|
|
28
|
+
type: nitroProduct.type as 'inapp' | 'subs',
|
|
29
|
+
displayName: nitroProduct.displayName,
|
|
30
|
+
displayPrice: nitroProduct.displayPrice || '',
|
|
31
|
+
currency: nitroProduct.currency || '',
|
|
32
|
+
price: nitroProduct.price,
|
|
33
|
+
platform: nitroProduct.platform as 'ios' | 'android',
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
// Add platform-specific fields based on current platform
|
|
37
|
+
if (Platform.OS === 'ios') {
|
|
38
|
+
// Map iOS fields from Nitro to TypeScript types
|
|
39
|
+
const iosProduct = product as any; // Temporarily cast to access iOS fields
|
|
40
|
+
iosProduct.isFamilyShareable = nitroProduct.isFamilyShareable;
|
|
41
|
+
iosProduct.jsonRepresentation = nitroProduct.jsonRepresentation;
|
|
42
|
+
iosProduct.subscriptionPeriodUnitIOS = nitroProduct.subscriptionPeriodUnitIOS;
|
|
43
|
+
iosProduct.subscriptionPeriodNumberIOS = nitroProduct.subscriptionPeriodNumberIOS;
|
|
44
|
+
iosProduct.introductoryPriceIOS = nitroProduct.introductoryPriceIOS;
|
|
45
|
+
iosProduct.introductoryPriceAsAmountIOS = nitroProduct.introductoryPriceAsAmountIOS;
|
|
46
|
+
iosProduct.introductoryPricePaymentModeIOS = nitroProduct.introductoryPricePaymentModeIOS;
|
|
47
|
+
iosProduct.introductoryPriceNumberOfPeriodsIOS = nitroProduct.introductoryPriceNumberOfPeriodsIOS;
|
|
48
|
+
iosProduct.introductoryPriceSubscriptionPeriodIOS = nitroProduct.introductoryPriceSubscriptionPeriodIOS;
|
|
49
|
+
} else if (Platform.OS === 'android') {
|
|
50
|
+
// Map Android fields from Nitro to TypeScript types
|
|
51
|
+
const androidProduct = product as any; // Temporarily cast to access Android fields
|
|
52
|
+
androidProduct.originalPrice = nitroProduct.originalPrice;
|
|
53
|
+
androidProduct.originalPriceAmountMicros = nitroProduct.originalPriceAmountMicros;
|
|
54
|
+
androidProduct.introductoryPriceValue = nitroProduct.introductoryPriceValue;
|
|
55
|
+
androidProduct.introductoryPriceCycles = nitroProduct.introductoryPriceCycles;
|
|
56
|
+
androidProduct.introductoryPricePeriod = nitroProduct.introductoryPricePeriod;
|
|
57
|
+
androidProduct.subscriptionPeriod = nitroProduct.subscriptionPeriod;
|
|
58
|
+
androidProduct.freeTrialPeriod = nitroProduct.freeTrialPeriod;
|
|
59
|
+
|
|
60
|
+
// Map subscription offer details (parse from JSON string)
|
|
61
|
+
if (nitroProduct.subscriptionOfferDetailsAndroid) {
|
|
62
|
+
try {
|
|
63
|
+
androidProduct.subscriptionOfferDetailsAndroid = JSON.parse(nitroProduct.subscriptionOfferDetailsAndroid);
|
|
64
|
+
} catch (e) {
|
|
65
|
+
console.warn('Failed to parse subscription offer details:', e);
|
|
66
|
+
androidProduct.subscriptionOfferDetailsAndroid = null;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Create flattened offer fields for easier access in example code
|
|
71
|
+
androidProduct.oneTimePurchaseOfferFormattedPrice = nitroProduct.displayPrice;
|
|
72
|
+
androidProduct.oneTimePurchaseOfferPriceAmountMicros = nitroProduct.originalPriceAmountMicros;
|
|
73
|
+
androidProduct.oneTimePurchaseOfferPriceCurrencyCode = nitroProduct.currency;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return product as Product;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Note: Use nitroProducts.map(convertNitroProductToProduct) instead of a separate function
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Convert Product to SubscriptionProduct (type-safe casting)
|
|
83
|
+
*/
|
|
84
|
+
export function convertProductToSubscriptionProduct(product: Product): SubscriptionProduct {
|
|
85
|
+
if (product.type !== 'subs') {
|
|
86
|
+
console.warn('Converting non-subscription product to SubscriptionProduct:', product.id);
|
|
87
|
+
}
|
|
88
|
+
// Since SubscriptionProduct is now an intersection type, we need to cast properly
|
|
89
|
+
return {
|
|
90
|
+
...product,
|
|
91
|
+
type: 'subs' as const,
|
|
92
|
+
} as SubscriptionProduct;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// ============================================================================
|
|
96
|
+
// PURCHASE CONVERSION
|
|
97
|
+
// ============================================================================
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Convert NitroPurchase (from native) to TypeScript Purchase (for library consumers)
|
|
101
|
+
*/
|
|
102
|
+
export function convertNitroPurchaseToPurchase(nitroPurchase: NitroPurchase): Purchase {
|
|
103
|
+
// Create base purchase with common fields
|
|
104
|
+
const purchase: any = {
|
|
105
|
+
id: nitroPurchase.id,
|
|
106
|
+
productId: nitroPurchase.productId,
|
|
107
|
+
transactionDate: nitroPurchase.transactionDate,
|
|
108
|
+
transactionReceipt: '', // Will be set by native layer
|
|
109
|
+
purchaseToken: nitroPurchase.purchaseToken,
|
|
110
|
+
platform: nitroPurchase.platform as 'ios' | 'android',
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
// Add platform-specific fields
|
|
114
|
+
if (Platform.OS === 'ios') {
|
|
115
|
+
const iosPurchase = purchase as any;
|
|
116
|
+
iosPurchase.quantityIOS = nitroPurchase.quantityIOS;
|
|
117
|
+
iosPurchase.originalTransactionDateIOS = nitroPurchase.originalTransactionDateIOS;
|
|
118
|
+
iosPurchase.originalTransactionIdentifierIOS = nitroPurchase.originalTransactionIdentifierIOS;
|
|
119
|
+
iosPurchase.appAccountToken = nitroPurchase.appAccountToken;
|
|
120
|
+
} else if (Platform.OS === 'android') {
|
|
121
|
+
const androidPurchase = purchase as any;
|
|
122
|
+
androidPurchase.purchaseTokenAndroid = nitroPurchase.purchaseTokenAndroid;
|
|
123
|
+
androidPurchase.dataAndroid = nitroPurchase.dataAndroid;
|
|
124
|
+
androidPurchase.signatureAndroid = nitroPurchase.signatureAndroid;
|
|
125
|
+
androidPurchase.autoRenewingAndroid = nitroPurchase.autoRenewingAndroid;
|
|
126
|
+
androidPurchase.purchaseStateAndroid = nitroPurchase.purchaseStateAndroid;
|
|
127
|
+
androidPurchase.isAcknowledgedAndroid = nitroPurchase.isAcknowledgedAndroid;
|
|
128
|
+
androidPurchase.packageNameAndroid = nitroPurchase.packageNameAndroid;
|
|
129
|
+
androidPurchase.obfuscatedAccountIdAndroid = nitroPurchase.obfuscatedAccountIdAndroid;
|
|
130
|
+
androidPurchase.obfuscatedProfileIdAndroid = nitroPurchase.obfuscatedProfileIdAndroid;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
return purchase as Purchase;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// Note: Use nitroPurchases.map(convertNitroPurchaseToPurchase) instead of a separate function
|
|
137
|
+
|
|
138
|
+
// ============================================================================
|
|
139
|
+
// TYPE VALIDATION
|
|
140
|
+
// ============================================================================
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Validate that a NitroProduct has all required fields for conversion
|
|
144
|
+
*/
|
|
145
|
+
export function validateNitroProduct(nitroProduct: NitroProduct): boolean {
|
|
146
|
+
const required = ['id', 'title', 'description', 'type', 'platform'];
|
|
147
|
+
for (const field of required) {
|
|
148
|
+
if (!(field in nitroProduct) || nitroProduct[field as keyof NitroProduct] == null) {
|
|
149
|
+
console.error(`NitroProduct missing required field: ${field}`, nitroProduct);
|
|
150
|
+
return false;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return true;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Validate that a NitroPurchase has all required fields for conversion
|
|
158
|
+
*/
|
|
159
|
+
export function validateNitroPurchase(nitroPurchase: NitroPurchase): boolean {
|
|
160
|
+
const required = ['id', 'productId', 'transactionDate', 'platform'];
|
|
161
|
+
for (const field of required) {
|
|
162
|
+
if (!(field in nitroPurchase) || nitroPurchase[field as keyof NitroPurchase] == null) {
|
|
163
|
+
console.error(`NitroPurchase missing required field: ${field}`, nitroPurchase);
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return true;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// ============================================================================
|
|
171
|
+
// TYPE SYNCHRONIZATION HELPERS
|
|
172
|
+
// ============================================================================
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Check if Nitro types and TypeScript types are synchronized
|
|
176
|
+
* This function can be run in development to detect type mismatches
|
|
177
|
+
*/
|
|
178
|
+
export function checkTypeSynchronization(): {
|
|
179
|
+
isSync: boolean;
|
|
180
|
+
issues: string[];
|
|
181
|
+
} {
|
|
182
|
+
const issues: string[] = [];
|
|
183
|
+
|
|
184
|
+
try {
|
|
185
|
+
// Simple test: can we convert between types?
|
|
186
|
+
const testNitroProduct: NitroProduct = {
|
|
187
|
+
id: 'test',
|
|
188
|
+
title: 'Test',
|
|
189
|
+
description: 'Test',
|
|
190
|
+
type: 'inapp',
|
|
191
|
+
platform: 'ios',
|
|
192
|
+
displayPrice: '$1.00',
|
|
193
|
+
currency: 'USD',
|
|
194
|
+
};
|
|
195
|
+
|
|
196
|
+
const converted = convertNitroProductToProduct(testNitroProduct);
|
|
197
|
+
|
|
198
|
+
if (!converted.id || !converted.title) {
|
|
199
|
+
issues.push('Type conversion failed');
|
|
200
|
+
}
|
|
201
|
+
} catch (error) {
|
|
202
|
+
issues.push(`Type conversion error: ${error}`);
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
return {
|
|
206
|
+
isSync: issues.length === 0,
|
|
207
|
+
issues,
|
|
208
|
+
};
|
|
209
|
+
}
|
package/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2024 hyochan
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
package/RNIap.podspec
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
require "json"
|
|
2
|
-
|
|
3
|
-
package = JSON.parse(File.read(File.join(__dir__, "package.json")))
|
|
4
|
-
folly_compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -Wno-comma -Wno-shorten-64-to-32'
|
|
5
|
-
|
|
6
|
-
Pod::Spec.new do |s|
|
|
7
|
-
s.name = "RNIap"
|
|
8
|
-
s.version = package["version"]
|
|
9
|
-
s.summary = package["description"]
|
|
10
|
-
s.homepage = package["homepage"]
|
|
11
|
-
s.license = package["license"]
|
|
12
|
-
s.authors = package["author"]
|
|
13
|
-
|
|
14
|
-
s.platforms = { :ios => "10.0" , :tvos => "10.0", :visionos => "1.0" }
|
|
15
|
-
s.source = { :git => "https://github.com/hyochan/react-native-iap.git", :tag => "#{s.version}" }
|
|
16
|
-
|
|
17
|
-
s.source_files = "ios/*.{h,m,mm,swift}"
|
|
18
|
-
|
|
19
|
-
s.requires_arc = true
|
|
20
|
-
|
|
21
|
-
s.dependency "React-Core"
|
|
22
|
-
|
|
23
|
-
# Don't install the dependencies when we run `pod install` in the old architecture.
|
|
24
|
-
if ENV['RCT_NEW_ARCH_ENABLED'] == '1' then
|
|
25
|
-
s.compiler_flags = folly_compiler_flags + " -DRCT_NEW_ARCH_ENABLED=1"
|
|
26
|
-
s.pod_target_xcconfig = {
|
|
27
|
-
"HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\"",
|
|
28
|
-
"CLANG_CXX_LANGUAGE_STANDARD" => "c++17"
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
s.dependency "RCT-Folly"
|
|
32
|
-
s.dependency "RCTRequired"
|
|
33
|
-
s.dependency "RCTTypeSafety"
|
|
34
|
-
s.dependency "ReactCommon/turbomodule/core"
|
|
35
|
-
end
|
|
36
|
-
end
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
|
2
|
-
package="com.dooboolab.rniap">
|
|
3
|
-
|
|
4
|
-
<application android:exported="true">
|
|
5
|
-
<receiver android:name="com.amazon.device.iap.ResponseReceiver" android:exported="true"
|
|
6
|
-
>
|
|
7
|
-
<intent-filter>
|
|
8
|
-
<action
|
|
9
|
-
android:name="com.amazon.inapp.purchasing.NOTIFY"
|
|
10
|
-
android:permission="com.amazon.inapp.purchasing.Permission.NOTIFY" />
|
|
11
|
-
</intent-filter>
|
|
12
|
-
</receiver>
|
|
13
|
-
</application>
|
|
14
|
-
</manifest>
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
package com.dooboolab.rniap
|
|
2
|
-
|
|
3
|
-
import android.content.Context
|
|
4
|
-
import com.amazon.device.iap.PurchasingListener
|
|
5
|
-
import com.amazon.device.iap.model.FulfillmentResult
|
|
6
|
-
import com.amazon.device.iap.model.ProrationMode
|
|
7
|
-
import com.amazon.device.iap.model.RequestId
|
|
8
|
-
|
|
9
|
-
interface PurchasingServiceProxy {
|
|
10
|
-
fun registerListener(
|
|
11
|
-
var0: Context?,
|
|
12
|
-
var1: PurchasingListener?,
|
|
13
|
-
)
|
|
14
|
-
|
|
15
|
-
fun getUserData(): RequestId
|
|
16
|
-
|
|
17
|
-
fun purchase(var0: String?): RequestId
|
|
18
|
-
|
|
19
|
-
fun getProductData(var0: Set<String?>?): RequestId
|
|
20
|
-
|
|
21
|
-
fun getPurchaseUpdates(var0: Boolean): RequestId
|
|
22
|
-
|
|
23
|
-
fun notifyFulfillment(
|
|
24
|
-
var0: String?,
|
|
25
|
-
var1: FulfillmentResult?,
|
|
26
|
-
)
|
|
27
|
-
|
|
28
|
-
fun modifySubscription(var0: String?, var1: ProrationMode): RequestId
|
|
29
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
package com.dooboolab.rniap
|
|
2
|
-
|
|
3
|
-
import android.content.Context
|
|
4
|
-
import com.amazon.device.iap.PurchasingListener
|
|
5
|
-
import com.amazon.device.iap.PurchasingService
|
|
6
|
-
import com.amazon.device.iap.model.FulfillmentResult
|
|
7
|
-
import com.amazon.device.iap.model.ProrationMode
|
|
8
|
-
import com.amazon.device.iap.model.RequestId
|
|
9
|
-
|
|
10
|
-
class PurchasingServiceProxyAmazonImpl : PurchasingServiceProxy {
|
|
11
|
-
override fun registerListener(
|
|
12
|
-
var0: Context?,
|
|
13
|
-
var1: PurchasingListener?,
|
|
14
|
-
) = PurchasingService.registerListener(var0, var1)
|
|
15
|
-
|
|
16
|
-
override fun getUserData(): RequestId = PurchasingService.getUserData()
|
|
17
|
-
|
|
18
|
-
override fun purchase(var0: String?): RequestId = PurchasingService.purchase(var0)
|
|
19
|
-
|
|
20
|
-
override fun getProductData(var0: Set<String?>?): RequestId = PurchasingService.getProductData(var0)
|
|
21
|
-
|
|
22
|
-
override fun getPurchaseUpdates(var0: Boolean): RequestId = PurchasingService.getPurchaseUpdates(var0)
|
|
23
|
-
|
|
24
|
-
override fun notifyFulfillment(
|
|
25
|
-
var0: String?,
|
|
26
|
-
var1: FulfillmentResult?,
|
|
27
|
-
) = PurchasingService.notifyFulfillment(var0, var1)
|
|
28
|
-
|
|
29
|
-
override fun modifySubscription(var0: String?, var1: ProrationMode): RequestId =
|
|
30
|
-
PurchasingService.modifySubscription(var0, var1)
|
|
31
|
-
}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
package com.dooboolab.rniap
|
|
2
|
-
|
|
3
|
-
import android.app.Activity
|
|
4
|
-
import android.util.Log
|
|
5
|
-
import com.amazon.device.iap.PurchasingService
|
|
6
|
-
import com.dooboolab.rniap.modifysubscription.RNIapAmazonModifySubscriptionListener
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* In order of the IAP process to show correctly, AmazonPurchasingService must be registered on Activity.onCreate
|
|
10
|
-
* registering it in on Application.onCreate will not throw an error but it will now show the Native purchasing screen
|
|
11
|
-
*/
|
|
12
|
-
class RNIapActivityListener {
|
|
13
|
-
companion object {
|
|
14
|
-
@JvmStatic
|
|
15
|
-
var hasListener = false
|
|
16
|
-
|
|
17
|
-
@JvmStatic
|
|
18
|
-
var amazonListener: RNIapAmazonListener? = null
|
|
19
|
-
|
|
20
|
-
@JvmStatic
|
|
21
|
-
var amazonModifySubscriptionListener: RNIapAmazonModifySubscriptionListener? = null
|
|
22
|
-
|
|
23
|
-
@JvmStatic
|
|
24
|
-
fun initListeners(eventSender: EventSender?, purchasingService: PurchasingServiceProxy?) {
|
|
25
|
-
if (amazonListener == null || amazonModifySubscriptionListener == null) {
|
|
26
|
-
Log.e(
|
|
27
|
-
RNIapAmazonModule.TAG,
|
|
28
|
-
"registerActivity should be called on Activity.onCreate ",
|
|
29
|
-
)
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
amazonListener?.eventSender = eventSender
|
|
33
|
-
amazonListener?.purchasingService = purchasingService
|
|
34
|
-
amazonModifySubscriptionListener?.eventSender = eventSender
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
@JvmStatic
|
|
38
|
-
fun registerActivity(activity: Activity) {
|
|
39
|
-
amazonListener = RNIapAmazonListener(null, null)
|
|
40
|
-
amazonModifySubscriptionListener = RNIapAmazonModifySubscriptionListener(null)
|
|
41
|
-
|
|
42
|
-
try {
|
|
43
|
-
PurchasingService.registerListener(activity, amazonListener)
|
|
44
|
-
PurchasingService.registerListener(activity, amazonModifySubscriptionListener)
|
|
45
|
-
hasListener = true
|
|
46
|
-
|
|
47
|
-
// Prefetch user and purchases as per Amazon SDK documentation:
|
|
48
|
-
PurchasingService.getUserData()
|
|
49
|
-
PurchasingService.getPurchaseUpdates(false)
|
|
50
|
-
} catch (e: Exception) {
|
|
51
|
-
Log.e(RNIapAmazonModule.TAG, "Error initializing Amazon appstore sdk", e)
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|