import React from 'react'; import DocumentScan from '../components/DocumentScan'; import { DocumentScanError } from '../types/sdkTypes'; import type { DocumentScanHandle, InitialiseDocumentScanProps, InitialiseDocumentScanResult, ScannedDocument, } from '../types/sdkTypes'; import Logger from '../utils/logger'; import type { GetIdSdk } from '@get-id/react-native-sdk'; async function initialiseFrontDocumentScan( { onUserHintChange, onCameraReady, onDocumentScanServerValidationStarted, useAutoCapture, debugMode, }: InitialiseDocumentScanProps, sdk: GetIdSdk ): Promise { Logger.log('Initialise Front Document Scan'); if (!sdk.config.stepsConfigs.document) { throw new Error('Document step not found in the flow'); } const DocumentScanRef = React.createRef(); const component = React.createElement(DocumentScan, { ref: DocumentScanRef, sdk, config: sdk.config.stepsConfigs.document, useAutoCapture, debugMode, onUserHintChange, onCameraReady, onDocumentScanServerValidationStarted, docType: 'front', }); const takePicture = async () => { return await DocumentScanRef.current?.takePicture?.(); }; const capture = async (): Promise => { if (DocumentScanRef.current?.capture) { return DocumentScanRef.current.capture(); } else { return Promise.reject(new DocumentScanError('capture is not available')); } }; const uploadDocument = () => { return ( DocumentScanRef.current?.uploadDocument?.() || Promise.reject(new DocumentScanError('uploadDocument is not available')) ); }; const stopCapture = () => { DocumentScanRef.current?.stopCapture?.(); }; return { component, takePicture, capture, uploadDocument, stopCapture, }; } export default initialiseFrontDocumentScan;