@adapty/capacitor
Version:
Official Adapty SDK for Capacitor
210 lines • 8.84 kB
JavaScript
import { AdaptyError } from '../adapty-error';
import { AdaptyNativeErrorCoder } from './adapty-native-error';
import { AdaptyPaywallCoder } from './adapty-paywall';
import { AdaptyPaywallProductCoder } from './adapty-paywall-product';
import { AdaptyProfileCoder } from './adapty-profile';
import { ArrayCoder } from './array';
import { BridgeErrorCoder } from './bridge-error';
import { AdaptyRemoteConfigCoder } from './adapty-remote-config';
import { AdaptyPaywallBuilderCoder } from './adapty-paywall-builder';
import { AdaptyPurchaseResultCoder } from './adapty-purchase-result';
import { AdaptyOnboardingCoder } from './adapty-onboarding';
import { AdaptyUiOnboardingMetaCoder } from './adapty-ui-onboarding-meta';
import { AdaptyUiOnboardingStateParamsCoder } from './adapty-ui-onboarding-state-params';
import { AdaptyUiOnboardingStateUpdatedActionCoder } from './adapty-ui-onboarding-state-updated-action';
import { AdaptyInstallationStatusCoder } from './adapty-installation-status';
import { AdaptyInstallationDetailsCoder } from './adapty-installation-details';
const AdaptyTypes = [
'AdaptyError',
'AdaptyProfile',
'AdaptyPurchaseResult',
'AdaptyPaywall',
'AdaptyPaywallProduct',
'AdaptyOnboarding',
'AdaptyRemoteConfig',
'AdaptyPaywallBuilder',
'AdaptyInstallationStatus',
'AdaptyInstallationDetails',
'AdaptyUiView',
'AdaptyUiDialogActionType',
'AdaptyUiOnboardingMeta',
'AdaptyUiOnboardingStateParams',
'AdaptyUiOnboardingStateUpdatedAction',
'Array<AdaptyPaywallProduct>',
'BridgeError',
'String',
'Boolean',
'Void',
];
export function parseMethodResult(input, resultType, ctx) {
const log = ctx === null || ctx === void 0 ? void 0 : ctx.decode({ methodName: 'parseMethodResult' });
log === null || log === void 0 ? void 0 : log.start(() => ({ input }));
let obj;
// Attempt to parse the input into a JSON object
try {
obj = JSON.parse(input);
}
catch (error) {
const adaptyError = AdaptyError.failedToDecode(`Failed to decode native response. JSON.parse raised an error: ${(error === null || error === void 0 ? void 0 : error.message) || ''}`);
log === null || log === void 0 ? void 0 : log.failed(() => ({ adaptyError }));
throw adaptyError;
}
if (obj.hasOwnProperty('success')) {
if ([
'String',
'Boolean',
'Void',
'AdaptyUiView',
'AdaptyUiDialogActionType',
].includes(resultType)) {
return obj.success;
}
const coder = getCoder(resultType, ctx);
return coder === null || coder === void 0 ? void 0 : coder.decode(obj.success);
}
else if (obj.hasOwnProperty('error')) {
const coder = getCoder('AdaptyError', ctx);
const errorData = coder === null || coder === void 0 ? void 0 : coder.decode(obj.error);
throw coder.getError(errorData);
}
else {
const adaptyError = AdaptyError.failedToDecode(`Failed to decode native response. Response does not have expected "success" or "error" property`);
log === null || log === void 0 ? void 0 : log.failed(() => ({ adaptyError }));
throw adaptyError;
}
}
export function parseCommonEvent(event, input, ctx) {
var _a, _b, _c;
let obj;
try {
obj = JSON.parse(input);
}
catch (error) {
throw AdaptyError.failedToDecode(`Failed to decode event: ${error === null || error === void 0 ? void 0 : error.message}`);
}
switch (event) {
case 'did_load_latest_profile':
return (_a = getCoder('AdaptyProfile', ctx)) === null || _a === void 0 ? void 0 : _a.decode(obj['profile']);
case 'on_installation_details_success':
return (_b = getCoder('AdaptyInstallationDetails', ctx)) === null || _b === void 0 ? void 0 : _b.decode(obj['details']);
case 'on_installation_details_fail':
return (_c = getCoder('AdaptyError', ctx)) === null || _c === void 0 ? void 0 : _c.decode(obj['error']);
default:
return null;
}
}
export function parsePaywallEvent(input, ctx) {
var _a, _b, _c, _d;
const log = ctx === null || ctx === void 0 ? void 0 : ctx.decode({ methodName: 'parsePaywallEvent' });
log === null || log === void 0 ? void 0 : log.start(() => ({ input }));
let obj;
try {
obj = JSON.parse(input);
}
catch (error) {
throw AdaptyError.failedToDecode(`Failed to decode event: ${error === null || error === void 0 ? void 0 : error.message}`);
}
const result = {};
if (obj.hasOwnProperty('id')) {
result['id'] = obj['id'];
}
if (obj.hasOwnProperty('profile')) {
result['profile'] = (_a = getCoder('AdaptyProfile', ctx)) === null || _a === void 0 ? void 0 : _a.decode(obj['profile']);
}
if (obj.hasOwnProperty('product')) {
result['product'] = (_b = getCoder('AdaptyPaywallProduct', ctx)) === null || _b === void 0 ? void 0 : _b.decode(obj['product']);
}
if (obj.hasOwnProperty('error')) {
result['error'] = (_c = getCoder('AdaptyError', ctx)) === null || _c === void 0 ? void 0 : _c.decode(obj['error']);
}
if (obj.hasOwnProperty('action')) {
result['action'] = obj['action'];
}
if (obj.hasOwnProperty('view')) {
result['view'] = obj['view'];
}
if (obj.hasOwnProperty('product_id')) {
result['product_id'] = obj['product_id'];
}
if (obj.hasOwnProperty('purchased_result')) {
result['purchased_result'] = (_d = getCoder('AdaptyPurchaseResult', ctx)) === null || _d === void 0 ? void 0 : _d.decode(obj['purchased_result']);
}
return result;
}
export function parseOnboardingEvent(input, ctx) {
var _a, _b, _c;
const log = ctx === null || ctx === void 0 ? void 0 : ctx.decode({ methodName: 'parseOnboardingEvent' });
log === null || log === void 0 ? void 0 : log.start(() => ({ input }));
let obj;
try {
obj = JSON.parse(input);
}
catch (error) {
throw AdaptyError.failedToDecode(`Failed to decode event: ${error === null || error === void 0 ? void 0 : error.message}`);
}
const result = {};
if (obj.hasOwnProperty('view')) {
result['view'] = obj['view'];
}
if (obj.hasOwnProperty('meta')) {
result['meta'] = (_a = getCoder('AdaptyUiOnboardingMeta', ctx)) === null || _a === void 0 ? void 0 : _a.decode(obj['meta']);
}
if (obj.hasOwnProperty('event')) {
result['event'] = obj['event'];
}
if (obj.hasOwnProperty('action_id')) {
result['id'] = obj['action_id'];
}
if (obj.hasOwnProperty('action')) {
try {
result['action'] = (_b = getCoder('AdaptyUiOnboardingStateUpdatedAction', ctx)) === null || _b === void 0 ? void 0 : _b.decode(obj['action']);
}
catch (_e) {
result['action'] = obj['action'];
}
}
if (obj.hasOwnProperty('error')) {
result['error'] = (_c = getCoder('AdaptyError', ctx)) === null || _c === void 0 ? void 0 : _c.decode(obj['error']);
}
return result;
}
function getCoder(type, ctx) {
ctx === null || ctx === void 0 ? void 0 : ctx.stack;
switch (type) {
case 'AdaptyError':
return new AdaptyNativeErrorCoder();
case 'AdaptyProfile':
return new AdaptyProfileCoder();
case 'AdaptyPaywall':
return new AdaptyPaywallCoder();
case 'AdaptyPaywallProduct':
return new AdaptyPaywallProductCoder();
case 'AdaptyRemoteConfig':
return new AdaptyRemoteConfigCoder();
case 'AdaptyPaywallBuilder':
return new AdaptyPaywallBuilderCoder();
case 'AdaptyOnboarding':
return new AdaptyOnboardingCoder();
case 'AdaptyPurchaseResult':
return new AdaptyPurchaseResultCoder();
case 'AdaptyInstallationStatus':
return new AdaptyInstallationStatusCoder();
case 'AdaptyInstallationDetails':
return new AdaptyInstallationDetailsCoder();
case 'AdaptyUiOnboardingMeta':
return new AdaptyUiOnboardingMetaCoder();
case 'AdaptyUiOnboardingStateParams':
return new AdaptyUiOnboardingStateParamsCoder();
case 'AdaptyUiOnboardingStateUpdatedAction':
return new AdaptyUiOnboardingStateUpdatedActionCoder();
case 'BridgeError':
return new BridgeErrorCoder();
case 'Array<AdaptyPaywallProduct>':
return new ArrayCoder(AdaptyPaywallProductCoder);
case 'String':
return null;
}
// @ts-ignore
throw AdaptyError.failedToDecode(`Failed to decode native response. Response has unexpected "type" property: ${type}`);
}
//# sourceMappingURL=parse.js.map