react-native-persona
Version:
Launch a mobile native implementation of the Persona inquiry flow from React Native.
60 lines • 2.13 kB
JavaScript
import React, { useCallback, useEffect, useRef } from 'react';
import { findNodeHandle, UIManager } from 'react-native';
import { PersonaInquiryViewManager } from './PersonaInquiryViewManager';
import { callOnCanceledCallback, callOnCompleteCallback, callOnErrorCallback, callOnReadyCallback } from './util';
const create = viewId => {
try {
const viewManagerConfig = UIManager.getViewManagerConfig('PersonaInquiryView');
if (!viewManagerConfig || !viewManagerConfig.Commands) {
console.error('PersonaInquiryView config not found');
return;
}
UIManager.dispatchViewManagerCommand(viewId, viewManagerConfig.Commands.create, [viewId]);
} catch (error) {
console.error('Error dispatching create command:', error);
}
};
let onReadyCalled = false;
let onReadyCallback = () => {};
export const onPersonaInquiryViewEvent = event => {
if (event.type == 'start') {
onReadyCalled = false;
} else if (event.type == 'page_change' && !onReadyCalled) {
onReadyCalled = true;
setTimeout(function () {
onReadyCallback();
}, 400);
}
};
export default function PersonaInquiryView(props) {
const ref = useRef(null);
useEffect(() => {
const viewId = findNodeHandle(ref.current);
onReadyCallback = () => {
props.onReady();
};
create(viewId);
}, []);
const _onComplete = useCallback(event => {
callOnCompleteCallback(event.nativeEvent, props.onComplete);
}, [props.onComplete]);
const _onCanceled = useCallback(event => {
callOnCanceledCallback(event.nativeEvent, props.onCanceled);
}, [props.onCanceled]);
const _onError = useCallback(event => {
callOnErrorCallback(event.nativeEvent, props.onError);
}, [props.onError]);
const _onReady = useCallback(() => {
callOnReadyCallback(props.onReady);
}, [props.onReady]);
return /*#__PURE__*/React.createElement(PersonaInquiryViewManager, {
style: props.style,
inquiry: props.inquiry.toOptionsJson(),
onComplete: _onComplete,
onCanceled: _onCanceled,
onError: _onError,
onReady: _onReady,
ref: ref
});
}
//# sourceMappingURL=PersonaInquiryView.js.map