react-native-adapty
Version:
Adapty React Native SDK
62 lines • 3.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AdaptyOnboardingView = void 0;
const tslib_1 = require("tslib");
const react_1 = tslib_1.__importStar(require("react"));
const react_native_1 = require("react-native");
const adapty_onboarding_1 = require("../coders/adapty-onboarding");
const coders_1 = require("../coders");
const generate_id_1 = require("../utils/generate-id");
const utils_1 = require("../utils");
const create_onboarding_event_handlers_1 = require("./create-onboarding-event-handlers");
const onboarding_view_controller_1 = require("./onboarding-view-controller");
const AdaptyOnboardingView_mock_1 = require("./AdaptyOnboardingView.mock");
const NativeAdaptyOnboardingView = (0, utils_1.shouldEnableMock)()
? AdaptyOnboardingView_mock_1.AdaptyOnboardingViewMock
: (0, react_native_1.requireNativeComponent)('AdaptyOnboardingView');
const AdaptyOnboardingViewComponent = (_a) => {
var { onboarding, externalUrlsPresentation = onboarding_view_controller_1.DEFAULT_ONBOARDING_PARAMS.externalUrlsPresentation, eventHandlers, onClose, onCustom, onPaywall, onStateUpdated, onFinishedLoading, onAnalytics, onError } = _a, rest = tslib_1.__rest(_a, ["onboarding", "externalUrlsPresentation", "eventHandlers", "onClose", "onCustom", "onPaywall", "onStateUpdated", "onFinishedLoading", "onAnalytics", "onError"]);
const uniqueViewId = (0, react_1.useMemo)(() => `${onboarding.id}_${(0, generate_id_1.generateId)()}`, [onboarding.id]);
const onboardingJson = (0, react_1.useMemo)(() => {
const encodedOnboarding = new adapty_onboarding_1.AdaptyOnboardingCoder().encode(onboarding);
const encodedParams = new coders_1.AdaptyUICreateOnboardingViewParamsCoder().encode({
externalUrlsPresentation,
});
return JSON.stringify(Object.assign({ onboarding: encodedOnboarding }, encodedParams));
}, [onboarding, externalUrlsPresentation]);
const combinedEventHandlers = (0, react_1.useMemo)(() => {
const individualHandlers = {};
if (onClose)
individualHandlers.onClose = onClose;
if (onCustom)
individualHandlers.onCustom = onCustom;
if (onPaywall)
individualHandlers.onPaywall = onPaywall;
if (onStateUpdated)
individualHandlers.onStateUpdated = onStateUpdated;
if (onFinishedLoading)
individualHandlers.onFinishedLoading = onFinishedLoading;
if (onAnalytics)
individualHandlers.onAnalytics = onAnalytics;
if (onError)
individualHandlers.onError = onError;
// Merge legacy eventHandlers with individual props (individual props take priority)
return Object.assign(Object.assign({}, eventHandlers), individualHandlers);
}, [
onClose,
onCustom,
onPaywall,
onStateUpdated,
onFinishedLoading,
onAnalytics,
onError,
eventHandlers,
]);
(0, react_1.useEffect)(() => {
const unsubscribe = (0, create_onboarding_event_handlers_1.createOnboardingEventHandlers)(combinedEventHandlers, uniqueViewId);
return unsubscribe;
}, [uniqueViewId, combinedEventHandlers]);
return (<NativeAdaptyOnboardingView {...rest} viewId={uniqueViewId} onboardingJson={onboardingJson}/>);
};
exports.AdaptyOnboardingView = (0, react_1.memo)(AdaptyOnboardingViewComponent);
//# sourceMappingURL=AdaptyOnboardingView.js.map