UNPKG

react-native-qonversion

Version:

Qonversion provides full in-app purchases infrastructure, so you do not need to build your own server for receipt validation. Implement in-app subscriptions, validate user receipts, check subscription status, and provide access to your app features and co

240 lines 10.5 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const react_native_1 = require("react-native"); const enums_1 = require("../dto/enums"); const Mapper_1 = __importDefault(require("./Mapper")); const utils_1 = require("./utils"); const PurchaseOptionsBuilder_1 = __importDefault(require("../dto/PurchaseOptionsBuilder")); const { RNQonversion } = react_native_1.NativeModules; const sdkVersion = "9.0.2"; const EVENT_ENTITLEMENTS_UPDATED = "entitlements_updated"; const EVENT_PROMO_PURCHASE_RECEIVED = "promo_purchase_received"; class QonversionInternal { constructor(qonversionConfig) { RNQonversion.storeSDKInfo("rn", sdkVersion); RNQonversion.initializeSdk(qonversionConfig.projectKey, qonversionConfig.launchMode, qonversionConfig.environment, qonversionConfig.entitlementsCacheLifetime, qonversionConfig.proxyUrl, qonversionConfig.kidsMode); if (qonversionConfig.entitlementsUpdateListener) { this.setEntitlementsUpdateListener(qonversionConfig.entitlementsUpdateListener); } } syncHistoricalData() { RNQonversion.syncHistoricalData(); } syncStoreKit2Purchases() { if ((0, utils_1.isIos)()) { RNQonversion.syncStoreKit2Purchases(); } } async isFallbackFileAccessible() { const isAccessibleResult = await RNQonversion.isFallbackFileAccessible(); return isAccessibleResult.success; } async getPromotionalOffer(product, discount) { if ((0, utils_1.isAndroid)()) { return null; } const promoOffer = await RNQonversion.getPromotionalOffer(product.qonversionID, discount.identifier); const mappedPromoOffer = Mapper_1.default.convertPromoOffer(promoOffer); return mappedPromoOffer; } async purchaseProduct(product, options) { try { if (!options) { options = new PurchaseOptionsBuilder_1.default().build(); } let purchasePromise; const promoOffer = { productDiscountId: options.promotionalOffer?.productDiscount.identifier, keyIdentifier: options.promotionalOffer?.paymentDiscount.keyIdentifier, nonce: options.promotionalOffer?.paymentDiscount.nonce, signature: options.promotionalOffer?.paymentDiscount.signature, timestamp: options.promotionalOffer?.paymentDiscount.timestamp }; if ((0, utils_1.isIos)()) { purchasePromise = RNQonversion.purchase(product.qonversionID, options.quantity, options.contextKeys, promoOffer); } else { purchasePromise = RNQonversion.purchase(product.qonversionID, options.offerId, options.applyOffer, options.oldProduct?.qonversionID, options.updatePolicy, options.contextKeys); } const entitlements = await purchasePromise; // noinspection UnnecessaryLocalVariableJS const mappedPermissions = Mapper_1.default.convertEntitlements(entitlements); return mappedPermissions; } catch (e) { e.userCanceled = e.code === enums_1.QonversionErrorCode.PURCHASE_CANCELED; throw e; } } async purchase(purchaseModel) { try { let purchasePromise; if ((0, utils_1.isIos)()) { purchasePromise = RNQonversion.purchase(purchaseModel.productId, 1, null, null); } else { purchasePromise = RNQonversion.purchase(purchaseModel.productId, purchaseModel.offerId, purchaseModel.applyOffer, null, null, null); } const entitlements = await purchasePromise; // noinspection UnnecessaryLocalVariableJS const mappedPermissions = Mapper_1.default.convertEntitlements(entitlements); return mappedPermissions; } catch (e) { e.userCanceled = e.code === enums_1.QonversionErrorCode.PURCHASE_CANCELED; throw e; } } async updatePurchase(purchaseUpdateModel) { if (!(0, utils_1.isAndroid)()) { return null; } try { const entitlements = await RNQonversion.updatePurchase(purchaseUpdateModel.productId, purchaseUpdateModel.offerId, purchaseUpdateModel.applyOffer, purchaseUpdateModel.oldProductId, purchaseUpdateModel.updatePolicy, null); // noinspection UnnecessaryLocalVariableJS const mappedPermissions = Mapper_1.default.convertEntitlements(entitlements); return mappedPermissions; } catch (e) { e.userCanceled = e.code === enums_1.QonversionErrorCode.PURCHASE_CANCELED; throw e; } } async products() { let products = await RNQonversion.products(); const mappedProducts = Mapper_1.default.convertProducts(products); return mappedProducts; } async offerings() { let offerings = await RNQonversion.offerings(); const mappedOfferings = Mapper_1.default.convertOfferings(offerings); return mappedOfferings; } async checkTrialIntroEligibility(ids) { const eligibilityInfo = await RNQonversion.checkTrialIntroEligibilityForProductIds(ids); const mappedEligibility = Mapper_1.default.convertEligibility(eligibilityInfo); return mappedEligibility; } async checkEntitlements() { const entitlements = await RNQonversion.checkEntitlements(); const mappedPermissions = Mapper_1.default.convertEntitlements(entitlements); return mappedPermissions; } async restore() { const entitlements = await RNQonversion.restore(); const mappedPermissions = Mapper_1.default.convertEntitlements(entitlements); return mappedPermissions; } syncPurchases() { if (!(0, utils_1.isAndroid)()) { return; } RNQonversion.syncPurchases(); } async identify(userID) { const userInfo = await RNQonversion.identify(userID); const mappedUserInfo = Mapper_1.default.convertUserInfo(userInfo); return mappedUserInfo; } logout() { RNQonversion.logout(); } async userInfo() { const info = await RNQonversion.userInfo(); const mappedUserInfo = Mapper_1.default.convertUserInfo(info); return mappedUserInfo; } attribution(data, provider) { RNQonversion.addAttributionData(data, provider); } setUserProperty(property, value) { if (property === enums_1.UserPropertyKey.CUSTOM) { console.warn("Can not set user property with the key `UserPropertyKey.CUSTOM`. " + "To set custom user property, use the `setCustomUserProperty` method."); return; } RNQonversion.setDefinedProperty(property, value); } setCustomUserProperty(property, value) { RNQonversion.setCustomProperty(property, value); } async userProperties() { const properties = await RNQonversion.userProperties(); const mappedUserProperties = Mapper_1.default.convertUserProperties(properties); return mappedUserProperties; } collectAdvertisingId() { if ((0, utils_1.isIos)()) { RNQonversion.collectAdvertisingID(); } } collectAppleSearchAdsAttribution() { if ((0, utils_1.isIos)()) { RNQonversion.collectAppleSearchAdsAttribution(); } } setEntitlementsUpdateListener(listener) { const eventEmitter = new react_native_1.NativeEventEmitter(RNQonversion); eventEmitter.removeAllListeners(EVENT_ENTITLEMENTS_UPDATED); eventEmitter.addListener(EVENT_ENTITLEMENTS_UPDATED, payload => { const entitlements = Mapper_1.default.convertEntitlements(payload); listener.onEntitlementsUpdated(entitlements); }); } setPromoPurchasesDelegate(delegate) { if (!(0, utils_1.isIos)()) { return; } const eventEmitter = new react_native_1.NativeEventEmitter(RNQonversion); eventEmitter.removeAllListeners(EVENT_PROMO_PURCHASE_RECEIVED); eventEmitter.addListener(EVENT_PROMO_PURCHASE_RECEIVED, productId => { const promoPurchaseExecutor = async () => { const entitlements = await RNQonversion.promoPurchase(productId); const mappedPermissions = Mapper_1.default.convertEntitlements(entitlements); return mappedPermissions; }; delegate.onPromoPurchaseReceived(productId, promoPurchaseExecutor); }); } presentCodeRedemptionSheet() { if ((0, utils_1.isIos)()) { RNQonversion.presentCodeRedemptionSheet(); } } async remoteConfig(contextKey) { const remoteConfig = await RNQonversion.remoteConfig(contextKey); const mappedRemoteConfig = Mapper_1.default.convertRemoteConfig(remoteConfig); return mappedRemoteConfig; } async remoteConfigList() { const remoteConfigList = await RNQonversion.remoteConfigList(); const mappedRemoteConfigList = Mapper_1.default.convertRemoteConfigList(remoteConfigList); return mappedRemoteConfigList; } async remoteConfigListForContextKeys(contextKeys, includeEmptyContextKey) { const remoteConfigList = await RNQonversion.remoteConfigListForContextKeys(contextKeys, includeEmptyContextKey); const mappedRemoteConfigList = Mapper_1.default.convertRemoteConfigList(remoteConfigList); return mappedRemoteConfigList; } async attachUserToExperiment(experimentId, groupId) { await RNQonversion.attachUserToExperiment(experimentId, groupId); return; } async detachUserFromExperiment(experimentId) { await RNQonversion.detachUserFromExperiment(experimentId); return; } async attachUserToRemoteConfiguration(remoteConfigurationId) { await RNQonversion.attachUserToRemoteConfiguration(remoteConfigurationId); return; } async detachUserFromRemoteConfiguration(remoteConfigurationId) { await RNQonversion.detachUserFromRemoteConfiguration(remoteConfigurationId); return; } } exports.default = QonversionInternal; //# sourceMappingURL=QonversionInternal.js.map