UNPKG

react-native-persona

Version:

Launch a mobile native implementation of the Persona inquiry flow from React Native.

60 lines 2.13 kB
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