react-native-adapty
Version:
Adapty React Native SDK
93 lines • 3.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseOnboardingEvent = exports.OnboardingEventId = void 0;
const adapty_error_1 = require("../adapty-error");
const adapty_native_error_1 = require("./adapty-native-error");
const adapty_ui_onboarding_meta_1 = require("../coders/adapty-ui-onboarding-meta");
const adapty_ui_onboarding_state_updated_action_1 = require("../coders/adapty-ui-onboarding-state-updated-action");
const onboarding_events_1 = require("../types/onboarding-events");
// Re-export types for convenience
var onboarding_events_2 = require("../types/onboarding-events");
Object.defineProperty(exports, "OnboardingEventId", { enumerable: true, get: function () { return onboarding_events_2.OnboardingEventId; } });
// Parser
function parseOnboardingEvent(input, ctx) {
var _a;
let obj;
try {
obj = JSON.parse(input);
}
catch (error) {
throw adapty_error_1.AdaptyError.failedToDecode(`Failed to decode event: ${error === null || error === void 0 ? void 0 : error.message}`);
}
const eventId = obj['id'];
if (!(eventId === null || eventId === void 0 ? void 0 : eventId.startsWith('onboarding_'))) {
return null;
}
const viewObj = obj['view'];
const view = {
id: viewObj['id'],
placementId: viewObj['placement_id'],
variationId: viewObj['variation_id'],
};
const decodeMeta = () => getOnboardingCoder('meta', ctx).decode(obj['meta']);
switch (eventId) {
case onboarding_events_1.OnboardingEventId.Close:
case onboarding_events_1.OnboardingEventId.Custom:
case onboarding_events_1.OnboardingEventId.Paywall:
return {
id: eventId,
view,
actionId: (_a = obj['action_id']) !== null && _a !== void 0 ? _a : '',
meta: decodeMeta(),
};
case onboarding_events_1.OnboardingEventId.StateUpdated:
return {
id: eventId,
view,
action: getOnboardingCoder('action', ctx).decode(obj['action']),
meta: decodeMeta(),
};
case onboarding_events_1.OnboardingEventId.FinishedLoading:
return {
id: eventId,
view,
meta: decodeMeta(),
};
case onboarding_events_1.OnboardingEventId.Analytics: {
const eventObj = obj['event'];
return {
id: eventId,
view,
event: {
name: eventObj['name'],
elementId: eventObj['element_id'],
reply: eventObj['reply'],
},
meta: decodeMeta(),
};
}
case onboarding_events_1.OnboardingEventId.Error: {
const errorCoder = getOnboardingCoder('error', ctx);
const decodedError = errorCoder.decode(obj['error']);
return {
id: eventId,
view,
error: errorCoder.getError(decodedError),
};
}
default:
return null;
}
}
exports.parseOnboardingEvent = parseOnboardingEvent;
function getOnboardingCoder(type, _ctx) {
switch (type) {
case 'meta':
return new adapty_ui_onboarding_meta_1.AdaptyUiOnboardingMetaCoder();
case 'action':
return new adapty_ui_onboarding_state_updated_action_1.AdaptyUiOnboardingStateUpdatedActionCoder();
case 'error':
return new adapty_native_error_1.AdaptyNativeErrorCoder();
}
}
//# sourceMappingURL=parse-onboarding.js.map