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
626 lines • 37.1 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const enums_1 = require("../dto/enums");
const IntroEligibility_1 = __importDefault(require("../dto/IntroEligibility"));
const Offering_1 = __importDefault(require("../dto/Offering"));
const Offerings_1 = __importDefault(require("../dto/Offerings"));
const Entitlement_1 = __importDefault(require("../dto/Entitlement"));
const Product_1 = __importDefault(require("../dto/Product"));
const SKProduct_1 = __importDefault(require("../dto/storeProducts/SKProduct"));
const SKProductDiscount_1 = __importDefault(require("../dto/storeProducts/SKProductDiscount"));
const SKSubscriptionPeriod_1 = __importDefault(require("../dto/storeProducts/SKSubscriptionPeriod"));
const SkuDetails_1 = __importDefault(require("../dto/storeProducts/SkuDetails"));
const User_1 = __importDefault(require("../dto/User"));
const Experiment_1 = __importDefault(require("../dto/Experiment"));
const ExperimentGroup_1 = __importDefault(require("../dto/ExperimentGroup"));
const SubscriptionPeriod_1 = __importDefault(require("../dto/SubscriptionPeriod"));
const RemoteConfig_1 = __importDefault(require("../dto/RemoteConfig"));
const RemoteConfigList_1 = __importDefault(require("../dto/RemoteConfigList"));
const UserProperties_1 = __importDefault(require("../dto/UserProperties"));
const UserProperty_1 = __importDefault(require("../dto/UserProperty"));
const RemoteConfigurationSource_1 = __importDefault(require("../dto/RemoteConfigurationSource"));
const Transaction_1 = __importDefault(require("../dto/Transaction"));
const ProductStoreDetails_1 = __importDefault(require("../dto/storeProducts/ProductStoreDetails"));
const ProductOfferDetails_1 = __importDefault(require("../dto/storeProducts/ProductOfferDetails"));
const ProductInAppDetails_1 = __importDefault(require("../dto/storeProducts/ProductInAppDetails"));
const ProductPrice_1 = __importDefault(require("../dto/storeProducts/ProductPrice"));
const ProductPricingPhase_1 = __importDefault(require("../dto/storeProducts/ProductPricingPhase"));
const ProductInstallmentPlanDetails_1 = __importDefault(require("../dto/storeProducts/ProductInstallmentPlanDetails"));
const PromotionalOffer_1 = __importDefault(require("../dto/PromotionalOffer"));
const SKPaymentDiscount_1 = __importDefault(require("../dto/storeProducts/SKPaymentDiscount"));
const NoCodesAction_1 = __importDefault(require("../dto/NoCodesAction"));
const QonversionError_1 = __importDefault(require("../dto/QonversionError"));
const NoCodesError_1 = __importDefault(require("../dto/NoCodesError"));
const priceMicrosRatio = 1000000;
class Mapper {
static convertPromoOffer(promoOffer) {
if (!promoOffer) {
return null;
}
const productDiscount = this.convertProductDiscount(promoOffer.productDiscount);
const paymentDiscount = this.convertPaymentDiscount(promoOffer.paymentDiscount);
return new PromotionalOffer_1.default(productDiscount, paymentDiscount);
}
static convertEntitlements(entitlements) {
let mappedPermissions = new Map();
if (!entitlements) {
return mappedPermissions;
}
for (const [key, entitlement] of Object.entries(entitlements)) {
let renewState;
switch (entitlement.renewState) {
case enums_1.EntitlementRenewState.NON_RENEWABLE:
renewState = enums_1.EntitlementRenewState.NON_RENEWABLE;
break;
case enums_1.EntitlementRenewState.WILL_RENEW:
renewState = enums_1.EntitlementRenewState.WILL_RENEW;
break;
case enums_1.EntitlementRenewState.CANCELED:
renewState = enums_1.EntitlementRenewState.CANCELED;
break;
case enums_1.EntitlementRenewState.BILLING_ISSUE:
renewState = enums_1.EntitlementRenewState.BILLING_ISSUE;
break;
default:
renewState = enums_1.EntitlementRenewState.UNKNOWN;
break;
}
const entitlementSource = this.convertEntitlementSource(entitlement.source);
const entitlementGrantType = this.convertEntitlementGrantType(entitlement.grantType);
const transactions = [];
if (Array.isArray(entitlement.transactions)) {
entitlement.transactions.forEach((transaction) => {
const mappedTransaction = this.convertTransaction(transaction);
transactions.push(mappedTransaction);
});
}
const mappedPermission = new Entitlement_1.default(entitlement.id, entitlement.productId, entitlement.active, renewState, entitlementSource, entitlement.startedTimestamp, entitlement.renewsCount, entitlementGrantType, transactions, entitlement.expirationTimestamp, entitlement.trialStartTimestamp, entitlement.firstPurchaseTimestamp, entitlement.lastPurchaseTimestamp, entitlement.autoRenewDisableTimestamp, entitlement.lastActivatedOfferCode);
mappedPermissions.set(key, mappedPermission);
}
return mappedPermissions;
}
static convertTransaction(transaction) {
const environment = this.convertTransactionEnvironment(transaction.environment);
const ownershipType = this.convertTransactionOwnershipType(transaction.ownershipType);
const type = this.convertTransactionType(transaction.type);
return new Transaction_1.default(transaction.originalTransactionId, transaction.transactionId, transaction.transactionTimestamp, environment, ownershipType, type, transaction.expirationTimestamp, transaction.transactionRevocationTimestamp, transaction.offerCode, transaction.promoOfferId);
}
static convertTransactionType(typeKey) {
switch (typeKey) {
case "SubscriptionStarted":
return enums_1.TransactionType.SUBSCRIPTION_STARTED;
case "SubscriptionRenewed":
return enums_1.TransactionType.SUBSCRIPTION_RENEWED;
case "TrialStarted":
return enums_1.TransactionType.TRIAL_STARTED;
case "IntroStarted":
return enums_1.TransactionType.INTRO_STARTED;
case "IntroRenewed":
return enums_1.TransactionType.INTRO_RENEWED;
case "NonConsumablePurchase":
return enums_1.TransactionType.NON_CONSUMABLE_PURCHASE;
}
return enums_1.TransactionType.UNKNOWN;
}
static convertTransactionOwnershipType(ownershipTypeKey) {
switch (ownershipTypeKey) {
case "Owner":
return enums_1.TransactionOwnershipType.OWNER;
case "FamilySharing":
return enums_1.TransactionOwnershipType.FAMILY_SHARING;
}
return enums_1.TransactionOwnershipType.OWNER;
}
static convertTransactionEnvironment(envKey) {
switch (envKey) {
case "Production":
return enums_1.TransactionEnvironment.PRODUCTION;
case "Sandbox":
return enums_1.TransactionEnvironment.SANDBOX;
}
return enums_1.TransactionEnvironment.PRODUCTION;
}
static convertEntitlementSource(sourceKey) {
switch (sourceKey) {
case "Unknown":
return enums_1.EntitlementSource.UNKNOWN;
case "AppStore":
return enums_1.EntitlementSource.APP_STORE;
case "PlayStore":
return enums_1.EntitlementSource.PLAY_STORE;
case "Stripe":
return enums_1.EntitlementSource.STRIPE;
case "Manual":
return enums_1.EntitlementSource.MANUAL;
}
return enums_1.EntitlementSource.UNKNOWN;
}
static convertEntitlementGrantType(typeKey) {
switch (typeKey) {
case "Purchase":
return enums_1.EntitlementGrantType.PURCHASE;
case "FamilySharing":
return enums_1.EntitlementGrantType.FAMILY_SHARING;
case "OfferCode":
return enums_1.EntitlementGrantType.OFFER_CODE;
case "Manual":
return enums_1.EntitlementGrantType.MANUAL;
}
return enums_1.EntitlementGrantType.PURCHASE;
}
static convertDefinedUserPropertyKey(sourceKey) {
switch (sourceKey) {
case '_q_email':
return enums_1.UserPropertyKey.EMAIL;
case '_q_name':
return enums_1.UserPropertyKey.NAME;
case '_q_kochava_device_id':
return enums_1.UserPropertyKey.KOCHAVA_DEVICE_ID;
case '_q_appsflyer_user_id':
return enums_1.UserPropertyKey.APPS_FLYER_USER_ID;
case '_q_adjust_adid':
return enums_1.UserPropertyKey.ADJUST_AD_ID;
case '_q_custom_user_id':
return enums_1.UserPropertyKey.CUSTOM_USER_ID;
case '_q_fb_attribution':
return enums_1.UserPropertyKey.FACEBOOK_ATTRIBUTION;
case '_q_firebase_instance_id':
return enums_1.UserPropertyKey.FIREBASE_APP_INSTANCE_ID;
case '_q_app_set_id':
return enums_1.UserPropertyKey.APP_SET_ID;
case '_q_advertising_id':
return enums_1.UserPropertyKey.ADVERTISING_ID;
case "_q_appmetrica_device_id":
return enums_1.UserPropertyKey.APP_METRICA_DEVICE_ID;
case "_q_appmetrica_user_profile_id":
return enums_1.UserPropertyKey.APP_METRICA_USER_PROFILE_ID;
case "_q_pushwoosh_hwid":
return enums_1.UserPropertyKey.PUSH_WOOSH_HW_ID;
case "_q_pushwoosh_user_id":
return enums_1.UserPropertyKey.PUSH_WOOSH_USER_ID;
case "_q_tenjin_aiid":
return enums_1.UserPropertyKey.TENJIN_ANALYTICS_INSTALLATION_ID;
}
return enums_1.UserPropertyKey.CUSTOM;
}
static convertUserProperties(properties) {
const mappedProperties = properties.properties.map(propertyData => new UserProperty_1.default(propertyData.key, propertyData.value));
return new UserProperties_1.default(mappedProperties);
}
static convertProducts(products) {
let mappedProducts = new Map();
if (!products) {
return mappedProducts;
}
for (const [key, product] of Object.entries(products)) {
const mappedProduct = this.convertProduct(product);
mappedProducts.set(key, mappedProduct);
}
return mappedProducts;
}
static convertProduct(product) {
const productType = Mapper.convertProductType(product.type);
const subscriptionPeriod = Mapper.convertSubscriptionPeriod(product.subscriptionPeriod);
const trialPeriod = Mapper.convertSubscriptionPeriod(product.trialPeriod);
const offeringId = product.offeringId ?? null;
let skProduct = null;
let skuDetails = null;
let storeDetails = null;
let price;
let currencyCode;
let storeTitle;
let storeDescription;
let prettyIntroductoryPrice;
if (!!product.skProduct) {
skProduct = Mapper.convertSKProduct(product.skProduct);
price = parseFloat(skProduct.price);
currencyCode = skProduct.currencyCode;
storeTitle = skProduct.localizedTitle;
storeDescription = skProduct.localizedDescription;
if (skProduct.productDiscount) {
prettyIntroductoryPrice = skProduct.productDiscount.currencySymbol + skProduct.productDiscount.price;
}
}
else {
let priceMicros = null;
if (!!product.skuDetails) {
skuDetails = Mapper.convertSkuDetails(product.skuDetails);
storeTitle = skuDetails.title;
storeDescription = skuDetails.description;
priceMicros = skuDetails.priceAmountMicros;
currencyCode = skuDetails.priceCurrencyCode;
if (skuDetails.introductoryPrice.length > 0) {
prettyIntroductoryPrice = skuDetails.introductoryPrice;
}
}
if (!!product.storeDetails) {
storeDetails = Mapper.convertProductStoreDetails(product.storeDetails);
storeTitle = storeDetails.title;
storeDescription = storeDetails.description;
const defaultOffer = storeDetails.defaultSubscriptionOfferDetails;
const inAppOffer = storeDetails.inAppOfferDetails;
if (defaultOffer) {
priceMicros = defaultOffer.basePlan?.price?.priceAmountMicros;
currencyCode = defaultOffer.basePlan?.price?.priceCurrencyCode;
prettyIntroductoryPrice = defaultOffer.introPhase?.price?.formattedPrice;
}
else if (inAppOffer) {
priceMicros = inAppOffer.price.priceAmountMicros;
currencyCode = inAppOffer.price.priceCurrencyCode;
prettyIntroductoryPrice = undefined;
}
}
price = priceMicros ? priceMicros / priceMicrosRatio : undefined;
}
const mappedProduct = new Product_1.default(product.id, product.storeId, product.basePlanId ?? null, skuDetails, storeDetails, skProduct, offeringId, subscriptionPeriod, trialPeriod, productType, product.prettyPrice ?? null, price, currencyCode, storeTitle, storeDescription, prettyIntroductoryPrice);
return mappedProduct;
}
static convertOfferings(offerings) {
if (!offerings) {
return null;
}
if (!Array.isArray(offerings.availableOfferings) ||
offerings.availableOfferings.length === 0) {
return null;
}
let mainOffering = null;
if (offerings.main) {
mainOffering = this.convertOffering(offerings.main);
}
const availableOfferings = [];
offerings.availableOfferings.forEach((offering) => {
const mappedOffering = this.convertOffering(offering);
availableOfferings.push(mappedOffering);
});
return new Offerings_1.default(mainOffering, availableOfferings);
}
static convertOffering(offering) {
const products = [];
offering.products.forEach((product) => {
const mappedProduct = this.convertProduct(product);
products.push(mappedProduct);
});
const tag = enums_1.OfferingTag[offering.tag] ?? enums_1.OfferingTag['0'];
return new Offering_1.default(offering.id, tag, products);
}
static convertSkuDetails(skuDetails) {
return new SkuDetails_1.default(skuDetails.description, skuDetails.freeTrialPeriod, skuDetails.iconUrl, skuDetails.introductoryPrice, skuDetails.introductoryPriceAmountMicros, skuDetails.introductoryPriceCycles, skuDetails.introductoryPricePeriod, skuDetails.originalJson, skuDetails.originalPrice, skuDetails.originalPriceAmountMicros, skuDetails.price, skuDetails.priceAmountMicros, skuDetails.priceCurrencyCode, skuDetails.sku, skuDetails.subscriptionPeriod, skuDetails.title, skuDetails.type, skuDetails.hashCode, skuDetails.toString);
}
static convertProductType(productType) {
let type = enums_1.ProductType.UNKNOWN;
switch (productType) {
case enums_1.ProductType.TRIAL:
type = enums_1.ProductType.TRIAL;
break;
case enums_1.ProductType.INTRO:
type = enums_1.ProductType.INTRO;
break;
case enums_1.ProductType.SUBSCRIPTION:
type = enums_1.ProductType.SUBSCRIPTION;
break;
case enums_1.ProductType.IN_APP:
type = enums_1.ProductType.IN_APP;
break;
}
return type;
}
static convertSubscriptionPeriod(productPeriod) {
if (!productPeriod) {
return null;
}
const unit = Mapper.convertSubscriptionPeriodUnit(productPeriod.unit);
return new SubscriptionPeriod_1.default(productPeriod.unitCount, unit, productPeriod.iso);
}
static convertSubscriptionPeriodUnit(unit) {
let result = enums_1.SubscriptionPeriodUnit.UNKNOWN;
switch (unit) {
case enums_1.SubscriptionPeriodUnit.DAY:
result = enums_1.SubscriptionPeriodUnit.DAY;
break;
case enums_1.SubscriptionPeriodUnit.WEEK:
result = enums_1.SubscriptionPeriodUnit.WEEK;
break;
case enums_1.SubscriptionPeriodUnit.MONTH:
result = enums_1.SubscriptionPeriodUnit.MONTH;
break;
case enums_1.SubscriptionPeriodUnit.YEAR:
result = enums_1.SubscriptionPeriodUnit.YEAR;
break;
}
return result;
}
static convertProductPricingPhase(pricingPhase) {
if (!pricingPhase) {
return null;
}
const price = Mapper.convertProductPrice(pricingPhase.price);
const billingPeriod = Mapper.convertSubscriptionPeriod(pricingPhase.billingPeriod);
const recurrenceMode = Mapper.convertPrisingPhaseRecurrenceMode(pricingPhase.recurrenceMode);
const type = Mapper.convertPrisingPhaseType(pricingPhase.type);
return new ProductPricingPhase_1.default(price, billingPeriod, pricingPhase.billingCycleCount, recurrenceMode, type, pricingPhase.isTrial, pricingPhase.isIntro, pricingPhase.isBasePlan);
}
static convertPrisingPhaseRecurrenceMode(recurrenceMode) {
let mode = enums_1.PricingPhaseRecurrenceMode.UNKNOWN;
switch (recurrenceMode) {
case enums_1.PricingPhaseRecurrenceMode.INFINITE_RECURRING:
mode = enums_1.PricingPhaseRecurrenceMode.INFINITE_RECURRING;
break;
case enums_1.PricingPhaseRecurrenceMode.FINITE_RECURRING:
mode = enums_1.PricingPhaseRecurrenceMode.FINITE_RECURRING;
break;
case enums_1.PricingPhaseRecurrenceMode.NON_RECURRING:
mode = enums_1.PricingPhaseRecurrenceMode.NON_RECURRING;
break;
}
return mode;
}
static convertPrisingPhaseType(type) {
let result = enums_1.PricingPhaseType.UNKNOWN;
switch (type) {
case enums_1.PricingPhaseType.REGULAR:
result = enums_1.PricingPhaseType.REGULAR;
break;
case enums_1.PricingPhaseType.FREE_TRIAL:
result = enums_1.PricingPhaseType.FREE_TRIAL;
break;
case enums_1.PricingPhaseType.DISCOUNTED_SINGLE_PAYMENT:
result = enums_1.PricingPhaseType.DISCOUNTED_SINGLE_PAYMENT;
break;
case enums_1.PricingPhaseType.DISCOUNTED_RECURRING_PAYMENT:
result = enums_1.PricingPhaseType.DISCOUNTED_RECURRING_PAYMENT;
break;
}
return result;
}
static convertProductInstallmentPlanDetails(installmentPlanDetails) {
if (!installmentPlanDetails) {
return null;
}
return new ProductInstallmentPlanDetails_1.default(installmentPlanDetails.commitmentPaymentsCount, installmentPlanDetails.subsequentCommitmentPaymentsCount);
}
static convertProductOfferDetails(offerDetails) {
let basePlan = Mapper.convertProductPricingPhase(offerDetails.basePlan);
let trialPhase = Mapper.convertProductPricingPhase(offerDetails.trialPhase);
let introPhase = Mapper.convertProductPricingPhase(offerDetails.introPhase);
let installmentPlanDetails = Mapper.convertProductInstallmentPlanDetails(offerDetails.installmentPlanDetails);
let pricingPhases = offerDetails.pricingPhases.map(pricingPhase => Mapper.convertProductPricingPhase(pricingPhase)).filter(Boolean);
return new ProductOfferDetails_1.default(offerDetails.basePlanId, offerDetails.offerId ?? null, offerDetails.offerToken, offerDetails.tags, pricingPhases, basePlan, installmentPlanDetails, introPhase, trialPhase, offerDetails.hasTrial, offerDetails.hasIntro, offerDetails.hasTrialOrIntro);
}
static convertInAppOfferDetails(inAppOfferDetails) {
let productPrice = this.convertProductPrice(inAppOfferDetails.price);
return new ProductInAppDetails_1.default(productPrice);
}
static convertProductPrice(productPrice) {
return new ProductPrice_1.default(productPrice.priceAmountMicros, productPrice.priceCurrencyCode, productPrice.formattedPrice, productPrice.isFree, productPrice.currencySymbol);
}
static convertProductStoreDetails(productStoreDetails) {
let defaultSubscriptionOfferDetails = null;
if (productStoreDetails.defaultSubscriptionOfferDetails != null) {
defaultSubscriptionOfferDetails = this.convertProductOfferDetails(productStoreDetails.defaultSubscriptionOfferDetails);
}
let basePlanSubscriptionOfferDetails = null;
if (productStoreDetails.basePlanSubscriptionOfferDetails != null) {
basePlanSubscriptionOfferDetails = this.convertProductOfferDetails(productStoreDetails.basePlanSubscriptionOfferDetails);
}
let inAppOfferDetails = null;
if (productStoreDetails.inAppOfferDetails != null) {
inAppOfferDetails = this.convertInAppOfferDetails(productStoreDetails.inAppOfferDetails);
}
let subscriptionOfferDetails = null;
if (productStoreDetails.subscriptionOfferDetails != null) {
subscriptionOfferDetails = productStoreDetails.subscriptionOfferDetails.map(defaultOfferDetail => this.convertProductOfferDetails(defaultOfferDetail));
}
const productType = Mapper.convertProductType(productStoreDetails.productType);
return new ProductStoreDetails_1.default(productStoreDetails.basePlanId ?? null, productStoreDetails.productId, productStoreDetails.name, productStoreDetails.title, productStoreDetails.description, subscriptionOfferDetails, defaultSubscriptionOfferDetails, basePlanSubscriptionOfferDetails, inAppOfferDetails, productStoreDetails.hasTrialOffer, productStoreDetails.hasIntroOffer, productStoreDetails.hasTrialOrIntroOffer, productType, productStoreDetails.isInApp, productStoreDetails.isSubscription, productStoreDetails.isPrepaid, productStoreDetails.isInstallment);
}
static convertSKProduct(skProduct) {
let subscriptionPeriod;
if (skProduct.subscriptionPeriod != null) {
subscriptionPeriod = this.convertSKSubscriptionPeriod(skProduct.subscriptionPeriod);
}
let discount;
if (skProduct.introductoryPrice) {
discount = this.convertProductDiscount(skProduct.introductoryPrice);
}
let discounts;
if (Array.isArray(skProduct.discounts) && skProduct.discounts.length) {
discounts = this.convertDiscounts(skProduct.discounts);
}
return new SKProduct_1.default(skProduct.localizedDescription, skProduct.localizedTitle, skProduct.price, skProduct.priceLocale.localeIdentifier, skProduct.productIdentifier, !!skProduct.isDownloadable, skProduct.downloadContentVersion, skProduct.downloadContentLengths, subscriptionPeriod, discount, discounts, skProduct.subscriptionGroupIdentifier, skProduct.isFamilyShareable, skProduct.priceLocale.currencyCode ?? "");
}
static convertSKSubscriptionPeriod(subscriptionPeriod) {
return new SKSubscriptionPeriod_1.default(subscriptionPeriod.numberOfUnits, enums_1.SKPeriodUnit[subscriptionPeriod.unit]);
}
static convertPaymentDiscount(discount) {
return new SKPaymentDiscount_1.default(discount.identifier, discount.keyIdentifier, discount.nonce, discount.signature, discount.timestamp);
}
static convertProductDiscount(discount) {
let subscriptionPeriod = undefined;
if (discount.subscriptionPeriod != null) {
subscriptionPeriod = this.convertSKSubscriptionPeriod(discount.subscriptionPeriod);
}
return new SKProductDiscount_1.default(discount.price, discount.priceLocale.localeIdentifier, discount.numberOfPeriods, subscriptionPeriod, enums_1.SKProductDiscountPaymentMode[discount.paymentMode], discount.identifier, enums_1.SKProductDiscountType[discount.type], discount.priceLocale.currencySymbol ?? "");
}
static convertDiscounts(discounts) {
const mappedDiscounts = discounts.map((discount) => {
return this.convertProductDiscount(discount);
});
return mappedDiscounts;
}
static convertEligibility(eligibilityMap) {
let mappedEligibility = new Map();
if (!eligibilityMap) {
return mappedEligibility;
}
for (const [key, value] of Object.entries(eligibilityMap)) {
const status = Mapper.convertEligibilityStatus(value.status);
const eligibilityInfo = new IntroEligibility_1.default(status);
mappedEligibility.set(key, eligibilityInfo);
}
return mappedEligibility;
}
static convertEligibilityStatus(status) {
switch (status) {
case "non_intro_or_trial_product":
return enums_1.IntroEligibilityStatus.NON_INTRO_OR_TRIAL_PRODUCT;
case "intro_or_trial_eligible":
return enums_1.IntroEligibilityStatus.ELIGIBLE;
case "intro_or_trial_ineligible":
return enums_1.IntroEligibilityStatus.INELIGIBLE;
default:
return enums_1.IntroEligibilityStatus.UNKNOWN;
}
}
static convertUserInfo(user) {
return new User_1.default(user.qonversionId, user.identityId);
}
static convertRemoteConfig(remoteConfig) {
let experiment = null;
if (remoteConfig.experiment) {
const groupType = this.convertGroupType(remoteConfig.experiment.group.type);
const group = new ExperimentGroup_1.default(remoteConfig.experiment.group.id, remoteConfig.experiment.group.name, groupType);
experiment = new Experiment_1.default(remoteConfig.experiment.id, remoteConfig.experiment.name, group);
}
const sourceType = this.convertRemoteConfigurationSourceType(remoteConfig.source.type);
const assignmentType = this.convertRemoteConfigurationAssignmentType(remoteConfig.source.assignmentType);
const source = new RemoteConfigurationSource_1.default(remoteConfig.source.id, remoteConfig.source.name, sourceType, assignmentType, remoteConfig.source.contextKey ?? null);
return new RemoteConfig_1.default(remoteConfig.payload, experiment, source);
}
static convertRemoteConfigList(remoteConfigList) {
const remoteConfigs = remoteConfigList.remoteConfigs.map(config => this.convertRemoteConfig(config));
return new RemoteConfigList_1.default(remoteConfigs);
}
static convertRemoteConfigurationSourceType(type) {
switch (type) {
case "experiment_control_group":
return enums_1.RemoteConfigurationSourceType.EXPERIMENT_CONTROL_GROUP;
case "experiment_treatment_group":
return enums_1.RemoteConfigurationSourceType.EXPERIMENT_TREATMENT_GROUP;
case "remote_configuration":
return enums_1.RemoteConfigurationSourceType.REMOTE_CONFIGURATION;
default:
return enums_1.RemoteConfigurationSourceType.UNKNOWN;
}
}
static convertRemoteConfigurationAssignmentType(type) {
switch (type) {
case "auto":
return enums_1.RemoteConfigurationAssignmentType.AUTO;
case "manual":
return enums_1.RemoteConfigurationAssignmentType.MANUAL;
default:
return enums_1.RemoteConfigurationAssignmentType.UNKNOWN;
}
}
static convertGroupType(type) {
switch (type) {
case "control":
return enums_1.ExperimentGroupType.CONTROL;
case "treatment":
return enums_1.ExperimentGroupType.TREATMENT;
default:
return enums_1.ExperimentGroupType.UNKNOWN;
}
}
static convertAction(payload) {
return new NoCodesAction_1.default(payload["type"], payload["parameters"], this.convertNoCodesError(payload["error"]));
}
static convertNoCodesError(payload) {
if (!payload)
return undefined;
const code = this.convertNoCodesErrorCode(payload.code);
const error = payload.qonversionError ? this.convertQonversionError(payload.qonversionError) : undefined;
return new NoCodesError_1.default(code, payload.description, payload.additionalMessage, payload.domain, error);
}
static convertQonversionError(payload) {
if (!payload)
return undefined;
const code = this.convertQonversionErrorCode(payload.code);
return new QonversionError_1.default(code, payload.description, payload.additionalMessage, payload.domain);
}
static convertScreenPresentationConfig(config) {
return {
presentationStyle: config.presentationStyle,
animated: config.animated ? '1' : '0',
};
}
static convertNoCodesErrorCode(code) {
if (!code) {
return enums_1.NoCodesErrorCode.UNKNOWN;
}
switch (code) {
case enums_1.NoCodesErrorCode.UNKNOWN: return enums_1.NoCodesErrorCode.UNKNOWN;
case enums_1.NoCodesErrorCode.BAD_NETWORK_REQUEST: return enums_1.NoCodesErrorCode.BAD_NETWORK_REQUEST;
case enums_1.NoCodesErrorCode.BAD_RESPONSE: return enums_1.NoCodesErrorCode.BAD_RESPONSE;
case enums_1.NoCodesErrorCode.ACTIVITY_START: return enums_1.NoCodesErrorCode.ACTIVITY_START;
case enums_1.NoCodesErrorCode.NETWORK_REQUEST_EXECUTION: return enums_1.NoCodesErrorCode.NETWORK_REQUEST_EXECUTION;
case enums_1.NoCodesErrorCode.SERIALIZATION: return enums_1.NoCodesErrorCode.SERIALIZATION;
case enums_1.NoCodesErrorCode.DESERIALIZATION: return enums_1.NoCodesErrorCode.DESERIALIZATION;
case enums_1.NoCodesErrorCode.REQUEST_DENIED: return enums_1.NoCodesErrorCode.REQUEST_DENIED;
case enums_1.NoCodesErrorCode.MAPPING: return enums_1.NoCodesErrorCode.MAPPING;
case enums_1.NoCodesErrorCode.BACKEND_ERROR: return enums_1.NoCodesErrorCode.BACKEND_ERROR;
case enums_1.NoCodesErrorCode.SCREEN_NOT_FOUND: return enums_1.NoCodesErrorCode.SCREEN_NOT_FOUND;
case enums_1.NoCodesErrorCode.QONVERSION_ERROR: return enums_1.NoCodesErrorCode.QONVERSION_ERROR;
case enums_1.NoCodesErrorCode.INTERNAL: return enums_1.NoCodesErrorCode.INTERNAL;
case enums_1.NoCodesErrorCode.AUTHORIZATION_FAILED: return enums_1.NoCodesErrorCode.AUTHORIZATION_FAILED;
case enums_1.NoCodesErrorCode.CRITICAL: return enums_1.NoCodesErrorCode.CRITICAL;
case enums_1.NoCodesErrorCode.PRODUCT_NOT_FOUND: return enums_1.NoCodesErrorCode.PRODUCT_NOT_FOUND;
case enums_1.NoCodesErrorCode.PRODUCTS_LOADING_FAILED: return enums_1.NoCodesErrorCode.PRODUCTS_LOADING_FAILED;
case enums_1.NoCodesErrorCode.RATE_LIMIT_EXCEEDED: return enums_1.NoCodesErrorCode.RATE_LIMIT_EXCEEDED;
case enums_1.NoCodesErrorCode.SCREEN_LOADING_FAILED: return enums_1.NoCodesErrorCode.SCREEN_LOADING_FAILED;
case enums_1.NoCodesErrorCode.SDK_INITIALIZATION_ERROR: return enums_1.NoCodesErrorCode.SDK_INITIALIZATION_ERROR;
}
return enums_1.NoCodesErrorCode.UNKNOWN;
}
static convertQonversionErrorCode(code) {
if (!code) {
return enums_1.QonversionErrorCode.UNKNOWN;
}
switch (code) {
case enums_1.QonversionErrorCode.UNKNOWN: return enums_1.QonversionErrorCode.UNKNOWN;
case enums_1.QonversionErrorCode.API_RATE_LIMIT_EXCEEDED: return enums_1.QonversionErrorCode.API_RATE_LIMIT_EXCEEDED;
case enums_1.QonversionErrorCode.APPLE_STORE_ERROR: return enums_1.QonversionErrorCode.APPLE_STORE_ERROR;
case enums_1.QonversionErrorCode.BACKEND_ERROR: return enums_1.QonversionErrorCode.BACKEND_ERROR;
case enums_1.QonversionErrorCode.BILLING_UNAVAILABLE: return enums_1.QonversionErrorCode.BILLING_UNAVAILABLE;
case enums_1.QonversionErrorCode.CLIENT_INVALID: return enums_1.QonversionErrorCode.CLIENT_INVALID;
case enums_1.QonversionErrorCode.CLOUD_SERVICE_NETWORK_CONNECTION_FAILED: return enums_1.QonversionErrorCode.CLOUD_SERVICE_NETWORK_CONNECTION_FAILED;
case enums_1.QonversionErrorCode.CLOUD_SERVICE_PERMISSION_DENIED: return enums_1.QonversionErrorCode.CLOUD_SERVICE_PERMISSION_DENIED;
case enums_1.QonversionErrorCode.CLOUD_SERVICE_REVOKED: return enums_1.QonversionErrorCode.CLOUD_SERVICE_REVOKED;
case enums_1.QonversionErrorCode.FAILED_TO_RECEIVE_DATA: return enums_1.QonversionErrorCode.FAILED_TO_RECEIVE_DATA;
case enums_1.QonversionErrorCode.FEATURE_NOT_SUPPORTED: return enums_1.QonversionErrorCode.FEATURE_NOT_SUPPORTED;
case enums_1.QonversionErrorCode.FRAUD_PURCHASE: return enums_1.QonversionErrorCode.FRAUD_PURCHASE;
case enums_1.QonversionErrorCode.INCORRECT_REQUEST: return enums_1.QonversionErrorCode.INCORRECT_REQUEST;
case enums_1.QonversionErrorCode.INTERNAL_ERROR: return enums_1.QonversionErrorCode.INTERNAL_ERROR;
case enums_1.QonversionErrorCode.INVALID_CLIENT_UID: return enums_1.QonversionErrorCode.INVALID_CLIENT_UID;
case enums_1.QonversionErrorCode.INVALID_CREDENTIALS: return enums_1.QonversionErrorCode.INVALID_CREDENTIALS;
case enums_1.QonversionErrorCode.INVALID_STORE_CREDENTIALS: return enums_1.QonversionErrorCode.INVALID_STORE_CREDENTIALS;
case enums_1.QonversionErrorCode.LAUNCH_ERROR: return enums_1.QonversionErrorCode.LAUNCH_ERROR;
case enums_1.QonversionErrorCode.NETWORK_CONNECTION_FAILED: return enums_1.QonversionErrorCode.NETWORK_CONNECTION_FAILED;
case enums_1.QonversionErrorCode.OFFERINGS_NOT_FOUND: return enums_1.QonversionErrorCode.OFFERINGS_NOT_FOUND;
case enums_1.QonversionErrorCode.PAYMENT_INVALID: return enums_1.QonversionErrorCode.PAYMENT_INVALID;
case enums_1.QonversionErrorCode.PAYMENT_NOT_ALLOWED: return enums_1.QonversionErrorCode.PAYMENT_NOT_ALLOWED;
case enums_1.QonversionErrorCode.PLAY_STORE_ERROR: return enums_1.QonversionErrorCode.PLAY_STORE_ERROR;
case enums_1.QonversionErrorCode.PRIVACY_ACKNOWLEDGEMENT_REQUIRED: return enums_1.QonversionErrorCode.PRIVACY_ACKNOWLEDGEMENT_REQUIRED;
case enums_1.QonversionErrorCode.PRODUCT_ALREADY_OWNED: return enums_1.QonversionErrorCode.PRODUCT_ALREADY_OWNED;
case enums_1.QonversionErrorCode.PRODUCT_NOT_FOUND: return enums_1.QonversionErrorCode.PRODUCT_NOT_FOUND;
case enums_1.QonversionErrorCode.PRODUCT_NOT_OWNED: return enums_1.QonversionErrorCode.PRODUCT_NOT_OWNED;
case enums_1.QonversionErrorCode.PROJECT_CONFIG_ERROR: return enums_1.QonversionErrorCode.PROJECT_CONFIG_ERROR;
case enums_1.QonversionErrorCode.PURCHASE_CANCELED: return enums_1.QonversionErrorCode.PURCHASE_CANCELED;
case enums_1.QonversionErrorCode.PURCHASE_INVALID: return enums_1.QonversionErrorCode.PURCHASE_INVALID;
case enums_1.QonversionErrorCode.PURCHASE_PENDING: return enums_1.QonversionErrorCode.PURCHASE_PENDING;
case enums_1.QonversionErrorCode.PURCHASE_UNSPECIFIED: return enums_1.QonversionErrorCode.PURCHASE_UNSPECIFIED;
case enums_1.QonversionErrorCode.RECEIPT_VALIDATION_ERROR: return enums_1.QonversionErrorCode.RECEIPT_VALIDATION_ERROR;
case enums_1.QonversionErrorCode.REMOTE_CONFIGURATION_NOT_AVAILABLE: return enums_1.QonversionErrorCode.REMOTE_CONFIGURATION_NOT_AVAILABLE;
case enums_1.QonversionErrorCode.RESPONSE_PARSING_FAILED: return enums_1.QonversionErrorCode.RESPONSE_PARSING_FAILED;
case enums_1.QonversionErrorCode.STORE_PRODUCT_NOT_AVAILABLE: return enums_1.QonversionErrorCode.STORE_PRODUCT_NOT_AVAILABLE;
case enums_1.QonversionErrorCode.UNAUTHORIZED_REQUEST_DATA: return enums_1.QonversionErrorCode.UNAUTHORIZED_REQUEST_DATA;
case enums_1.QonversionErrorCode.UNKNOWN_CLIENT_PLATFORM: return enums_1.QonversionErrorCode.UNKNOWN_CLIENT_PLATFORM;
}
return enums_1.QonversionErrorCode.UNKNOWN;
}
}
exports.default = Mapper;
//# sourceMappingURL=Mapper.js.map