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
JavaScript
;
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