@adapty/capacitor
Version:
Official Adapty SDK for Capacitor
80 lines • 2.97 kB
JavaScript
import { parseOnboardingEvent } from '../shared/coders/parse';
import { BaseViewEmitter } from './base-view-emitter';
/**
* OnboardingViewEmitter manages event handlers for onboarding view events.
* Each event type can have only one handler - new handlers replace existing ones.
*/
export class OnboardingViewEmitter extends BaseViewEmitter {
getEventConfig(event) {
return HANDLER_TO_EVENT_CONFIG[event];
}
parseEventData(rawEventData, ctx) {
return parseOnboardingEvent(rawEventData, ctx);
}
getPossibleHandlers(nativeEvent) {
return NATIVE_EVENT_TO_HANDLERS[nativeEvent] || [];
}
extractCallbackArgs(handlerName, eventData) {
return extractCallbackArgs(handlerName, eventData);
}
getEventViewId(eventData) {
var _a, _b;
return (_b = (_a = eventData === null || eventData === void 0 ? void 0 : eventData.view) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : null;
}
shouldCallHandler() {
// Onboarding events don't use propertyMap filtering
return true;
}
getEmitterName() {
return 'OnboardingViewEmitter';
}
}
const ONBOARDING_EVENT_MAPPINGS = {
onboarding_did_fail_with_error: [{ handlerName: 'onError' }],
onboarding_on_analytics_action: [{ handlerName: 'onAnalytics' }],
onboarding_did_finish_loading: [{ handlerName: 'onFinishedLoading' }],
onboarding_on_close_action: [{ handlerName: 'onClose' }],
onboarding_on_custom_action: [{ handlerName: 'onCustom' }],
onboarding_on_paywall_action: [{ handlerName: 'onPaywall' }],
onboarding_on_state_updated_action: [{ handlerName: 'onStateUpdated' }],
};
const HANDLER_TO_EVENT_CONFIG = Object.entries(ONBOARDING_EVENT_MAPPINGS).reduce((acc, [nativeEvent, mappings]) => {
mappings.forEach(({ handlerName }) => {
acc[handlerName] = {
nativeEvent,
handlerName,
};
});
return acc;
}, {});
// Reverse mapping: nativeEvent -> EventName[]
const NATIVE_EVENT_TO_HANDLERS = Object.entries(HANDLER_TO_EVENT_CONFIG).reduce((acc, [handlerName, config]) => {
if (!acc[config.nativeEvent]) {
acc[config.nativeEvent] = [];
}
acc[config.nativeEvent].push(handlerName);
return acc;
}, {});
function extractCallbackArgs(handlerName, eventArg) {
const actionId = eventArg.id || '';
const meta = eventArg.meta;
const event = eventArg.event;
const action = eventArg.action;
switch (handlerName) {
case 'onClose':
case 'onCustom':
case 'onPaywall':
return [actionId, meta];
case 'onStateUpdated':
return [action, meta];
case 'onFinishedLoading':
return [meta];
case 'onAnalytics':
return [event, meta];
case 'onError':
return [eventArg.error];
default:
return [];
}
}
//# sourceMappingURL=onboarding-view-emitter.js.map