@qonversion/react-native-sdk 10.0.0-RC1
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 +129 -0
- package/android/build.gradle +92 -0
- package/android/gradle.properties +6 -0
- package/android/src/main/AndroidManifest.xml +2 -0
- package/android/src/main/java/com/qonversion/reactnativesdk/EntitiesConverter.kt +135 -0
- package/android/src/main/java/com/qonversion/reactnativesdk/NoCodesModule.kt +76 -0
- package/android/src/main/java/com/qonversion/reactnativesdk/QonversionModule.kt +278 -0
- package/android/src/main/java/com/qonversion/reactnativesdk/QonversionPackage.kt +43 -0
- package/android/src/main/java/com/qonversion/reactnativesdk/Utils.kt +32 -0
- package/ios/RNNoCodes.h +5 -0
- package/ios/RNNoCodes.mm +61 -0
- package/ios/RNNoCodesImpl.swift +69 -0
- package/ios/RNQonversion.h +5 -0
- package/ios/RNQonversion.mm +189 -0
- package/ios/RNQonversionImpl.swift +250 -0
- package/ios/qonversion-react-native-sdk-Bridging-Header.h +6 -0
- package/lib/module/NoCodes.js +32 -0
- package/lib/module/NoCodes.js.map +1 -0
- package/lib/module/NoCodesApi.js +2 -0
- package/lib/module/NoCodesApi.js.map +1 -0
- package/lib/module/NoCodesConfig.js +10 -0
- package/lib/module/NoCodesConfig.js.map +1 -0
- package/lib/module/NoCodesConfigBuilder.js +35 -0
- package/lib/module/NoCodesConfigBuilder.js.map +1 -0
- package/lib/module/Qonversion.js +35 -0
- package/lib/module/Qonversion.js.map +1 -0
- package/lib/module/QonversionApi.js +4 -0
- package/lib/module/QonversionApi.js.map +1 -0
- package/lib/module/QonversionConfig.js +16 -0
- package/lib/module/QonversionConfig.js.map +1 -0
- package/lib/module/QonversionConfigBuilder.js +90 -0
- package/lib/module/QonversionConfigBuilder.js.map +1 -0
- package/lib/module/dto/Entitlement.js +24 -0
- package/lib/module/dto/Entitlement.js.map +1 -0
- package/lib/module/dto/EntitlementsUpdateListener.js +4 -0
- package/lib/module/dto/EntitlementsUpdateListener.js.map +1 -0
- package/lib/module/dto/Experiment.js +11 -0
- package/lib/module/dto/Experiment.js.map +1 -0
- package/lib/module/dto/ExperimentGroup.js +11 -0
- package/lib/module/dto/ExperimentGroup.js.map +1 -0
- package/lib/module/dto/IntroEligibility.js +9 -0
- package/lib/module/dto/IntroEligibility.js.map +1 -0
- package/lib/module/dto/NoCodesAction.js +11 -0
- package/lib/module/dto/NoCodesAction.js.map +1 -0
- package/lib/module/dto/NoCodesError.js +13 -0
- package/lib/module/dto/NoCodesError.js.map +1 -0
- package/lib/module/dto/NoCodesListener.js +4 -0
- package/lib/module/dto/NoCodesListener.js.map +1 -0
- package/lib/module/dto/Offering.js +14 -0
- package/lib/module/dto/Offering.js.map +1 -0
- package/lib/module/dto/Offerings.js +13 -0
- package/lib/module/dto/Offerings.js.map +1 -0
- package/lib/module/dto/Product.js +114 -0
- package/lib/module/dto/Product.js.map +1 -0
- package/lib/module/dto/PromoPurchasesListener.js +4 -0
- package/lib/module/dto/PromoPurchasesListener.js.map +1 -0
- package/lib/module/dto/PromotionalOffer.js +10 -0
- package/lib/module/dto/PromotionalOffer.js.map +1 -0
- package/lib/module/dto/PurchaseModel.js +26 -0
- package/lib/module/dto/PurchaseModel.js.map +1 -0
- package/lib/module/dto/PurchaseOptions.js +15 -0
- package/lib/module/dto/PurchaseOptions.js.map +1 -0
- package/lib/module/dto/PurchaseOptionsBuilder.js +117 -0
- package/lib/module/dto/PurchaseOptionsBuilder.js.map +1 -0
- package/lib/module/dto/PurchaseUpdateModel.js +32 -0
- package/lib/module/dto/PurchaseUpdateModel.js.map +1 -0
- package/lib/module/dto/QonversionError.js +15 -0
- package/lib/module/dto/QonversionError.js.map +1 -0
- package/lib/module/dto/RemoteConfig.js +11 -0
- package/lib/module/dto/RemoteConfig.js.map +1 -0
- package/lib/module/dto/RemoteConfigList.js +18 -0
- package/lib/module/dto/RemoteConfigList.js.map +1 -0
- package/lib/module/dto/RemoteConfigurationSource.js +13 -0
- package/lib/module/dto/RemoteConfigurationSource.js.map +1 -0
- package/lib/module/dto/ScreenPresentationConfig.js +22 -0
- package/lib/module/dto/ScreenPresentationConfig.js.map +1 -0
- package/lib/module/dto/SubscriptionPeriod.js +26 -0
- package/lib/module/dto/SubscriptionPeriod.js.map +1 -0
- package/lib/module/dto/Transaction.js +18 -0
- package/lib/module/dto/Transaction.js.map +1 -0
- package/lib/module/dto/User.js +10 -0
- package/lib/module/dto/User.js.map +1 -0
- package/lib/module/dto/UserProperties.js +71 -0
- package/lib/module/dto/UserProperties.js.map +1 -0
- package/lib/module/dto/UserProperty.js +17 -0
- package/lib/module/dto/UserProperty.js.map +1 -0
- package/lib/module/dto/enums.js +425 -0
- package/lib/module/dto/enums.js.map +1 -0
- package/lib/module/dto/storeProducts/ProductInAppDetails.js +16 -0
- package/lib/module/dto/storeProducts/ProductInAppDetails.js.map +1 -0
- package/lib/module/dto/storeProducts/ProductInstallmentPlanDetails.js +25 -0
- package/lib/module/dto/storeProducts/ProductInstallmentPlanDetails.js.map +1 -0
- package/lib/module/dto/storeProducts/ProductOfferDetails.js +76 -0
- package/lib/module/dto/storeProducts/ProductOfferDetails.js.map +1 -0
- package/lib/module/dto/storeProducts/ProductPrice.js +37 -0
- package/lib/module/dto/storeProducts/ProductPrice.js.map +1 -0
- package/lib/module/dto/storeProducts/ProductPricingPhase.js +52 -0
- package/lib/module/dto/storeProducts/ProductPricingPhase.js.map +1 -0
- package/lib/module/dto/storeProducts/ProductStoreDetails.js +114 -0
- package/lib/module/dto/storeProducts/ProductStoreDetails.js.map +1 -0
- package/lib/module/dto/storeProducts/SKPaymentDiscount.js +13 -0
- package/lib/module/dto/storeProducts/SKPaymentDiscount.js.map +1 -0
- package/lib/module/dto/storeProducts/SKProduct.js +22 -0
- package/lib/module/dto/storeProducts/SKProduct.js.map +1 -0
- package/lib/module/dto/storeProducts/SKProductDiscount.js +16 -0
- package/lib/module/dto/storeProducts/SKProductDiscount.js.map +1 -0
- package/lib/module/dto/storeProducts/SKSubscriptionPeriod.js +10 -0
- package/lib/module/dto/storeProducts/SKSubscriptionPeriod.js.map +1 -0
- package/lib/module/dto/storeProducts/SkuDetails.js +30 -0
- package/lib/module/dto/storeProducts/SkuDetails.js.map +1 -0
- package/lib/module/index.js +40 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/internal/Mapper.js +676 -0
- package/lib/module/internal/Mapper.js.map +1 -0
- package/lib/module/internal/NoCodesInternal.js +70 -0
- package/lib/module/internal/NoCodesInternal.js.map +1 -0
- package/lib/module/internal/QonversionInternal.js +237 -0
- package/lib/module/internal/QonversionInternal.js.map +1 -0
- package/lib/module/internal/specs/NativeNoCodesModule.js +5 -0
- package/lib/module/internal/specs/NativeNoCodesModule.js.map +1 -0
- package/lib/module/internal/specs/NativeQonversionModule.js +5 -0
- package/lib/module/internal/specs/NativeQonversionModule.js.map +1 -0
- package/lib/module/internal/utils.js +10 -0
- package/lib/module/internal/utils.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/NoCodes.d.ts +23 -0
- package/lib/typescript/src/NoCodes.d.ts.map +1 -0
- package/lib/typescript/src/NoCodesApi.d.ts +20 -0
- package/lib/typescript/src/NoCodesApi.d.ts.map +1 -0
- package/lib/typescript/src/NoCodesConfig.d.ts +8 -0
- package/lib/typescript/src/NoCodesConfig.d.ts.map +1 -0
- package/lib/typescript/src/NoCodesConfigBuilder.d.ts +26 -0
- package/lib/typescript/src/NoCodesConfigBuilder.d.ts.map +1 -0
- package/lib/typescript/src/Qonversion.d.ts +26 -0
- package/lib/typescript/src/Qonversion.d.ts.map +1 -0
- package/lib/typescript/src/QonversionApi.d.ts +285 -0
- package/lib/typescript/src/QonversionApi.d.ts.map +1 -0
- package/lib/typescript/src/QonversionConfig.d.ts +14 -0
- package/lib/typescript/src/QonversionConfig.d.ts.map +1 -0
- package/lib/typescript/src/QonversionConfigBuilder.d.ts +65 -0
- package/lib/typescript/src/QonversionConfigBuilder.d.ts.map +1 -0
- package/lib/typescript/src/dto/Entitlement.d.ts +22 -0
- package/lib/typescript/src/dto/Entitlement.d.ts.map +1 -0
- package/lib/typescript/src/dto/EntitlementsUpdateListener.d.ts +10 -0
- package/lib/typescript/src/dto/EntitlementsUpdateListener.d.ts.map +1 -0
- package/lib/typescript/src/dto/Experiment.d.ts +9 -0
- package/lib/typescript/src/dto/Experiment.d.ts.map +1 -0
- package/lib/typescript/src/dto/ExperimentGroup.d.ts +9 -0
- package/lib/typescript/src/dto/ExperimentGroup.d.ts.map +1 -0
- package/lib/typescript/src/dto/IntroEligibility.d.ts +7 -0
- package/lib/typescript/src/dto/IntroEligibility.d.ts.map +1 -0
- package/lib/typescript/src/dto/NoCodesAction.d.ts +10 -0
- package/lib/typescript/src/dto/NoCodesAction.d.ts.map +1 -0
- package/lib/typescript/src/dto/NoCodesError.d.ts +12 -0
- package/lib/typescript/src/dto/NoCodesError.d.ts.map +1 -0
- package/lib/typescript/src/dto/NoCodesListener.d.ts +34 -0
- package/lib/typescript/src/dto/NoCodesListener.d.ts.map +1 -0
- package/lib/typescript/src/dto/Offering.d.ts +11 -0
- package/lib/typescript/src/dto/Offering.d.ts.map +1 -0
- package/lib/typescript/src/dto/Offerings.d.ts +9 -0
- package/lib/typescript/src/dto/Offerings.d.ts.map +1 -0
- package/lib/typescript/src/dto/Product.d.ts +95 -0
- package/lib/typescript/src/dto/Product.d.ts.map +1 -0
- package/lib/typescript/src/dto/PromoPurchasesListener.d.ts +12 -0
- package/lib/typescript/src/dto/PromoPurchasesListener.d.ts.map +1 -0
- package/lib/typescript/src/dto/PromotionalOffer.d.ts +9 -0
- package/lib/typescript/src/dto/PromotionalOffer.d.ts.map +1 -0
- package/lib/typescript/src/dto/PurchaseModel.d.ts +19 -0
- package/lib/typescript/src/dto/PurchaseModel.d.ts.map +1 -0
- package/lib/typescript/src/dto/PurchaseOptions.d.ts +15 -0
- package/lib/typescript/src/dto/PurchaseOptions.d.ts.map +1 -0
- package/lib/typescript/src/dto/PurchaseOptionsBuilder.d.ts +84 -0
- package/lib/typescript/src/dto/PurchaseOptionsBuilder.d.ts.map +1 -0
- package/lib/typescript/src/dto/PurchaseUpdateModel.d.ts +25 -0
- package/lib/typescript/src/dto/PurchaseUpdateModel.d.ts.map +1 -0
- package/lib/typescript/src/dto/QonversionError.d.ts +11 -0
- package/lib/typescript/src/dto/QonversionError.d.ts.map +1 -0
- package/lib/typescript/src/dto/RemoteConfig.d.ts +10 -0
- package/lib/typescript/src/dto/RemoteConfig.d.ts.map +1 -0
- package/lib/typescript/src/dto/RemoteConfigList.d.ts +10 -0
- package/lib/typescript/src/dto/RemoteConfigList.d.ts.map +1 -0
- package/lib/typescript/src/dto/RemoteConfigurationSource.d.ts +11 -0
- package/lib/typescript/src/dto/RemoteConfigurationSource.d.ts.map +1 -0
- package/lib/typescript/src/dto/ScreenPresentationConfig.d.ts +18 -0
- package/lib/typescript/src/dto/ScreenPresentationConfig.d.ts.map +1 -0
- package/lib/typescript/src/dto/SubscriptionPeriod.d.ts +21 -0
- package/lib/typescript/src/dto/SubscriptionPeriod.d.ts.map +1 -0
- package/lib/typescript/src/dto/Transaction.d.ts +16 -0
- package/lib/typescript/src/dto/Transaction.d.ts.map +1 -0
- package/lib/typescript/src/dto/User.d.ts +7 -0
- package/lib/typescript/src/dto/User.d.ts.map +1 -0
- package/lib/typescript/src/dto/UserProperties.d.ts +49 -0
- package/lib/typescript/src/dto/UserProperties.d.ts.map +1 -0
- package/lib/typescript/src/dto/UserProperty.d.ts +13 -0
- package/lib/typescript/src/dto/UserProperty.d.ts.map +1 -0
- package/lib/typescript/src/dto/enums.d.ts +343 -0
- package/lib/typescript/src/dto/enums.d.ts.map +1 -0
- package/lib/typescript/src/dto/storeProducts/ProductInAppDetails.d.ts +13 -0
- package/lib/typescript/src/dto/storeProducts/ProductInAppDetails.d.ts.map +1 -0
- package/lib/typescript/src/dto/storeProducts/ProductInstallmentPlanDetails.d.ts +20 -0
- package/lib/typescript/src/dto/storeProducts/ProductInstallmentPlanDetails.d.ts.map +1 -0
- package/lib/typescript/src/dto/storeProducts/ProductOfferDetails.d.ts +63 -0
- package/lib/typescript/src/dto/storeProducts/ProductOfferDetails.d.ts.map +1 -0
- package/lib/typescript/src/dto/storeProducts/ProductPrice.d.ts +29 -0
- package/lib/typescript/src/dto/storeProducts/ProductPrice.d.ts.map +1 -0
- package/lib/typescript/src/dto/storeProducts/ProductPricingPhase.d.ts +44 -0
- package/lib/typescript/src/dto/storeProducts/ProductPricingPhase.d.ts.map +1 -0
- package/lib/typescript/src/dto/storeProducts/ProductStoreDetails.d.ts +97 -0
- package/lib/typescript/src/dto/storeProducts/ProductStoreDetails.d.ts.map +1 -0
- package/lib/typescript/src/dto/storeProducts/SKPaymentDiscount.d.ts +10 -0
- package/lib/typescript/src/dto/storeProducts/SKPaymentDiscount.d.ts.map +1 -0
- package/lib/typescript/src/dto/storeProducts/SKProduct.d.ts +21 -0
- package/lib/typescript/src/dto/storeProducts/SKProduct.d.ts.map +1 -0
- package/lib/typescript/src/dto/storeProducts/SKProductDiscount.d.ts +15 -0
- package/lib/typescript/src/dto/storeProducts/SKProductDiscount.d.ts.map +1 -0
- package/lib/typescript/src/dto/storeProducts/SKSubscriptionPeriod.d.ts +8 -0
- package/lib/typescript/src/dto/storeProducts/SKSubscriptionPeriod.d.ts.map +1 -0
- package/lib/typescript/src/dto/storeProducts/SkuDetails.d.ts +27 -0
- package/lib/typescript/src/dto/storeProducts/SkuDetails.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +41 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/internal/Mapper.d.ts +312 -0
- package/lib/typescript/src/internal/Mapper.d.ts.map +1 -0
- package/lib/typescript/src/internal/NoCodesInternal.d.ts +14 -0
- package/lib/typescript/src/internal/NoCodesInternal.d.ts.map +1 -0
- package/lib/typescript/src/internal/QonversionInternal.d.ts +60 -0
- package/lib/typescript/src/internal/QonversionInternal.d.ts.map +1 -0
- package/lib/typescript/src/internal/specs/NativeNoCodesModule.d.ts +17 -0
- package/lib/typescript/src/internal/specs/NativeNoCodesModule.d.ts.map +1 -0
- package/lib/typescript/src/internal/specs/NativeQonversionModule.d.ts +56 -0
- package/lib/typescript/src/internal/specs/NativeQonversionModule.d.ts.map +1 -0
- package/lib/typescript/src/internal/utils.d.ts +3 -0
- package/lib/typescript/src/internal/utils.d.ts.map +1 -0
- package/package.json +151 -0
- package/qonversion-react-native-sdk.podspec +21 -0
- package/src/NoCodes.ts +37 -0
- package/src/NoCodesApi.ts +22 -0
- package/src/NoCodesConfig.ts +16 -0
- package/src/NoCodesConfigBuilder.ts +40 -0
- package/src/Qonversion.ts +40 -0
- package/src/QonversionApi.ts +318 -0
- package/src/QonversionConfig.ts +32 -0
- package/src/QonversionConfigBuilder.ts +102 -0
- package/src/dto/Entitlement.ts +57 -0
- package/src/dto/EntitlementsUpdateListener.ts +11 -0
- package/src/dto/Experiment.ts +15 -0
- package/src/dto/ExperimentGroup.ts +15 -0
- package/src/dto/IntroEligibility.ts +11 -0
- package/src/dto/NoCodesAction.ts +21 -0
- package/src/dto/NoCodesError.ts +26 -0
- package/src/dto/NoCodesListener.ts +39 -0
- package/src/dto/Offering.ts +20 -0
- package/src/dto/Offerings.ts +17 -0
- package/src/dto/Product.ts +159 -0
- package/src/dto/PromoPurchasesListener.ts +13 -0
- package/src/dto/PromotionalOffer.ts +17 -0
- package/src/dto/PurchaseModel.ts +29 -0
- package/src/dto/PurchaseOptions.ts +33 -0
- package/src/dto/PurchaseOptionsBuilder.ts +127 -0
- package/src/dto/PurchaseUpdateModel.ts +43 -0
- package/src/dto/QonversionError.ts +24 -0
- package/src/dto/RemoteConfig.ts +16 -0
- package/src/dto/RemoteConfigList.ts +23 -0
- package/src/dto/RemoteConfigurationSource.ts +26 -0
- package/src/dto/ScreenPresentationConfig.ts +24 -0
- package/src/dto/SubscriptionPeriod.ts +33 -0
- package/src/dto/Transaction.ts +40 -0
- package/src/dto/User.ts +11 -0
- package/src/dto/UserProperties.ts +78 -0
- package/src/dto/UserProperty.ts +21 -0
- package/src/dto/enums.ts +389 -0
- package/src/dto/storeProducts/ProductInAppDetails.ts +17 -0
- package/src/dto/storeProducts/ProductInstallmentPlanDetails.ts +28 -0
- package/src/dto/storeProducts/ProductOfferDetails.ts +102 -0
- package/src/dto/storeProducts/ProductPrice.ts +46 -0
- package/src/dto/storeProducts/ProductPricingPhase.ts +71 -0
- package/src/dto/storeProducts/ProductStoreDetails.ts +151 -0
- package/src/dto/storeProducts/SKPaymentDiscount.ts +23 -0
- package/src/dto/storeProducts/SKProduct.ts +53 -0
- package/src/dto/storeProducts/SKProductDiscount.ts +38 -0
- package/src/dto/storeProducts/SKSubscriptionPeriod.ts +13 -0
- package/src/dto/storeProducts/SkuDetails.ts +68 -0
- package/src/index.ts +43 -0
- package/src/internal/Mapper.ts +1221 -0
- package/src/internal/NoCodesInternal.ts +84 -0
- package/src/internal/QonversionInternal.ts +370 -0
- package/src/internal/specs/NativeNoCodesModule.ts +20 -0
- package/src/internal/specs/NativeQonversionModule.ts +74 -0
- package/src/internal/utils.ts +9 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import type NoCodesApi from "../NoCodesApi";
|
|
2
|
+
import NoCodesConfig from "../NoCodesConfig";
|
|
3
|
+
import Mapper, { type QNoCodeAction, type QNoCodesError, type QNoCodeScreenInfo } from "./Mapper";
|
|
4
|
+
import type {NoCodesListener} from '../dto/NoCodesListener';
|
|
5
|
+
import ScreenPresentationConfig from '../dto/ScreenPresentationConfig';
|
|
6
|
+
import NoCodesError from '../dto/NoCodesError';
|
|
7
|
+
import {NoCodesErrorCode} from '../dto/enums';
|
|
8
|
+
import RNNoCodes, {type NoCodeEvent} from './specs/NativeNoCodesModule';
|
|
9
|
+
import {sdkSource, sdkVersion} from './QonversionInternal';
|
|
10
|
+
|
|
11
|
+
const EVENT_SCREEN_SHOWN = "nocodes_screen_shown";
|
|
12
|
+
const EVENT_FINISHED = "nocodes_finished";
|
|
13
|
+
const EVENT_ACTION_STARTED = "nocodes_action_started";
|
|
14
|
+
const EVENT_ACTION_FAILED = "nocodes_action_failed";
|
|
15
|
+
const EVENT_ACTION_FINISHED = "nocodes_action_finished";
|
|
16
|
+
const EVENT_SCREEN_FAILED_TO_LOAD = "nocodes_screen_failed_to_load";
|
|
17
|
+
|
|
18
|
+
export default class NoCodesInternal implements NoCodesApi {
|
|
19
|
+
private noCodesListener: NoCodesListener | null = null;
|
|
20
|
+
|
|
21
|
+
constructor(config: NoCodesConfig) {
|
|
22
|
+
RNNoCodes.initialize(config.projectKey, sdkSource, sdkVersion);
|
|
23
|
+
|
|
24
|
+
if (config.noCodesListener) {
|
|
25
|
+
this.setNoCodesListener(config.noCodesListener);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
async setScreenPresentationConfig(config: ScreenPresentationConfig, contextKey?: string) {
|
|
30
|
+
const data = Mapper.convertScreenPresentationConfig(config);
|
|
31
|
+
await RNNoCodes.setScreenPresentationConfig(data, contextKey);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
async showScreen(contextKey: string) {
|
|
35
|
+
await RNNoCodes.showScreen(contextKey);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
async close() {
|
|
39
|
+
await RNNoCodes.close();
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
private noCodeEventHandler = (event: NoCodeEvent) => {
|
|
43
|
+
switch (event.name) {
|
|
44
|
+
case EVENT_SCREEN_SHOWN:
|
|
45
|
+
const screenId = (event.payload as QNoCodeScreenInfo)["screenId"] ?? "";
|
|
46
|
+
this.noCodesListener?.onScreenShown(screenId);
|
|
47
|
+
break;
|
|
48
|
+
case EVENT_ACTION_STARTED:
|
|
49
|
+
const actionStarted = Mapper.convertAction(event.payload as QNoCodeAction);
|
|
50
|
+
this.noCodesListener?.onActionStartedExecuting(actionStarted);
|
|
51
|
+
break;
|
|
52
|
+
case EVENT_ACTION_FAILED:
|
|
53
|
+
const actionFailed = Mapper.convertAction(event.payload as QNoCodeAction);
|
|
54
|
+
this.noCodesListener?.onActionFailedToExecute(actionFailed);
|
|
55
|
+
break;
|
|
56
|
+
case EVENT_ACTION_FINISHED:
|
|
57
|
+
const actionFinished = Mapper.convertAction(event.payload as QNoCodeAction);
|
|
58
|
+
this.noCodesListener?.onActionFinishedExecuting(actionFinished);
|
|
59
|
+
break;
|
|
60
|
+
case EVENT_FINISHED:
|
|
61
|
+
this.noCodesListener?.onFinished();
|
|
62
|
+
break;
|
|
63
|
+
case EVENT_SCREEN_FAILED_TO_LOAD:
|
|
64
|
+
const error = Mapper.convertNoCodesError(event.payload as QNoCodesError | undefined);
|
|
65
|
+
const defaultError = new NoCodesError(
|
|
66
|
+
NoCodesErrorCode.UNKNOWN,
|
|
67
|
+
"Failed to load No-Code screen",
|
|
68
|
+
"Native error parsing failed."
|
|
69
|
+
);
|
|
70
|
+
this.noCodesListener?.onScreenFailedToLoad(error ?? defaultError);
|
|
71
|
+
break;
|
|
72
|
+
default:
|
|
73
|
+
console.warn(`No-Codes SDK: Unknown event: ${event.name}`);
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
setNoCodesListener(listener: NoCodesListener) {
|
|
79
|
+
if (this.noCodesListener == null) {
|
|
80
|
+
RNNoCodes.onNoCodeEvent(this.noCodeEventHandler);
|
|
81
|
+
}
|
|
82
|
+
this.noCodesListener = listener;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
import {AttributionProvider, QonversionErrorCode, UserPropertyKey} from "../dto/enums";
|
|
2
|
+
import IntroEligibility from "../dto/IntroEligibility";
|
|
3
|
+
import Mapper from "./Mapper";
|
|
4
|
+
import type {QEntitlement, QEligibilityInfo, QProduct} from "./Mapper";
|
|
5
|
+
import Offerings from "../dto/Offerings";
|
|
6
|
+
import Entitlement from "../dto/Entitlement";
|
|
7
|
+
import Product from "../dto/Product";
|
|
8
|
+
import {isAndroid, isIos} from "./utils";
|
|
9
|
+
import type {EntitlementsUpdateListener} from '../dto/EntitlementsUpdateListener';
|
|
10
|
+
import type {PromoPurchasesListener} from '../dto/PromoPurchasesListener';
|
|
11
|
+
import User from '../dto/User';
|
|
12
|
+
import PurchaseOptions from '../dto/PurchaseOptions';
|
|
13
|
+
import SKProductDiscount from '../dto/storeProducts/SKProductDiscount';
|
|
14
|
+
import type { QonversionApi } from '../QonversionApi';
|
|
15
|
+
import QonversionConfig from '../QonversionConfig';
|
|
16
|
+
import RemoteConfig from "../dto/RemoteConfig";
|
|
17
|
+
import UserProperties from '../dto/UserProperties';
|
|
18
|
+
import PurchaseModel from '../dto/PurchaseModel';
|
|
19
|
+
import PurchaseUpdateModel from '../dto/PurchaseUpdateModel';
|
|
20
|
+
import {RemoteConfigList} from '../index';
|
|
21
|
+
import PurchaseOptionsBuilder from "../dto/PurchaseOptionsBuilder";
|
|
22
|
+
import PromotionalOffer from '../dto/PromotionalOffer';
|
|
23
|
+
import RNQonversion from './specs/NativeQonversionModule';
|
|
24
|
+
import type { QPromoOfferDetails } from './specs/NativeQonversionModule';
|
|
25
|
+
|
|
26
|
+
export const sdkVersion = "10.0.0-RC1";
|
|
27
|
+
export const sdkSource = "rn";
|
|
28
|
+
|
|
29
|
+
export default class QonversionInternal implements QonversionApi {
|
|
30
|
+
|
|
31
|
+
private entitlementsUpdateListener: EntitlementsUpdateListener | null = null;
|
|
32
|
+
private promoPurchasesDelegate: PromoPurchasesListener | null = null;
|
|
33
|
+
|
|
34
|
+
constructor(qonversionConfig: QonversionConfig) {
|
|
35
|
+
RNQonversion.storeSDKInfo(sdkSource, sdkVersion);
|
|
36
|
+
RNQonversion.initializeSdk(
|
|
37
|
+
qonversionConfig.projectKey,
|
|
38
|
+
qonversionConfig.launchMode,
|
|
39
|
+
qonversionConfig.environment,
|
|
40
|
+
qonversionConfig.entitlementsCacheLifetime,
|
|
41
|
+
qonversionConfig.proxyUrl,
|
|
42
|
+
qonversionConfig.kidsMode
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
if (qonversionConfig.entitlementsUpdateListener) {
|
|
46
|
+
this.setEntitlementsUpdateListener(qonversionConfig.entitlementsUpdateListener);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
syncHistoricalData () {
|
|
51
|
+
RNQonversion.syncHistoricalData();
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
syncStoreKit2Purchases() {
|
|
55
|
+
if (isIos()) {
|
|
56
|
+
RNQonversion.syncStoreKit2Purchases();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
async isFallbackFileAccessible(): Promise<boolean> {
|
|
61
|
+
const isAccessibleResult = await RNQonversion.isFallbackFileAccessible();
|
|
62
|
+
|
|
63
|
+
return isAccessibleResult.success;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
async getPromotionalOffer(product: Product, discount: SKProductDiscount): Promise<PromotionalOffer | null> {
|
|
67
|
+
if (isAndroid()) {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
const promoOffer = await RNQonversion.getPromotionalOffer(product.qonversionId, discount.identifier);
|
|
71
|
+
const mappedPromoOffer: PromotionalOffer | null = Mapper.convertPromoOffer(promoOffer);
|
|
72
|
+
|
|
73
|
+
return mappedPromoOffer;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
async purchaseProduct(product: Product, options: PurchaseOptions | undefined): Promise<Map<string, Entitlement>> {
|
|
77
|
+
try {
|
|
78
|
+
if (!options) {
|
|
79
|
+
options = new PurchaseOptionsBuilder().build();
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
let purchasePromise: Promise<Object | null | undefined>;
|
|
83
|
+
const promoOffer: QPromoOfferDetails = {
|
|
84
|
+
productDiscountId: options.promotionalOffer?.productDiscount.identifier,
|
|
85
|
+
keyIdentifier: options.promotionalOffer?.paymentDiscount.keyIdentifier,
|
|
86
|
+
nonce: options.promotionalOffer?.paymentDiscount.nonce,
|
|
87
|
+
signature: options.promotionalOffer?.paymentDiscount.signature,
|
|
88
|
+
timestamp: options.promotionalOffer?.paymentDiscount.timestamp
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
if (isIos()) {
|
|
92
|
+
purchasePromise = RNQonversion.purchase(
|
|
93
|
+
product.qonversionId,
|
|
94
|
+
options.quantity,
|
|
95
|
+
options.contextKeys,
|
|
96
|
+
promoOffer,
|
|
97
|
+
undefined,
|
|
98
|
+
false,
|
|
99
|
+
undefined,
|
|
100
|
+
undefined,
|
|
101
|
+
);
|
|
102
|
+
} else {
|
|
103
|
+
purchasePromise = RNQonversion.purchase(
|
|
104
|
+
product.qonversionId,
|
|
105
|
+
1,
|
|
106
|
+
options.contextKeys,
|
|
107
|
+
undefined,
|
|
108
|
+
options.offerId,
|
|
109
|
+
options.applyOffer,
|
|
110
|
+
options.oldProduct?.qonversionId,
|
|
111
|
+
options.updatePolicy,
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
const entitlements = await purchasePromise;
|
|
115
|
+
|
|
116
|
+
// noinspection UnnecessaryLocalVariableJS
|
|
117
|
+
const mappedPermissions = Mapper.convertEntitlements(entitlements as Record<string, QEntitlement>);
|
|
118
|
+
|
|
119
|
+
return mappedPermissions;
|
|
120
|
+
} catch (e: any) {
|
|
121
|
+
e.userCanceled = e.code === QonversionErrorCode.PURCHASE_CANCELED;
|
|
122
|
+
throw e;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
async purchase(purchaseModel: PurchaseModel): Promise<Map<string, Entitlement>> {
|
|
127
|
+
try {
|
|
128
|
+
let purchasePromise: Promise<Object | null | undefined>;
|
|
129
|
+
if (isIos()) {
|
|
130
|
+
purchasePromise = RNQonversion.purchase(
|
|
131
|
+
purchaseModel.productId,
|
|
132
|
+
1,
|
|
133
|
+
undefined,
|
|
134
|
+
undefined,
|
|
135
|
+
undefined,
|
|
136
|
+
false,
|
|
137
|
+
undefined,
|
|
138
|
+
undefined,
|
|
139
|
+
);
|
|
140
|
+
} else {
|
|
141
|
+
purchasePromise = RNQonversion.purchase(
|
|
142
|
+
purchaseModel.productId,
|
|
143
|
+
1,
|
|
144
|
+
undefined,
|
|
145
|
+
undefined,
|
|
146
|
+
purchaseModel.offerId,
|
|
147
|
+
purchaseModel.applyOffer,
|
|
148
|
+
undefined,
|
|
149
|
+
undefined
|
|
150
|
+
);
|
|
151
|
+
}
|
|
152
|
+
const entitlements = await purchasePromise;
|
|
153
|
+
|
|
154
|
+
// noinspection UnnecessaryLocalVariableJS
|
|
155
|
+
const mappedPermissions = Mapper.convertEntitlements(entitlements as Record<string, QEntitlement>);
|
|
156
|
+
|
|
157
|
+
return mappedPermissions;
|
|
158
|
+
} catch (e: any) {
|
|
159
|
+
e.userCanceled = e.code === QonversionErrorCode.PURCHASE_CANCELED;
|
|
160
|
+
throw e;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
async updatePurchase(purchaseUpdateModel: PurchaseUpdateModel): Promise<Map<string, Entitlement> | null> {
|
|
165
|
+
if (!isAndroid()) {
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
try {
|
|
170
|
+
const entitlements = await RNQonversion.updatePurchase(
|
|
171
|
+
purchaseUpdateModel.productId,
|
|
172
|
+
purchaseUpdateModel.offerId,
|
|
173
|
+
purchaseUpdateModel.applyOffer,
|
|
174
|
+
purchaseUpdateModel.oldProductId,
|
|
175
|
+
purchaseUpdateModel.updatePolicy,
|
|
176
|
+
);
|
|
177
|
+
|
|
178
|
+
// noinspection UnnecessaryLocalVariableJS
|
|
179
|
+
const mappedPermissions: Map<string, Entitlement> = Mapper.convertEntitlements(entitlements as Record<string, QEntitlement>);
|
|
180
|
+
|
|
181
|
+
return mappedPermissions;
|
|
182
|
+
} catch (e: any) {
|
|
183
|
+
e.userCanceled = e.code === QonversionErrorCode.PURCHASE_CANCELED;
|
|
184
|
+
throw e;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
async products(): Promise<Map<string, Product>> {
|
|
189
|
+
let products = await RNQonversion.products();
|
|
190
|
+
const mappedProducts: Map<string, Product> = Mapper.convertProducts(products as Record<string, QProduct>);
|
|
191
|
+
|
|
192
|
+
return mappedProducts;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
async offerings(): Promise<Offerings | null> {
|
|
196
|
+
let offerings = await RNQonversion.offerings();
|
|
197
|
+
const mappedOfferings = Mapper.convertOfferings(offerings);
|
|
198
|
+
|
|
199
|
+
return mappedOfferings;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
async checkTrialIntroEligibility(
|
|
203
|
+
ids: string[]
|
|
204
|
+
): Promise<Map<string, IntroEligibility>> {
|
|
205
|
+
const eligibilityInfo = await RNQonversion.checkTrialIntroEligibilityForProductIds(ids);
|
|
206
|
+
|
|
207
|
+
const mappedEligibility: Map<string, IntroEligibility> = Mapper.convertEligibility(eligibilityInfo as Record<string, QEligibilityInfo>);
|
|
208
|
+
|
|
209
|
+
return mappedEligibility;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
async checkEntitlements(): Promise<Map<string, Entitlement>> {
|
|
213
|
+
const entitlements = await RNQonversion.checkEntitlements();
|
|
214
|
+
const mappedPermissions: Map<string, Entitlement> = Mapper.convertEntitlements(entitlements as Record<string, QEntitlement>);
|
|
215
|
+
|
|
216
|
+
return mappedPermissions;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
async restore(): Promise<Map<string, Entitlement>> {
|
|
220
|
+
const entitlements = await RNQonversion.restore();
|
|
221
|
+
|
|
222
|
+
const mappedPermissions: Map<string, Entitlement> = Mapper.convertEntitlements(entitlements as Record<string, QEntitlement>);
|
|
223
|
+
|
|
224
|
+
return mappedPermissions;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
syncPurchases() {
|
|
228
|
+
if (!isAndroid()) {
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
RNQonversion.syncPurchases();
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
async identify(userId: string): Promise<User> {
|
|
236
|
+
const userInfo = await RNQonversion.identify(userId);
|
|
237
|
+
const mappedUserInfo: User = Mapper.convertUserInfo(userInfo);
|
|
238
|
+
|
|
239
|
+
return mappedUserInfo;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
logout() {
|
|
243
|
+
RNQonversion.logout();
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
async userInfo(): Promise<User> {
|
|
247
|
+
const info = await RNQonversion.userInfo();
|
|
248
|
+
const mappedUserInfo: User = Mapper.convertUserInfo(info);
|
|
249
|
+
|
|
250
|
+
return mappedUserInfo;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
attribution(data: Object, provider: AttributionProvider) {
|
|
254
|
+
RNQonversion.addAttributionData(data, provider);
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
setUserProperty(property: UserPropertyKey, value: string) {
|
|
258
|
+
if (property === UserPropertyKey.CUSTOM) {
|
|
259
|
+
console.warn("Can not set user property with the key `UserPropertyKey.CUSTOM`. " +
|
|
260
|
+
"To set custom user property, use the `setCustomUserProperty` method.");
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
RNQonversion.setDefinedProperty(property, value);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
setCustomUserProperty(property: string, value: string) {
|
|
268
|
+
RNQonversion.setCustomProperty(property, value);
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
async userProperties(): Promise<UserProperties> {
|
|
272
|
+
const properties = await RNQonversion.userProperties();
|
|
273
|
+
const mappedUserProperties: UserProperties = Mapper.convertUserProperties(properties);
|
|
274
|
+
|
|
275
|
+
return mappedUserProperties;
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
collectAdvertisingId() {
|
|
279
|
+
if (isIos()) {
|
|
280
|
+
RNQonversion.collectAdvertisingId();
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
collectAppleSearchAdsAttribution() {
|
|
285
|
+
if (isIos()) {
|
|
286
|
+
RNQonversion.collectAppleSearchAdsAttribution();
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
presentCodeRedemptionSheet() {
|
|
291
|
+
if (isIos()) {
|
|
292
|
+
RNQonversion.presentCodeRedemptionSheet();
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
async remoteConfig(contextKey: string | undefined): Promise<RemoteConfig> {
|
|
297
|
+
const remoteConfig = await RNQonversion.remoteConfig(contextKey);
|
|
298
|
+
const mappedRemoteConfig: RemoteConfig = Mapper.convertRemoteConfig(remoteConfig);
|
|
299
|
+
|
|
300
|
+
return mappedRemoteConfig;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
async remoteConfigList(): Promise<RemoteConfigList> {
|
|
304
|
+
const remoteConfigList = await RNQonversion.remoteConfigList();
|
|
305
|
+
const mappedRemoteConfigList: RemoteConfigList = Mapper.convertRemoteConfigList(remoteConfigList);
|
|
306
|
+
|
|
307
|
+
return mappedRemoteConfigList;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
async remoteConfigListForContextKeys(contextKeys: string[], includeEmptyContextKey: boolean): Promise<RemoteConfigList> {
|
|
311
|
+
const remoteConfigList = await RNQonversion.remoteConfigListForContextKeys(contextKeys, includeEmptyContextKey);
|
|
312
|
+
const mappedRemoteConfigList: RemoteConfigList = Mapper.convertRemoteConfigList(remoteConfigList);
|
|
313
|
+
|
|
314
|
+
return mappedRemoteConfigList;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
async attachUserToExperiment(experimentId: string, groupId: string): Promise<void> {
|
|
318
|
+
await RNQonversion.attachUserToExperiment(experimentId, groupId);
|
|
319
|
+
return;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
async detachUserFromExperiment(experimentId: string): Promise<void> {
|
|
323
|
+
await RNQonversion.detachUserFromExperiment(experimentId);
|
|
324
|
+
return;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
async attachUserToRemoteConfiguration(remoteConfigurationId: string): Promise<void> {
|
|
328
|
+
await RNQonversion.attachUserToRemoteConfiguration(remoteConfigurationId);
|
|
329
|
+
return;
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
async detachUserFromRemoteConfiguration(remoteConfigurationId: string): Promise<void> {
|
|
333
|
+
await RNQonversion.detachUserFromRemoteConfiguration(remoteConfigurationId);
|
|
334
|
+
return;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
private entitlementsUpdatedEventHandler = (payload: Object) => {
|
|
338
|
+
const entitlements = Mapper.convertEntitlements(payload as Record<string, QEntitlement>);
|
|
339
|
+
this.entitlementsUpdateListener?.onEntitlementsUpdated(entitlements);
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
private promoPurchaseReceivedEventHandler = (productId: string) => {
|
|
343
|
+
const promoPurchaseExecutor = async () => {
|
|
344
|
+
const entitlements = await RNQonversion.promoPurchase(productId);
|
|
345
|
+
const mappedPermissions: Map<string, Entitlement> = Mapper.convertEntitlements(entitlements as Record<string, QEntitlement>);
|
|
346
|
+
return mappedPermissions;
|
|
347
|
+
};
|
|
348
|
+
this.promoPurchasesDelegate?.onPromoPurchaseReceived(productId, promoPurchaseExecutor);
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
setEntitlementsUpdateListener(listener: EntitlementsUpdateListener) {
|
|
352
|
+
if (this.entitlementsUpdateListener == null) {
|
|
353
|
+
RNQonversion.onEntitlementsUpdated(this.entitlementsUpdatedEventHandler);
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
this.entitlementsUpdateListener = listener;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
setPromoPurchasesDelegate(delegate: PromoPurchasesListener) {
|
|
360
|
+
if (!isIos()) {
|
|
361
|
+
return;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
if (this.promoPurchasesDelegate == null) {
|
|
365
|
+
RNQonversion.onPromoPurchaseReceived(this.promoPurchaseReceivedEventHandler);
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
this.promoPurchasesDelegate = delegate;
|
|
369
|
+
}
|
|
370
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { TurboModule } from 'react-native';
|
|
2
|
+
import { TurboModuleRegistry } from 'react-native';
|
|
3
|
+
import type { EventEmitter } from 'react-native/Libraries/Types/CodegenTypes';
|
|
4
|
+
import type { QNoCodeAction, QNoCodesError, QNoCodeScreenInfo } from '../Mapper';
|
|
5
|
+
|
|
6
|
+
export type NoCodeEvent = {
|
|
7
|
+
name: string;
|
|
8
|
+
payload: QNoCodeAction | QNoCodesError | QNoCodeScreenInfo | undefined;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export interface Spec extends TurboModule {
|
|
12
|
+
initialize(projectKey: string, source: string, version: string): void;
|
|
13
|
+
setScreenPresentationConfig(configData: Object, contextKey?: string): Promise<boolean>;
|
|
14
|
+
showScreen(contextKey: string): Promise<boolean>;
|
|
15
|
+
close(): Promise<boolean>;
|
|
16
|
+
|
|
17
|
+
readonly onNoCodeEvent: EventEmitter<NoCodeEvent>;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export default TurboModuleRegistry.getEnforcing<Spec>('RNNoCodes');
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type {TurboModule} from 'react-native';
|
|
2
|
+
import {TurboModuleRegistry} from 'react-native';
|
|
3
|
+
import type { QPromotionalOffer, QOfferings, QUser, QUserProperties, QRemoteConfig, QRemoteConfigList } from '../Mapper';
|
|
4
|
+
import type { EventEmitter } from 'react-native/Libraries/Types/CodegenTypes';
|
|
5
|
+
|
|
6
|
+
export type QPromoOfferDetails = {
|
|
7
|
+
productDiscountId: string | undefined,
|
|
8
|
+
keyIdentifier: string | undefined,
|
|
9
|
+
nonce: string | undefined,
|
|
10
|
+
signature: string | undefined,
|
|
11
|
+
timestamp: number | undefined,
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface Spec extends TurboModule {
|
|
15
|
+
storeSDKInfo(sdkName: string, sdkVersion: string): void;
|
|
16
|
+
initializeSdk(
|
|
17
|
+
projectKey: string,
|
|
18
|
+
launchMode: string,
|
|
19
|
+
environment: string,
|
|
20
|
+
entitlementsCacheLifetime: string,
|
|
21
|
+
proxyUrl: string | undefined,
|
|
22
|
+
kidsMode: boolean
|
|
23
|
+
): void;
|
|
24
|
+
syncHistoricalData(): void;
|
|
25
|
+
syncStoreKit2Purchases(): void;
|
|
26
|
+
isFallbackFileAccessible(): Promise<{success: boolean}>;
|
|
27
|
+
getPromotionalOffer(product: string, discount: string | undefined): Promise<QPromotionalOffer | null>;
|
|
28
|
+
purchase(
|
|
29
|
+
productId: string,
|
|
30
|
+
quantity: number, // iOS only
|
|
31
|
+
contextKeys: string[] | null | undefined,
|
|
32
|
+
promoOffer: QPromoOfferDetails | undefined, // iOS only
|
|
33
|
+
offerId: string | null | undefined, // Android only
|
|
34
|
+
applyOffer: boolean, // Android only
|
|
35
|
+
oldProductId: string | null | undefined, // Android only
|
|
36
|
+
updatePolicyKey: string | null | undefined, // Android only
|
|
37
|
+
): Promise<Object | null | undefined>; // Record<string, QEntitlement
|
|
38
|
+
updatePurchase(
|
|
39
|
+
productId: string,
|
|
40
|
+
offerId: string | null | undefined,
|
|
41
|
+
applyOffer: boolean,
|
|
42
|
+
oldProductId: string | null | undefined,
|
|
43
|
+
updatePolicyKey: string | null | undefined,
|
|
44
|
+
): Promise<Object>; // Android only // Record<string, QEntitlement>
|
|
45
|
+
promoPurchase(productId: string): Promise<Object>; // iOS only / Record<string, QEntitlement
|
|
46
|
+
products(): Promise<Object>; // Record<string, QProduct
|
|
47
|
+
offerings(): Promise<QOfferings | null>;
|
|
48
|
+
checkTrialIntroEligibilityForProductIds(ids: string[]): Promise<Object>; // Record<string, QEligibilityInfo>
|
|
49
|
+
checkEntitlements(): Promise<Object>; // Record<string, QEntitlement>
|
|
50
|
+
restore(): Promise<Object>; // Record<string, QEntitlement>
|
|
51
|
+
syncPurchases(): void;
|
|
52
|
+
identify(userId: string): Promise<QUser>;
|
|
53
|
+
logout(): void;
|
|
54
|
+
userInfo(): Promise<QUser>;
|
|
55
|
+
addAttributionData(data: Object, provider: string): void;
|
|
56
|
+
setDefinedProperty(property: string, value: string): void;
|
|
57
|
+
setCustomProperty(property: string, value: string): void;
|
|
58
|
+
userProperties(): Promise<QUserProperties>;
|
|
59
|
+
collectAdvertisingId(): void; // iOS only
|
|
60
|
+
collectAppleSearchAdsAttribution(): void; // iOS only
|
|
61
|
+
presentCodeRedemptionSheet(): void; // iOS only
|
|
62
|
+
remoteConfig(contextKey: string | undefined): Promise<QRemoteConfig>;
|
|
63
|
+
remoteConfigList(): Promise<QRemoteConfigList>;
|
|
64
|
+
remoteConfigListForContextKeys(contextKeys: string[], includeEmptyContextKey: boolean): Promise<QRemoteConfigList>;
|
|
65
|
+
attachUserToExperiment(experimentId: string, groupId: string): Promise<void>;
|
|
66
|
+
detachUserFromExperiment(experimentId: string): Promise<void>;
|
|
67
|
+
attachUserToRemoteConfiguration(remoteConfigurationId: string): Promise<void>;
|
|
68
|
+
detachUserFromRemoteConfiguration(remoteConfigurationId: string): Promise<void>;
|
|
69
|
+
|
|
70
|
+
readonly onEntitlementsUpdated: EventEmitter<Object>; // Record<string, QEntitlement>
|
|
71
|
+
readonly onPromoPurchaseReceived: EventEmitter<string>;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export default TurboModuleRegistry.getEnforcing<Spec>('RNQonversion');
|