@transfergratis/react-native-sdk 0.1.17 → 0.1.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -617
- package/android/build.gradle +1 -1
- package/build/components/KYCElements/IDCardCapture.js +3 -3
- package/build/components/KYCElements/IDCardCapture.js.map +1 -1
- package/build/components/KYCElements/VerificationProgressTemplate.js +3 -3
- package/build/components/KYCElements/VerificationProgressTemplate.js.map +1 -1
- package/build/components/TemplateKYCExample.d.ts +1 -1
- package/build/components/TemplateKYCExample.d.ts.map +1 -1
- package/build/components/TemplateKYCExample.js +5 -8
- package/build/components/TemplateKYCExample.js.map +1 -1
- package/build/components/TemplateKYCFlowRefactored.js +7 -2
- package/build/components/TemplateKYCFlowRefactored.js.map +1 -1
- package/build/hooks/useTemplateKYCFlow.d.ts.map +1 -1
- package/build/hooks/useTemplateKYCFlow.js +3 -2
- package/build/hooks/useTemplateKYCFlow.js.map +1 -1
- package/build/index.d.ts +1 -31
- package/build/index.d.ts.map +1 -1
- package/build/index.js +1 -41
- package/build/index.js.map +1 -1
- package/build/modules/api/KYCService.d.ts.map +1 -1
- package/build/modules/api/KYCService.js +15 -9
- package/build/modules/api/KYCService.js.map +1 -1
- package/build/modules/api/types.d.ts +1 -0
- package/build/modules/api/types.d.ts.map +1 -1
- package/build/modules/api/types.js.map +1 -1
- package/build/utils/cropByObb.js +3 -3
- package/build/utils/cropByObb.js.map +1 -1
- package/package.json +1 -1
- package/src/components/KYCElements/IDCardCapture.tsx +8 -8
- package/src/components/KYCElements/VerificationProgressTemplate.tsx +10 -10
- package/src/components/TemplateKYCExample.tsx +7 -9
- package/src/components/TemplateKYCFlowRefactored.tsx +10 -3
- package/src/hooks/useTemplateKYCFlow.tsx +4 -3
- package/src/index.ts +2 -66
- package/src/modules/api/KYCService.ts +17 -11
- package/src/modules/api/types.ts +1 -0
- package/src/utils/cropByObb.ts +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TemplateKYCFlowRefactored.js","sourceRoot":"","sources":["../../src/components/TemplateKYCFlowRefactored.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport { View, Text, StyleSheet, SafeAreaView, TouchableOpacity, ActivityIndicator, Dimensions, Alert } from 'react-native';\nimport { KYCTemplate, VerificationState } from '../types/KYC.types';\nimport { TemplateKYCFlowProvider, useTemplateKYCFlowContext } from '../hooks/useTemplateKYCFlow';\nimport { useI18n } from '../hooks/useI18n';\nimport { IDCardCapture } from './KYCElements/IDCardCapture';\nimport { SelfieCaptureTemplate } from './KYCElements/SelfieCaptureTemplate';\nimport { FileUploadTemplate } from './KYCElements/FileUploadTemplate';\nimport { LocationCaptureTemplate } from './KYCElements/LocationCaptureTemplate';\nimport { CountrySelectionTemplate } from './KYCElements/CountrySelectionTemplate';\nimport { InitializationStep } from './KYCElements/InitializationStep';\nimport { ReviewSubmitTemplate } from './KYCElements/ReviewSubmitTemplate';\nimport { VerificationProgressTemplate } from './KYCElements/VerificationProgressTemplate';\n\ninterface TemplateKYCFlowProps {\n template: KYCTemplate;\n onComplete?: (data: VerificationState) => void;\n onError?: (error: string) => void;\n language?: string;\n onCancel?: () => void;\n API_KEY?: string;\n}\n\nexport const TemplateKYCFlow: React.FC<TemplateKYCFlowProps> = ({\n template,\n onComplete,\n onError,\n language = 'fr',\n onCancel,\n API_KEY,\n}) => {\n const { t } = useI18n();\n \n const OnCancel = () => {\n Alert.alert(\n t('kyc.cancelConfirmation.title'),\n t('kyc.cancelConfirmation.message'),\n [\n { text: t('kyc.cancelConfirmation.cancelButton'), style: 'cancel' },\n {\n text: t('kyc.cancelConfirmation.confirmButton'),\n onPress: () => {\n onCancel?.();\n }\n },\n ]\n );\n };\n return (\n <TemplateKYCFlowProvider\n template={template}\n onComplete={onComplete}\n onError={onError}\n onCancel={OnCancel}\n initialLanguage={language}\n apiKey={API_KEY}\n >\n <TemplateKYCFlowContent onCancel={OnCancel} />\n </TemplateKYCFlowProvider>\n );\n};\n\nconst TemplateKYCFlowContent: React.FC<{ onCancel?: () => void }> = ({ onCancel }) => {\n const {\n state,\n actions,\n currentComponent,\n progress,\n } = useTemplateKYCFlowContext();\n\n const { t } = useI18n();\n\n const updateComponentData = (componentId: number, data: unknown) => {\n actions.updateComponentData(componentId, data);\n };\n\n if (!currentComponent) {\n return (\n <View style={styles.container}>\n <Text style={styles.errorText}>{t('errors.unknownError')}</Text>\n </View>\n );\n }\n\n // Rendu du composant actuel\n const renderCurrentComponent = () => {\n const commonProps = {\n component: currentComponent,\n value: state.componentData[currentComponent.id],\n onValueChange: (data: unknown) => updateComponentData(currentComponent.id, data),\n error: state.errors[currentComponent.id],\n language: state.currentLanguage,\n };\n\n if (!state.session.isInitialized) {\n return <InitializationStep session={state.session} />\n }\n\n switch (currentComponent.type) {\n case 'id_card':\n return <IDCardCapture {...commonProps} />;\n\n case 'selfie':\n return <SelfieCaptureTemplate {...commonProps} />;\n\n case 'file_upload':\n return <FileUploadTemplate {...commonProps} />;\n\n case 'location':\n return <LocationCaptureTemplate {...commonProps} />;\n\n case 'country_selection':\n return <CountrySelectionTemplate {...commonProps} />;\n\n case 'review_submit':\n return <ReviewSubmitTemplate {...commonProps} />;\n\n case 'verification_progress':\n return <VerificationProgressTemplate {...commonProps} />;\n\n default:\n return (\n <View style={styles.unsupportedContainer}>\n <Text style={styles.unsupportedText}>\n {t('errors.unknownError')}: {currentComponent.type}\n </Text>\n </View>\n );\n }\n };\n\n return (\n <View style={{ flex: 1 }}>\n {state.isProcessing && (\n <View style={styles.processingContainer}>\n <Text style={styles.processingText}>{t('common.loading')}</Text>\n <ActivityIndicator size=\"large\" color=\"#fff\" />\n </View>\n )}\n <SafeAreaView style={styles.container}>\n {/* Header avec informations sur l'étape */}\n\n {(state.showCustomStepper && state.session.isInitialized) ? (\n <View style={styles.header}>\n <Text style={styles.progressText}>\n {t('kyc.step', { current: state.currentComponentIndex + 1, total: state.template.components.length })}\n </Text>\n <View style={styles.progressContainer}>\n <View style={styles.progressBar}>\n <View\n style={[\n styles.progressFill,\n { width: `${progress}%` }\n ]}\n />\n </View>\n\n </View>\n\n <View style={{ position: 'absolute', right: 12, top: 12 }}>\n <TouchableOpacity onPress={onCancel} disabled={!onCancel} style={{ opacity: onCancel ? 1 : 0.5 }}>\n <Text style={{ fontSize: 20, fontWeight: 'bold', color: '#333' }}>{`X`}</Text>\n </TouchableOpacity>\n </View>\n </View>\n ) : null}\n\n {/* Contenu principal */}\n <View style={styles.content}>\n {renderCurrentComponent()}\n </View>\n </SafeAreaView>\n </View>\n\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: '#f5f5f5',\n\n },\n header: {\n backgroundColor: 'white',\n paddingVertical: 20,\n paddingHorizontal: 12,\n borderBottomWidth: 1,\n borderBottomColor: '#e0e0e0',\n marginHorizontal: 12,\n marginTop: 12,\n // shadow\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.15,\n shadowRadius: 1.84,\n elevation: 5,\n },\n title: {\n fontSize: 24,\n fontWeight: 'bold',\n color: '#333',\n marginBottom: 8,\n },\n description: {\n fontSize: 16,\n color: '#666',\n marginBottom: 20,\n },\n progressContainer: {\n // marginBottom: 20,\n },\n progressBar: {\n height: 8,\n backgroundColor: '#e0e0e0',\n borderRadius: 4,\n overflow: 'hidden',\n },\n progressFill: {\n height: '100%',\n backgroundColor: '#2DBD60',\n borderRadius: 4,\n },\n progressText: {\n fontSize: 14,\n color: 'black',\n fontWeight: '600',\n textAlign: 'left',\n marginBottom: 8,\n },\n stepInfo: {\n backgroundColor: '#f8f9fa',\n padding: 16,\n borderRadius: 8,\n borderLeftWidth: 4,\n borderLeftColor: '#2DBD60',\n },\n stepTitle: {\n fontSize: 18,\n fontWeight: '600',\n color: '#333',\n marginBottom: 8,\n },\n stepDescription: {\n fontSize: 14,\n color: '#666',\n lineHeight: 20,\n },\n content: {\n flex: 1,\n // justifyContent: 'center',\n alignItems: 'center',\n // paddingTop: Dimensions.get('window').height > 760 ? 12 : 0,\n },\n navigation: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n padding: 20,\n backgroundColor: 'white',\n borderTopWidth: 1,\n borderTopColor: '#e0e0e0',\n },\n navButton: {\n paddingHorizontal: 24,\n paddingVertical: 12,\n borderRadius: 8,\n minWidth: 100,\n alignItems: 'center',\n },\n primaryButton: {\n backgroundColor: '#2DBD60',\n },\n navButtonText: {\n fontSize: 16,\n fontWeight: '600',\n color: 'white',\n },\n errorText: {\n color: '#dc2626',\n fontSize: 16,\n textAlign: 'center',\n margin: 20,\n },\n unsupportedContainer: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n padding: 20,\n },\n unsupportedText: {\n fontSize: 16,\n color: '#666',\n textAlign: 'center',\n },\n processingContainer: {\n position: 'absolute',\n flex: 1,\n width: Dimensions.get('window').width,\n height: Dimensions.get('window').height,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n justifyContent: 'center',\n alignItems: 'center',\n zIndex: 1000,\n },\n processingText: {\n fontSize: 16,\n color: '#fff',\n textAlign: 'center',\n fontWeight: 'bold',\n marginBottom: 10,\n },\n}); "]}
|
|
1
|
+
{"version":3,"file":"TemplateKYCFlowRefactored.js","sourceRoot":"","sources":["../../src/components/TemplateKYCFlowRefactored.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport { View, Text, StyleSheet, SafeAreaView, TouchableOpacity, ActivityIndicator, Dimensions, Alert } from 'react-native';\nimport { KYCTemplate, VerificationState } from '../types/KYC.types';\nimport { TemplateKYCFlowProvider, useTemplateKYCFlowContext } from '../hooks/useTemplateKYCFlow';\nimport { useI18n } from '../hooks/useI18n';\nimport { IDCardCapture } from './KYCElements/IDCardCapture';\nimport { SelfieCaptureTemplate } from './KYCElements/SelfieCaptureTemplate';\nimport { FileUploadTemplate } from './KYCElements/FileUploadTemplate';\nimport { LocationCaptureTemplate } from './KYCElements/LocationCaptureTemplate';\nimport { CountrySelectionTemplate } from './KYCElements/CountrySelectionTemplate';\nimport { InitializationStep } from './KYCElements/InitializationStep';\nimport { ReviewSubmitTemplate } from './KYCElements/ReviewSubmitTemplate';\nimport { VerificationProgressTemplate } from './KYCElements/VerificationProgressTemplate';\n\ninterface TemplateKYCFlowProps {\n template: KYCTemplate;\n onComplete?: (data: VerificationState) => void;\n onError?: (error: string) => void;\n language?: string;\n onCancel?: () => void;\n API_KEY?: string;\n}\n\nexport const TemplateKYCFlow: React.FC<TemplateKYCFlowProps> = ({\n template,\n onComplete,\n onError,\n language = 'fr',\n onCancel,\n API_KEY,\n}) => {\n const { t } = useI18n();\n\n const OnCancel = () => {\n Alert.alert(\n t('kyc.cancelConfirmation.title'),\n t('kyc.cancelConfirmation.message'),\n [\n { text: t('kyc.cancelConfirmation.cancelButton'), style: 'cancel' },\n {\n text: t('kyc.cancelConfirmation.confirmButton'),\n onPress: () => {\n onCancel?.();\n }\n },\n ]\n );\n };\n return (\n <TemplateKYCFlowProvider\n template={template}\n onComplete={onComplete}\n onError={onError}\n onCancel={OnCancel}\n initialLanguage={language}\n apiKey={API_KEY}\n >\n <TemplateKYCFlowContent onCancel={OnCancel} />\n </TemplateKYCFlowProvider>\n );\n};\n\nconst TemplateKYCFlowContent: React.FC<{ onCancel?: () => void }> = ({ onCancel }) => {\n const {\n state,\n actions,\n currentComponent,\n progress,\n } = useTemplateKYCFlowContext();\n\n const { t } = useI18n();\n\n const updateComponentData = (componentId: number, data: unknown) => {\n actions.updateComponentData(componentId, data);\n };\n\n if (!currentComponent) {\n return (\n <View style={styles.container}>\n <Text style={styles.errorText}>{t('errors.unknownError')}</Text>\n </View>\n );\n }\n\n // Rendu du composant actuel\n const renderCurrentComponent = () => {\n const commonProps = {\n component: currentComponent,\n value: state.componentData[currentComponent.id],\n onValueChange: (data: unknown) => updateComponentData(currentComponent.id, data),\n error: state.errors[currentComponent.id],\n language: state.currentLanguage,\n };\n\n if (!state.session.isInitialized) {\n return <InitializationStep session={state.session} />\n }\n\n switch (currentComponent.type) {\n case 'id_card':\n return <IDCardCapture {...commonProps} />;\n\n case 'selfie':\n return <SelfieCaptureTemplate {...commonProps} />;\n\n case 'file_upload':\n return <FileUploadTemplate {...commonProps} />;\n\n case 'location':\n return <LocationCaptureTemplate {...commonProps} />;\n\n case 'country_selection':\n return <CountrySelectionTemplate {...commonProps} />;\n\n case 'review_submit':\n return <ReviewSubmitTemplate {...commonProps} />;\n\n case 'verification_progress':\n return <VerificationProgressTemplate {...commonProps} />;\n\n default:\n return (\n <View style={styles.unsupportedContainer}>\n <Text style={styles.unsupportedText}>\n {t('errors.unknownError')}: {currentComponent.type}\n </Text>\n </View>\n );\n }\n };\n\n return (\n <View style={{ flex: 1, position: 'relative' }}>\n {state.isProcessing && (\n <View style={styles.processingContainer}>\n <Text style={styles.processingText}>{t('common.loading')}</Text>\n <ActivityIndicator size=\"large\" color=\"#fff\" />\n </View>\n )}\n <SafeAreaView style={styles.container}>\n {/* Header avec informations sur l'étape */}\n\n {(state.showCustomStepper && state.session.isInitialized) ? (\n <View style={styles.header}>\n <Text style={styles.progressText}>\n {t('kyc.step', { current: state.currentComponentIndex + 1, total: state.template.components.length })}\n </Text>\n <View style={styles.progressContainer}>\n <View style={styles.progressBar}>\n <View\n style={[\n styles.progressFill,\n { width: `${progress}%` }\n ]}\n />\n </View>\n\n </View>\n\n <View style={{ position: 'absolute', right: 12, top: 12 }}>\n <TouchableOpacity onPress={onCancel} disabled={!onCancel} style={{ opacity: onCancel ? 1 : 0.5 }}>\n <Text style={{ fontSize: 20, fontWeight: 'bold', color: '#333' }}>{`X`}</Text>\n </TouchableOpacity>\n </View>\n </View>\n ) : null}\n\n {/* Contenu principal */}\n <View style={styles.content}>\n {renderCurrentComponent()}\n </View>\n\n {state.isProcessing && (\n <View style={styles.processingContainer}>\n <Text style={styles.processingText}>{t('common.loading')}</Text>\n <ActivityIndicator size=\"large\" color=\"#fff\" />\n </View>\n )}\n </SafeAreaView>\n </View>\n\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: '#f5f5f5',\n\n },\n header: {\n backgroundColor: 'white',\n paddingVertical: 20,\n paddingHorizontal: 12,\n borderBottomWidth: 1,\n borderBottomColor: '#e0e0e0',\n marginHorizontal: 12,\n marginTop: 12,\n // shadow\n shadowColor: '#000',\n shadowOffset: { width: 0, height: 2 },\n shadowOpacity: 0.15,\n shadowRadius: 1.84,\n elevation: 5,\n },\n title: {\n fontSize: 24,\n fontWeight: 'bold',\n color: '#333',\n marginBottom: 8,\n },\n description: {\n fontSize: 16,\n color: '#666',\n marginBottom: 20,\n },\n progressContainer: {\n // marginBottom: 20,\n },\n progressBar: {\n height: 8,\n backgroundColor: '#e0e0e0',\n borderRadius: 4,\n overflow: 'hidden',\n },\n progressFill: {\n height: '100%',\n backgroundColor: '#2DBD60',\n borderRadius: 4,\n },\n progressText: {\n fontSize: 14,\n color: 'black',\n fontWeight: '600',\n textAlign: 'left',\n marginBottom: 8,\n },\n stepInfo: {\n backgroundColor: '#f8f9fa',\n padding: 16,\n borderRadius: 8,\n borderLeftWidth: 4,\n borderLeftColor: '#2DBD60',\n },\n stepTitle: {\n fontSize: 18,\n fontWeight: '600',\n color: '#333',\n marginBottom: 8,\n },\n stepDescription: {\n fontSize: 14,\n color: '#666',\n lineHeight: 20,\n },\n content: {\n flex: 1,\n // justifyContent: 'center',\n alignItems: 'center',\n // paddingTop: Dimensions.get('window').height > 760 ? 12 : 0,\n },\n navigation: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n padding: 20,\n backgroundColor: 'white',\n borderTopWidth: 1,\n borderTopColor: '#e0e0e0',\n },\n navButton: {\n paddingHorizontal: 24,\n paddingVertical: 12,\n borderRadius: 8,\n minWidth: 100,\n alignItems: 'center',\n },\n primaryButton: {\n backgroundColor: '#2DBD60',\n },\n navButtonText: {\n fontSize: 16,\n fontWeight: '600',\n color: 'white',\n },\n errorText: {\n color: '#dc2626',\n fontSize: 16,\n textAlign: 'center',\n margin: 20,\n },\n unsupportedContainer: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n padding: 20,\n },\n unsupportedText: {\n fontSize: 16,\n color: '#666',\n textAlign: 'center',\n },\n processingContainer: {\n position: 'absolute',\n flex: 1,\n width: Dimensions.get('window').width,\n height: Dimensions.get('window').height,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n justifyContent: 'center',\n alignItems: 'center',\n zIndex: 10000000,\n },\n processingText: {\n fontSize: 16,\n color: '#fff',\n textAlign: 'center',\n fontWeight: 'bold',\n marginBottom: 10,\n },\n}); "]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTemplateKYCFlow.d.ts","sourceRoot":"","sources":["../../src/hooks/useTemplateKYCFlow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAA6D,SAAS,EAAa,MAAM,OAAO,CAAC;AAC/G,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAA6C,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAMlK,UAAU,0BAA0B;IAClC,KAAK,EAAE,aAAa,CAAC;IACrB,OAAO,EAAE,eAAe,CAAC;IACzB,gBAAgB,EAAE,GAAG,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAA,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC;IACrF,iBAAiB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC;AAKD,UAAU,4BAA4B;IACpC,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC/C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,4BAA4B,CAgB1E,CAAC;AAGF,eAAO,MAAM,yBAAyB,QAAO,0BAM5C,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,UAAU,WAAW,EACrB,aAAa,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,EAC9C,UAAU,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EACjC,WAAW,MAAM,IAAI,EACrB,kBAAiB,MAAa,EAC9B,SAAS,MAAM,KACd,
|
|
1
|
+
{"version":3,"file":"useTemplateKYCFlow.d.ts","sourceRoot":"","sources":["../../src/hooks/useTemplateKYCFlow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAA6D,SAAS,EAAa,MAAM,OAAO,CAAC;AAC/G,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAA6C,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAMlK,UAAU,0BAA0B;IAClC,KAAK,EAAE,aAAa,CAAC;IACrB,OAAO,EAAE,eAAe,CAAC;IACzB,gBAAgB,EAAE,GAAG,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAA,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC;IACrF,iBAAiB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC;AAKD,UAAU,4BAA4B;IACpC,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC/C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,4BAA4B,CAgB1E,CAAC;AAGF,eAAO,MAAM,yBAAyB,QAAO,0BAM5C,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,UAAU,WAAW,EACrB,aAAa,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,EAC9C,UAAU,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EACjC,WAAW,MAAM,IAAI,EACrB,kBAAiB,MAAa,EAC9B,SAAS,MAAM,KACd,iBA4jBF,CAAC"}
|
|
@@ -389,7 +389,8 @@ export const useTemplateKYCFlow = (template, onComplete, onError, onCancel, init
|
|
|
389
389
|
data: payloadData,
|
|
390
390
|
templateId: null,
|
|
391
391
|
token: state.session.token,
|
|
392
|
-
action: action
|
|
392
|
+
action: action,
|
|
393
|
+
apiKey: apiKey,
|
|
393
394
|
});
|
|
394
395
|
logger.log("currentComp state", truncateFields(state));
|
|
395
396
|
// Marquer comme complété et passer au suivant
|
|
@@ -416,7 +417,7 @@ export const useTemplateKYCFlow = (template, onComplete, onError, onCancel, init
|
|
|
416
417
|
}
|
|
417
418
|
}));
|
|
418
419
|
}
|
|
419
|
-
}, [canGoNext, state.currentComponentIndex, state.template.components, validateComponent]),
|
|
420
|
+
}, [canGoNext, state.currentComponentIndex, state.template.components, validateComponent, apiKey]),
|
|
420
421
|
// Retourner au composant précédent
|
|
421
422
|
previousComponent: useCallback(() => {
|
|
422
423
|
if (!canGoPrevious)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTemplateKYCFlow.js","sourceRoot":"","sources":["../../src/hooks/useTemplateKYCFlow.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState, useCallback, useMemo, createContext, useContext, ReactNode, useEffect } from 'react';\nimport { KYCTemplate, TemplateState, TemplateActions, UseTemplateReturn, TemplateComponent, GovernmentDocumentType, VerificationState } from '../types/KYC.types';\nimport kycService, { authentification, truncateFields } from '../modules/api/KYCService';\nimport useI18n from './useI18n';\nimport { logger } from '../utils/logger';\n\n// Context pour le provider\ninterface TemplateKYCFlowContextType {\n state: TemplateState;\n actions: TemplateActions;\n currentComponent: any;\n progress: number;\n canGoNext: boolean;\n canGoPrevious: boolean;\n isComplete: boolean;\n getLocalizedText: (text: { en: string; fr: string;[key: string]: string }) => string;\n initializeSession: () => Promise<void>;\n}\n\nconst TemplateKYCFlowContext = createContext<TemplateKYCFlowContextType | undefined>(undefined);\n\n// Provider component\ninterface TemplateKYCFlowProviderProps {\n children: ReactNode;\n template: KYCTemplate;\n onComplete?: (data: VerificationState) => void;\n onError?: (error: string) => void;\n onCancel?: () => void;\n initialLanguage?: string;\n apiKey?: string;\n}\n\nexport const TemplateKYCFlowProvider: React.FC<TemplateKYCFlowProviderProps> = ({\n children,\n template,\n onComplete,\n onError,\n onCancel,\n initialLanguage = 'en',\n apiKey,\n}) => {\n const hookResult = useTemplateKYCFlow(template, onComplete, onError, onCancel, initialLanguage, apiKey);\n\n return (\n <TemplateKYCFlowContext.Provider value={hookResult}>\n {children}\n </TemplateKYCFlowContext.Provider>\n );\n};\n\n// Hook pour utiliser le context\nexport const useTemplateKYCFlowContext = (): TemplateKYCFlowContextType => {\n const context = useContext(TemplateKYCFlowContext);\n if (!context) {\n throw new Error('useTemplateKYCFlowContext must be used within a TemplateKYCFlowProvider');\n }\n return context;\n};\n\nexport const useTemplateKYCFlow = (\n template: KYCTemplate,\n onComplete?: (data: VerificationState) => void,\n onError?: (error: string) => void,\n onCancel?: () => void,\n initialLanguage: string = 'en',\n apiKey?: string,\n): UseTemplateReturn => {\n\n const { setLocale } = useI18n();\n\n useEffect(() => {\n setLocale(initialLanguage);\n }, [initialLanguage]);\n\n // Helpers to align SDK steps with backend actions/templates\n const isUiOnlyStep = useCallback((type: TemplateComponent['type']) => {\n return type === 'verification_progress';\n }, []);\n\n\n\n const ensureReviewSubmitStep = useCallback((tpl: KYCTemplate): KYCTemplate => {\n const hasReview = tpl.components.some(c => c.type === 'review_submit');\n if (hasReview) return tpl;\n\n const lastOrder = tpl.components.reduce((acc, c) => Math.max(acc, c.order ?? 0), 0);\n const lastId = tpl.components.reduce((acc, c) => Math.max(acc, c.id), 0);\n\n const reviewComponent: TemplateComponent = {\n id: lastId + 1,\n type: 'review_submit',\n order: lastOrder + 1,\n labels: { en: 'Review & Submit', fr: 'Revoir & Soumettre' },\n instructions: { en: 'Confirm and submit', fr: 'Confirmer et soumettre' },\n ui: { buttonText: { en: 'Complete Verification', fr: 'Terminer la vérification' } },\n // @ts-ignore - config unused for review component\n config: {},\n } as TemplateComponent;\n\n return {\n ...tpl,\n components: [...tpl.components, reviewComponent],\n };\n }, []);\n\n const ensureVerificationProgressStep = useCallback((tpl: KYCTemplate): KYCTemplate => {\n const hasVerification = tpl.components.some(c => c.type === 'verification_progress');\n if (hasVerification) return tpl;\n\n const lastOrder = tpl.components.reduce((acc, c) => Math.max(acc, c.order ?? 0), 0);\n const lastId = tpl.components.reduce((acc, c) => Math.max(acc, c.id), 0);\n\n const verificationComponent: TemplateComponent = {\n id: lastId + 2,\n type: 'verification_progress',\n order: lastOrder + 2,\n labels: { en: 'Verification', fr: 'Vérification' },\n instructions: { en: 'We\\'re reviewing your documents', fr: 'Nous analysons vos documents' },\n ui: { buttonText: { en: '', fr: '' } },\n // @ts-ignore - config unused for progress component\n config: {},\n } as TemplateComponent;\n\n return {\n ...tpl,\n components: [...tpl.components, verificationComponent],\n };\n }, []);\n\n const templateWithReview = useMemo(() => ensureReviewSubmitStep(template), [template, ensureReviewSubmitStep]);\n const templateWithReviewAndVerification = useMemo(() => ensureVerificationProgressStep(templateWithReview), [templateWithReview, ensureVerificationProgressStep]);\n\n // État initial du flux\n const buildInitialState = (): TemplateState => ({\n template: templateWithReviewAndVerification,\n currentComponentIndex: 0,\n completedComponents: [],\n componentData: {},\n errors: {},\n isProcessing: false,\n currentLanguage: initialLanguage,\n showCustomStepper: true,\n session: {\n session_id: '',\n token: '',\n isInitialized: false,\n isProcessing: false,\n error: null,\n },\n verification: {\n status: 'idle',\n },\n });\n\n // État du flux\n const [state, setState] = useState<TemplateState>(() => buildInitialState());\n const mapComponentTypeToAction = useCallback((type: TemplateComponent['type']): string | null => {\n switch (type) {\n case 'id_card':\n case 'file_upload':\n return 'document_upload';\n case 'selfie':\n return 'selfie_capture';\n case 'location':\n return 'location_permission';\n case 'review_submit':\n return 'final_submit';\n case 'country_selection':\n // No direct backend action; pack into metadata of next actionable step\n return null;\n case 'initialization':\n return 'initialize_session';\n case 'verification_progress':\n return null; // UI-only\n default:\n return null;\n }\n }, []);\n\n const chooseTemplateId = useCallback((tpl: KYCTemplate): string => {\n const types = tpl.components.map(c => c.type);\n const hasLocation = types.includes('location');\n const hasSelfie = types.includes('selfie');\n const hasIdDoc = types.includes('id_card') || types.includes('file_upload');\n // Simple heuristic to map to backend examples\n if (hasLocation && hasSelfie && hasIdDoc) return 'enhanced_id';\n if (hasSelfie && hasIdDoc) return 'standard_passport';\n return 'standard_passport';\n }, []);\n\n\n const computeServerStepIndex = useCallback((tpl: KYCTemplate, upToIndex: number): number => {\n // Count actionable steps before the current component (exclude UI-only and country_selection)\n const actionable = tpl.components\n .slice(0, upToIndex)\n .filter(c => !isUiOnlyStep(c.type) && mapComponentTypeToAction(c.type) !== null);\n return actionable.length; // 0-based\n }, [isUiOnlyStep, mapComponentTypeToAction]);\n\n // Build backend-friendly payloads per action\n const buildPayloadForComponent = useCallback((action: string | null, component: TemplateComponent, rawData: any, templateId: string, step: number) => {\n const base = { template_id: null, step: component.order, permissionGranted: true } as any;\n if (!action) {\n return base;\n }\n // Document upload expects an array of documents with base64 and metadata\n if (action === 'document_upload') {\n const documents: Record<string, any> = {};\n if (rawData && typeof rawData === 'object') {\n Object.keys(rawData).forEach((key) => {\n documents[key] = rawData[key];\n });\n }\n return {\n ...base,\n documents,\n };\n }\n\n if (action === 'selfie_capture') {\n const documents: Record<string, any> = {};\n if (rawData && typeof rawData === 'object') {\n\n Object.keys(rawData).forEach((key) => {\n documents[key] = rawData[key];\n });\n }\n const idCardID = Object.keys(state.componentData).find((c: string) => c === \"1\");\n if (idCardID) {\n const _idCardData = state.componentData[idCardID];\n return { ...base, documents, country: _idCardData?.country || '', documentType: _idCardData?.documentType as GovernmentDocumentType || 'identity_card' };\n }\n // return { ...base, documents };\n }\n\n if (action === 'location_permission') {\n return { ...base, ...({ metadata: rawData || {} }), ...({ permissionGranted: true, }) };\n }\n\n // Default: wrap as metadata\n return { ...base, metadata: { ...(rawData || {}) } };\n }, [state.componentData]);\n // Ensure the template contains a final review step\n\n\n\n\n\n // Composant actuel\n const currentComponent = useMemo(() => {\n return state.template.components[state.currentComponentIndex] || null;\n }, [state.template.components, state.currentComponentIndex]);\n\n // Progression du flux\n const progress = useMemo(() => {\n return state.template.components.length > 0\n ? ((state.currentComponentIndex + 1) / state.template.components.length) * 100\n : 0;\n }, [state.currentComponentIndex, state.template.components.length]);\n\n // Vérifications de navigation\n const canGoNext = useMemo(() => {\n return state.currentComponentIndex < state.template.components.length - 1;\n }, [state.currentComponentIndex, state.template.components.length]);\n\n const canGoPrevious = useMemo(() => {\n return state.currentComponentIndex > 0;\n }, [state.currentComponentIndex]);\n\n const isComplete = useMemo(() => {\n const atReview = state.template.components[state.currentComponentIndex]?.type === 'review_submit';\n const nonReviewCount = state.template.components.filter(c => c.type !== 'review_submit').length;\n const completedNonReview = state.completedComponents.length >= nonReviewCount;\n return atReview && completedNonReview;\n }, [state.currentComponentIndex, state.completedComponents.length, state.template.components]);\n\n // Fonction pour obtenir le texte localisé\n const getLocalizedText = useCallback((text: { en: string; fr: string;[key: string]: string }): string => {\n return text[state.currentLanguage] || text.en || '';\n }, [state.currentLanguage]);\n\n const initializeSession = useCallback(async () => {\n try {\n setState(prev => ({\n ...prev,\n session: {\n ...prev.session,\n isInitialized: false,\n isProcessing: true,\n error: null,\n },\n }));\n logger.log('Initializing session');\n\n const token = await authentification();\n\n const session = await kycService.newSession(token);\n\n // Align backend flow from step 0 with initialize_session\n try {\n const templateId = chooseTemplateId(templateWithReviewAndVerification);\n await kycService.verificationSession({\n session_id: session.session_id,\n step: 0,\n data: { template_id: templateId, metadata: { language: initialLanguage } },\n templateId: templateId,\n token: token,\n action: 'initialize_session'\n });\n } catch (e) {\n logger.error('Error initializing session:', JSON.stringify(e, null, 2));\n // Non-fatal: we will surface errors via state below if needed\n }\n\n setState(prev => ({\n ...prev,\n session: {\n ...prev.session,\n session_id: session.session_id,\n token: token,\n isInitialized: true,\n isProcessing: false,\n error: null,\n }\n }));\n } catch (error) {\n\n logger.error('Error initializing session:', JSON.stringify(error, null, 2));\n setState(prev => ({\n ...prev,\n session: {\n ...prev.session,\n isInitialized: false,\n isProcessing: false,\n error: \"Erreur lors de l'initialisation de la session\",\n },\n }));\n }\n }, []);\n // Validation d'un composant\n const validateComponent = useCallback((componentId: number): boolean => {\n const component = state.template.components.find(c => c.id === componentId);\n if (!component) return false;\n\n const componentData = state.componentData[componentId];\n\n switch (component.type) {\n case 'id_card':\n // Vérifier si au moins un côté a été capturé\n return componentData && Object.keys(componentData).length > 0;\n\n case 'selfie':\n // Vérifier si toutes les orientations ont été capturées\n const config = component.config as any;\n const orientations = config.orientations || ['front'];\n return componentData && orientations.every((orientation: string) => componentData[orientation]);\n\n case 'file_upload':\n // Vérifier si un fichier a été uploadé\n return componentData && componentData.file;\n\n case 'location':\n // Vérifier si la localisation a été obtenue\n return componentData && componentData.latitude && componentData.longitude;\n\n case 'country_selection':\n // Vérifier si un pays a été sélectionné\n logger.log(\"componentData\", truncateFields(componentData), componentId);\n\n return componentData && componentData.code && componentData.regionMapping;\n\n case 'review_submit':\n return true;\n default:\n return false;\n }\n }, [state.template.components, state.componentData]);\n\n // Actions du flux\n const actions: TemplateActions = {\n // Initialiser le template\n initializeTemplate: useCallback((newTemplate: KYCTemplate) => {\n const withReview = ensureReviewSubmitStep(newTemplate);\n const withVerification = ensureVerificationProgressStep(withReview);\n setState(prev => ({\n ...prev,\n template: withVerification,\n currentComponentIndex: 0,\n completedComponents: [],\n componentData: {},\n errors: {},\n isProcessing: false,\n verification: { status: 'idle', result: undefined },\n }));\n }, [ensureReviewSubmitStep, ensureVerificationProgressStep]),\n\n // Passer au composant suivant\n nextComponent: useCallback(async () => {\n if (!canGoNext) return;\n\n const currentComp = state.template.components[state.currentComponentIndex];\n if (!currentComp) return;\n\n setState(prev => ({\n ...prev,\n isProcessing: true,\n }));\n // Valider le composant actuel\n if (!validateComponent(currentComp.id)) {\n setState(prev => ({\n ...prev,\n isProcessing: false,\n errors: {\n ...prev.errors,\n [currentComp.id]: state.currentLanguage === \"en\" ? \"please complete this step before move on\" : \" 'Veuillez compléter cette étape avant de continuer'\"\n }\n }));\n return;\n\n }\n\n try {\n const component = state.template.components.find(c => c.id === currentComp.id);\n if (!component) return;\n if (component.type === 'review_submit') {\n // Move to verification screen and mark verification in progress\n setState(prev => ({\n ...prev,\n currentComponentIndex: prev.currentComponentIndex + 1,\n completedComponents: [...prev.completedComponents, currentComp.id],\n isProcessing: false,\n verification: { status: 'in_progress' },\n errors: {\n ...prev.errors,\n [currentComp.id]: ''\n }\n }));\n return;\n }\n // Determine backend action and step index\n const action = mapComponentTypeToAction(component.type);\n const templateId = chooseTemplateId(state.template);\n const serverStep = computeServerStepIndex(state.template, state.currentComponentIndex);\n\n // Optionally send initialize_session at step 0 before first actionable action\n if (serverStep === 0) {\n try {\n // await kycService.verificationSession({\n // sessionId: state.session.session_id,\n // step: 0,\n // data: { template_id: templateId, metadata: { language: state.currentLanguage } },\n // templateId: templateId,\n // token: state.session.token,\n // action: 'initialize_session'\n // });\n } catch (e) {\n // if init fails, surface error below in the main call handling\n }\n }\n\n // Skip UI-only and data-only steps that have no backend action\n if (!action) {\n setState(prev => ({\n ...prev,\n currentComponentIndex: prev.currentComponentIndex + 1,\n completedComponents: [...prev.completedComponents, currentComp.id],\n isProcessing: false,\n errors: {\n ...prev.errors,\n [currentComp.id]: ''\n }\n }));\n return;\n }\n\n const step = serverStep === 0 && action !== 'initialize_session' ? 1 : serverStep;\n // Build payload data per action\n const payloadData = buildPayloadForComponent(action, component, state.componentData[currentComp.id], templateId, step);\n\n await kycService.verificationSession({\n session_id: state.session.session_id,\n step: step,\n data: payloadData,\n templateId: null,\n token: state.session.token,\n action: action\n });\n logger.log(\"currentComp state\", truncateFields(state));\n // Marquer comme complété et passer au suivant\n setState(prev => ({\n ...prev,\n currentComponentIndex: prev.currentComponentIndex + 1,\n completedComponents: [...prev.completedComponents, currentComp.id],\n isProcessing: false,\n ...(action === \"location_permission\" ? { permissionGranted: true } : {}),\n errors: {\n ...prev.errors,\n [currentComp.id]: ''\n }\n }));\n\n } catch (error) {\n // console.error('Error validating component:', error);\n setState(prev => ({\n ...prev,\n isProcessing: false,\n errors: {\n ...prev.errors,\n [currentComp.id]: 'Erreur lors de la validation du composant'\n }\n }));\n }\n\n }, [canGoNext, state.currentComponentIndex, state.template.components, validateComponent]),\n\n // Retourner au composant précédent\n previousComponent: useCallback(() => {\n if (!canGoPrevious) return;\n\n setState(prev => ({\n ...prev,\n currentComponentIndex: prev.currentComponentIndex - 1,\n }));\n }, [canGoPrevious]),\n\n // Aller à un composant spécifique\n goToComponent: useCallback((componentId: number) => {\n const componentIndex = state.template.components.findIndex(c => c.id === componentId);\n if (componentIndex !== -1) {\n setState(prev => ({\n ...prev,\n currentComponentIndex: componentIndex,\n }));\n }\n }, [state.template.components]),\n\n // Mettre à jour les données d'un composant\n updateComponentData: useCallback((componentId: number, data: any) => {\n logger.log(\"updateComponentData\", componentId, JSON.stringify(truncateFields(data), null, 2));\n\n setState(prev => ({\n ...prev,\n componentData: {\n ...prev.componentData,\n [componentId]: data\n },\n errors: {\n ...prev.errors,\n [componentId]: ''\n }\n }));\n\n }, []),\n\n // Valider un composant\n validateComponent: useCallback((componentId: number) => {\n return validateComponent(componentId);\n }, [validateComponent]),\n // complet verification\n submitVerification: useCallback(async () => {\n setState(prev => ({ ...prev, isProcessing: true }));\n try {\n onComplete?.(state.verification);\n\n } catch (error) {\n setState(prev => ({ ...prev, isProcessing: false }));\n }\n }, [state.session.session_id, state.verification, onComplete]),\n \n // Soumettre le template complet\n submitTemplate: useCallback(async () => {\n // Allow submission when on the review step and all previous steps are valid\n const atReview = state.template.components[state.currentComponentIndex]?.type === 'review_submit';\n const allValid = state.template.components\n .filter(c => c.type !== 'review_submit')\n .every(comp => validateComponent(comp.id));\n if (!(atReview && allValid)) {\n onError?.('Le flux KYC n\\'est pas encore terminé');\n return;\n }\n\n setState(prev => ({ ...prev, isProcessing: true }));\n\n try {\n // Vérifier que tous les composants (hors review) sont validés\n if (!allValid) throw new Error('Certaines étapes ne sont pas complètes');\n\n // Appeler le callback de completion\n // onComplete?.(state.componentData);\n\n setState(prev => ({ ...prev, isProcessing: false }));\n } catch (error) {\n setState(prev => ({ ...prev, isProcessing: false }));\n onError?.(error instanceof Error ? error.message : 'Erreur lors de la soumission');\n }\n }, [state.template.components, state.verification, state.currentComponentIndex, validateComponent, state.componentData, onComplete, onError]),\n\n // Réinitialiser le template\n resetTemplate: useCallback(() => {\n setState(buildInitialState());\n }, [buildInitialState]),\n\n // Changer la langue\n setLanguage: useCallback((language: string) => {\n setState(prev => ({\n ...prev,\n currentLanguage: language,\n }));\n }, []),\n\n // Afficher le stepper personnalisé\n showCustomStepper: useCallback((show: boolean) => {\n setState(prev => ({\n ...prev,\n showCustomStepper: show,\n }));\n }, []),\n\n setVerificationState: useCallback((verificationState) => {\n setState(prev => ({\n ...prev,\n verification: verificationState,\n }));\n }, []),\n };\n\n return {\n state,\n actions,\n currentComponent,\n progress,\n canGoNext,\n canGoPrevious,\n isComplete,\n getLocalizedText,\n initializeSession,\n };\n}; "]}
|
|
1
|
+
{"version":3,"file":"useTemplateKYCFlow.js","sourceRoot":"","sources":["../../src/hooks/useTemplateKYCFlow.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState, useCallback, useMemo, createContext, useContext, ReactNode, useEffect } from 'react';\nimport { KYCTemplate, TemplateState, TemplateActions, UseTemplateReturn, TemplateComponent, GovernmentDocumentType, VerificationState } from '../types/KYC.types';\nimport kycService, { authentification, truncateFields } from '../modules/api/KYCService';\nimport useI18n from './useI18n';\nimport { logger } from '../utils/logger';\n\n// Context pour le provider\ninterface TemplateKYCFlowContextType {\n state: TemplateState;\n actions: TemplateActions;\n currentComponent: any;\n progress: number;\n canGoNext: boolean;\n canGoPrevious: boolean;\n isComplete: boolean;\n getLocalizedText: (text: { en: string; fr: string;[key: string]: string }) => string;\n initializeSession: () => Promise<void>;\n}\n\nconst TemplateKYCFlowContext = createContext<TemplateKYCFlowContextType | undefined>(undefined);\n\n// Provider component\ninterface TemplateKYCFlowProviderProps {\n children: ReactNode;\n template: KYCTemplate;\n onComplete?: (data: VerificationState) => void;\n onError?: (error: string) => void;\n onCancel?: () => void;\n initialLanguage?: string;\n apiKey?: string;\n}\n\nexport const TemplateKYCFlowProvider: React.FC<TemplateKYCFlowProviderProps> = ({\n children,\n template,\n onComplete,\n onError,\n onCancel,\n initialLanguage = 'en',\n apiKey,\n}) => {\n const hookResult = useTemplateKYCFlow(template, onComplete, onError, onCancel, initialLanguage, apiKey);\n\n return (\n <TemplateKYCFlowContext.Provider value={hookResult}>\n {children}\n </TemplateKYCFlowContext.Provider>\n );\n};\n\n// Hook pour utiliser le context\nexport const useTemplateKYCFlowContext = (): TemplateKYCFlowContextType => {\n const context = useContext(TemplateKYCFlowContext);\n if (!context) {\n throw new Error('useTemplateKYCFlowContext must be used within a TemplateKYCFlowProvider');\n }\n return context;\n};\n\nexport const useTemplateKYCFlow = (\n template: KYCTemplate,\n onComplete?: (data: VerificationState) => void,\n onError?: (error: string) => void,\n onCancel?: () => void,\n initialLanguage: string = 'en',\n apiKey?: string,\n): UseTemplateReturn => {\n\n const { setLocale } = useI18n();\n\n useEffect(() => {\n setLocale(initialLanguage);\n }, [initialLanguage]);\n\n // Helpers to align SDK steps with backend actions/templates\n const isUiOnlyStep = useCallback((type: TemplateComponent['type']) => {\n return type === 'verification_progress';\n }, []);\n\n\n\n const ensureReviewSubmitStep = useCallback((tpl: KYCTemplate): KYCTemplate => {\n const hasReview = tpl.components.some(c => c.type === 'review_submit');\n if (hasReview) return tpl;\n\n const lastOrder = tpl.components.reduce((acc, c) => Math.max(acc, c.order ?? 0), 0);\n const lastId = tpl.components.reduce((acc, c) => Math.max(acc, c.id), 0);\n\n const reviewComponent: TemplateComponent = {\n id: lastId + 1,\n type: 'review_submit',\n order: lastOrder + 1,\n labels: { en: 'Review & Submit', fr: 'Revoir & Soumettre' },\n instructions: { en: 'Confirm and submit', fr: 'Confirmer et soumettre' },\n ui: { buttonText: { en: 'Complete Verification', fr: 'Terminer la vérification' } },\n // @ts-ignore - config unused for review component\n config: {},\n } as TemplateComponent;\n\n return {\n ...tpl,\n components: [...tpl.components, reviewComponent],\n };\n }, []);\n\n const ensureVerificationProgressStep = useCallback((tpl: KYCTemplate): KYCTemplate => {\n const hasVerification = tpl.components.some(c => c.type === 'verification_progress');\n if (hasVerification) return tpl;\n\n const lastOrder = tpl.components.reduce((acc, c) => Math.max(acc, c.order ?? 0), 0);\n const lastId = tpl.components.reduce((acc, c) => Math.max(acc, c.id), 0);\n\n const verificationComponent: TemplateComponent = {\n id: lastId + 2,\n type: 'verification_progress',\n order: lastOrder + 2,\n labels: { en: 'Verification', fr: 'Vérification' },\n instructions: { en: 'We\\'re reviewing your documents', fr: 'Nous analysons vos documents' },\n ui: { buttonText: { en: '', fr: '' } },\n // @ts-ignore - config unused for progress component\n config: {},\n } as TemplateComponent;\n\n return {\n ...tpl,\n components: [...tpl.components, verificationComponent],\n };\n }, []);\n\n const templateWithReview = useMemo(() => ensureReviewSubmitStep(template), [template, ensureReviewSubmitStep]);\n const templateWithReviewAndVerification = useMemo(() => ensureVerificationProgressStep(templateWithReview), [templateWithReview, ensureVerificationProgressStep]);\n\n // État initial du flux\n const buildInitialState = (): TemplateState => ({\n template: templateWithReviewAndVerification,\n currentComponentIndex: 0,\n completedComponents: [],\n componentData: {},\n errors: {},\n isProcessing: false,\n currentLanguage: initialLanguage,\n showCustomStepper: true,\n session: {\n session_id: '',\n token: '',\n isInitialized: false,\n isProcessing: false,\n error: null,\n },\n verification: {\n status: 'idle',\n },\n });\n\n // État du flux\n const [state, setState] = useState<TemplateState>(() => buildInitialState());\n const mapComponentTypeToAction = useCallback((type: TemplateComponent['type']): string | null => {\n switch (type) {\n case 'id_card':\n case 'file_upload':\n return 'document_upload';\n case 'selfie':\n return 'selfie_capture';\n case 'location':\n return 'location_permission';\n case 'review_submit':\n return 'final_submit';\n case 'country_selection':\n // No direct backend action; pack into metadata of next actionable step\n return null;\n case 'initialization':\n return 'initialize_session';\n case 'verification_progress':\n return null; // UI-only\n default:\n return null;\n }\n }, []);\n\n const chooseTemplateId = useCallback((tpl: KYCTemplate): string => {\n const types = tpl.components.map(c => c.type);\n const hasLocation = types.includes('location');\n const hasSelfie = types.includes('selfie');\n const hasIdDoc = types.includes('id_card') || types.includes('file_upload');\n // Simple heuristic to map to backend examples\n if (hasLocation && hasSelfie && hasIdDoc) return 'enhanced_id';\n if (hasSelfie && hasIdDoc) return 'standard_passport';\n return 'standard_passport';\n }, []);\n\n\n const computeServerStepIndex = useCallback((tpl: KYCTemplate, upToIndex: number): number => {\n // Count actionable steps before the current component (exclude UI-only and country_selection)\n const actionable = tpl.components\n .slice(0, upToIndex)\n .filter(c => !isUiOnlyStep(c.type) && mapComponentTypeToAction(c.type) !== null);\n return actionable.length; // 0-based\n }, [isUiOnlyStep, mapComponentTypeToAction]);\n\n // Build backend-friendly payloads per action\n const buildPayloadForComponent = useCallback((action: string | null, component: TemplateComponent, rawData: any, templateId: string, step: number) => {\n const base = { template_id: null, step: component.order, permissionGranted: true } as any;\n if (!action) {\n return base;\n }\n // Document upload expects an array of documents with base64 and metadata\n if (action === 'document_upload') {\n const documents: Record<string, any> = {};\n if (rawData && typeof rawData === 'object') {\n Object.keys(rawData).forEach((key) => {\n documents[key] = rawData[key];\n });\n }\n return {\n ...base,\n documents,\n };\n }\n\n if (action === 'selfie_capture') {\n const documents: Record<string, any> = {};\n if (rawData && typeof rawData === 'object') {\n\n Object.keys(rawData).forEach((key) => {\n documents[key] = rawData[key];\n });\n }\n const idCardID = Object.keys(state.componentData).find((c: string) => c === \"1\");\n if (idCardID) {\n const _idCardData = state.componentData[idCardID];\n return { ...base, documents, country: _idCardData?.country || '', documentType: _idCardData?.documentType as GovernmentDocumentType || 'identity_card' };\n }\n // return { ...base, documents };\n }\n\n if (action === 'location_permission') {\n return { ...base, ...({ metadata: rawData || {} }), ...({ permissionGranted: true, }) };\n }\n\n // Default: wrap as metadata\n return { ...base, metadata: { ...(rawData || {}) } };\n }, [state.componentData]);\n // Ensure the template contains a final review step\n\n\n\n\n\n // Composant actuel\n const currentComponent = useMemo(() => {\n return state.template.components[state.currentComponentIndex] || null;\n }, [state.template.components, state.currentComponentIndex]);\n\n // Progression du flux\n const progress = useMemo(() => {\n return state.template.components.length > 0\n ? ((state.currentComponentIndex + 1) / state.template.components.length) * 100\n : 0;\n }, [state.currentComponentIndex, state.template.components.length]);\n\n // Vérifications de navigation\n const canGoNext = useMemo(() => {\n return state.currentComponentIndex < state.template.components.length - 1;\n }, [state.currentComponentIndex, state.template.components.length]);\n\n const canGoPrevious = useMemo(() => {\n return state.currentComponentIndex > 0;\n }, [state.currentComponentIndex]);\n\n const isComplete = useMemo(() => {\n const atReview = state.template.components[state.currentComponentIndex]?.type === 'review_submit';\n const nonReviewCount = state.template.components.filter(c => c.type !== 'review_submit').length;\n const completedNonReview = state.completedComponents.length >= nonReviewCount;\n return atReview && completedNonReview;\n }, [state.currentComponentIndex, state.completedComponents.length, state.template.components]);\n\n // Fonction pour obtenir le texte localisé\n const getLocalizedText = useCallback((text: { en: string; fr: string;[key: string]: string }): string => {\n return text[state.currentLanguage] || text.en || '';\n }, [state.currentLanguage]);\n\n const initializeSession = useCallback(async () => {\n try {\n setState(prev => ({\n ...prev,\n session: {\n ...prev.session,\n isInitialized: false,\n isProcessing: true,\n error: null,\n },\n }));\n logger.log('Initializing session');\n\n const token = await authentification();\n\n const session = await kycService.newSession(token);\n\n // Align backend flow from step 0 with initialize_session\n try {\n const templateId = chooseTemplateId(templateWithReviewAndVerification);\n await kycService.verificationSession({\n session_id: session.session_id,\n step: 0,\n data: { template_id: templateId, metadata: { language: initialLanguage } },\n templateId: templateId,\n token: token,\n action: 'initialize_session'\n });\n } catch (e) {\n logger.error('Error initializing session:', JSON.stringify(e, null, 2));\n // Non-fatal: we will surface errors via state below if needed\n }\n\n setState(prev => ({\n ...prev,\n session: {\n ...prev.session,\n session_id: session.session_id,\n token: token,\n isInitialized: true,\n isProcessing: false,\n error: null,\n }\n }));\n } catch (error) {\n\n logger.error('Error initializing session:', JSON.stringify(error, null, 2));\n setState(prev => ({\n ...prev,\n session: {\n ...prev.session,\n isInitialized: false,\n isProcessing: false,\n error: \"Erreur lors de l'initialisation de la session\",\n },\n }));\n }\n }, []);\n // Validation d'un composant\n const validateComponent = useCallback((componentId: number): boolean => {\n const component = state.template.components.find(c => c.id === componentId);\n if (!component) return false;\n\n const componentData = state.componentData[componentId];\n\n switch (component.type) {\n case 'id_card':\n // Vérifier si au moins un côté a été capturé\n return componentData && Object.keys(componentData).length > 0;\n\n case 'selfie':\n // Vérifier si toutes les orientations ont été capturées\n const config = component.config as any;\n const orientations = config.orientations || ['front'];\n return componentData && orientations.every((orientation: string) => componentData[orientation]);\n\n case 'file_upload':\n // Vérifier si un fichier a été uploadé\n return componentData && componentData.file;\n\n case 'location':\n // Vérifier si la localisation a été obtenue\n return componentData && componentData.latitude && componentData.longitude;\n\n case 'country_selection':\n // Vérifier si un pays a été sélectionné\n logger.log(\"componentData\", truncateFields(componentData), componentId);\n\n return componentData && componentData.code && componentData.regionMapping;\n\n case 'review_submit':\n return true;\n default:\n return false;\n }\n }, [state.template.components, state.componentData]);\n\n // Actions du flux\n const actions: TemplateActions = {\n // Initialiser le template\n initializeTemplate: useCallback((newTemplate: KYCTemplate) => {\n const withReview = ensureReviewSubmitStep(newTemplate);\n const withVerification = ensureVerificationProgressStep(withReview);\n setState(prev => ({\n ...prev,\n template: withVerification,\n currentComponentIndex: 0,\n completedComponents: [],\n componentData: {},\n errors: {},\n isProcessing: false,\n verification: { status: 'idle', result: undefined },\n }));\n }, [ensureReviewSubmitStep, ensureVerificationProgressStep]),\n\n // Passer au composant suivant\n nextComponent: useCallback(async () => {\n if (!canGoNext) return;\n\n const currentComp = state.template.components[state.currentComponentIndex];\n if (!currentComp) return;\n\n setState(prev => ({\n ...prev,\n isProcessing: true,\n }));\n // Valider le composant actuel\n if (!validateComponent(currentComp.id)) {\n setState(prev => ({\n ...prev,\n isProcessing: false,\n errors: {\n ...prev.errors,\n [currentComp.id]: state.currentLanguage === \"en\" ? \"please complete this step before move on\" : \" 'Veuillez compléter cette étape avant de continuer'\"\n }\n }));\n return;\n\n }\n\n try {\n const component = state.template.components.find(c => c.id === currentComp.id);\n if (!component) return;\n if (component.type === 'review_submit') {\n // Move to verification screen and mark verification in progress\n setState(prev => ({\n ...prev,\n currentComponentIndex: prev.currentComponentIndex + 1,\n completedComponents: [...prev.completedComponents, currentComp.id],\n isProcessing: false,\n verification: { status: 'in_progress' },\n errors: {\n ...prev.errors,\n [currentComp.id]: ''\n }\n }));\n return;\n }\n // Determine backend action and step index\n const action = mapComponentTypeToAction(component.type);\n const templateId = chooseTemplateId(state.template);\n const serverStep = computeServerStepIndex(state.template, state.currentComponentIndex);\n\n // Optionally send initialize_session at step 0 before first actionable action\n if (serverStep === 0) {\n try {\n // await kycService.verificationSession({\n // sessionId: state.session.session_id,\n // step: 0,\n // data: { template_id: templateId, metadata: { language: state.currentLanguage } },\n // templateId: templateId,\n // token: state.session.token,\n // action: 'initialize_session'\n // });\n } catch (e) {\n // if init fails, surface error below in the main call handling\n }\n }\n\n // Skip UI-only and data-only steps that have no backend action\n if (!action) {\n setState(prev => ({\n ...prev,\n currentComponentIndex: prev.currentComponentIndex + 1,\n completedComponents: [...prev.completedComponents, currentComp.id],\n isProcessing: false,\n errors: {\n ...prev.errors,\n [currentComp.id]: ''\n }\n }));\n return;\n }\n\n const step = serverStep === 0 && action !== 'initialize_session' ? 1 : serverStep;\n // Build payload data per action\n const payloadData = buildPayloadForComponent(action, component, state.componentData[currentComp.id], templateId, step);\n\n await kycService.verificationSession({\n session_id: state.session.session_id,\n step: step,\n data: payloadData,\n templateId: null,\n token: state.session.token,\n action: action,\n apiKey: apiKey,\n });\n logger.log(\"currentComp state\", truncateFields(state));\n // Marquer comme complété et passer au suivant\n setState(prev => ({\n ...prev,\n currentComponentIndex: prev.currentComponentIndex + 1,\n completedComponents: [...prev.completedComponents, currentComp.id],\n isProcessing: false,\n ...(action === \"location_permission\" ? { permissionGranted: true } : {}),\n errors: {\n ...prev.errors,\n [currentComp.id]: ''\n }\n }));\n\n } catch (error) {\n // console.error('Error validating component:', error);\n setState(prev => ({\n ...prev,\n isProcessing: false,\n errors: {\n ...prev.errors,\n [currentComp.id]: 'Erreur lors de la validation du composant'\n }\n }));\n }\n\n }, [canGoNext, state.currentComponentIndex, state.template.components, validateComponent, apiKey]),\n\n // Retourner au composant précédent\n previousComponent: useCallback(() => {\n if (!canGoPrevious) return;\n\n setState(prev => ({\n ...prev,\n currentComponentIndex: prev.currentComponentIndex - 1,\n }));\n }, [canGoPrevious]),\n\n // Aller à un composant spécifique\n goToComponent: useCallback((componentId: number) => {\n const componentIndex = state.template.components.findIndex(c => c.id === componentId);\n if (componentIndex !== -1) {\n setState(prev => ({\n ...prev,\n currentComponentIndex: componentIndex,\n }));\n }\n }, [state.template.components]),\n\n // Mettre à jour les données d'un composant\n updateComponentData: useCallback((componentId: number, data: any) => {\n logger.log(\"updateComponentData\", componentId, JSON.stringify(truncateFields(data), null, 2));\n\n setState(prev => ({\n ...prev,\n componentData: {\n ...prev.componentData,\n [componentId]: data\n },\n errors: {\n ...prev.errors,\n [componentId]: ''\n }\n }));\n\n }, []),\n\n // Valider un composant\n validateComponent: useCallback((componentId: number) => {\n return validateComponent(componentId);\n }, [validateComponent]),\n // complet verification\n submitVerification: useCallback(async () => {\n setState(prev => ({ ...prev, isProcessing: true }));\n try {\n onComplete?.(state.verification);\n\n } catch (error) {\n setState(prev => ({ ...prev, isProcessing: false }));\n }\n }, [state.session.session_id, state.verification, onComplete]),\n\n // Soumettre le template complet\n submitTemplate: useCallback(async () => {\n // Allow submission when on the review step and all previous steps are valid\n const atReview = state.template.components[state.currentComponentIndex]?.type === 'review_submit';\n const allValid = state.template.components\n .filter(c => c.type !== 'review_submit')\n .every(comp => validateComponent(comp.id));\n if (!(atReview && allValid)) {\n onError?.('Le flux KYC n\\'est pas encore terminé');\n return;\n }\n\n setState(prev => ({ ...prev, isProcessing: true }));\n\n try {\n // Vérifier que tous les composants (hors review) sont validés\n if (!allValid) throw new Error('Certaines étapes ne sont pas complètes');\n\n // Appeler le callback de completion\n // onComplete?.(state.componentData);\n\n setState(prev => ({ ...prev, isProcessing: false }));\n } catch (error) {\n setState(prev => ({ ...prev, isProcessing: false }));\n onError?.(error instanceof Error ? error.message : 'Erreur lors de la soumission');\n }\n }, [state.template.components, state.verification, state.currentComponentIndex, validateComponent, state.componentData, onComplete, onError]),\n\n // Réinitialiser le template\n resetTemplate: useCallback(() => {\n setState(buildInitialState());\n }, [buildInitialState]),\n\n // Changer la langue\n setLanguage: useCallback((language: string) => {\n setState(prev => ({\n ...prev,\n currentLanguage: language,\n }));\n }, []),\n\n // Afficher le stepper personnalisé\n showCustomStepper: useCallback((show: boolean) => {\n setState(prev => ({\n ...prev,\n showCustomStepper: show,\n }));\n }, []),\n\n setVerificationState: useCallback((verificationState) => {\n setState(prev => ({\n ...prev,\n verification: verificationState,\n }));\n }, []),\n };\n\n return {\n state,\n actions,\n currentComponent,\n progress,\n canGoNext,\n canGoPrevious,\n isComplete,\n getLocalizedText,\n initializeSession,\n };\n}; "]}
|
package/build/index.d.ts
CHANGED
|
@@ -1,35 +1,5 @@
|
|
|
1
|
-
export { default } from './TransfergratisSdkModule';
|
|
2
|
-
export { default as TransfergratisSdkView } from './TransfergratisSdkView';
|
|
3
1
|
export * from './TransfergratisSdk.types';
|
|
4
|
-
export { default as LauchTransferGratisKYC } from './App';
|
|
5
2
|
export * from './types/KYC.types';
|
|
6
|
-
export {
|
|
7
|
-
export { default as VisionCameraModule } from './modules/camera/VisionCameraModule';
|
|
8
|
-
export { default as UnifiedCameraModule } from './modules/camera/UnifiedCameraModule';
|
|
9
|
-
export { NativeCameraView } from './components/NativeCameraView';
|
|
10
|
-
export { VisionCameraView } from './components/VisionCameraView';
|
|
11
|
-
export { EnhancedCameraView } from './components/EnhancedCameraView';
|
|
12
|
-
export { SelfieCapture } from './components/SelfieCapture';
|
|
13
|
-
export { FileUpload } from './components/FileUpload';
|
|
14
|
-
export { CustomCameraExample } from './components/CustomCameraExample';
|
|
15
|
-
export { default as OrientationVideoCapture } from './components/KYCElements/OrientationVideoCapture';
|
|
16
|
-
export { default as OrientationVideoCaptureEnhanced } from './components/KYCElements/OrientationVideoCaptureEnhanced';
|
|
17
|
-
export { default as OrientationVideoCaptureFinal } from './components/KYCElements/OrientationVideoCaptureFinal';
|
|
18
|
-
export { default as OrientationVideoExample } from './components/example/OrientationVideoExample';
|
|
19
|
-
export { TemplateKYCFlow } from './components/TemplateKYCFlowRefactored';
|
|
20
|
-
export { TemplateKYCExample } from './components/TemplateKYCExample';
|
|
21
|
-
export { useTemplateKYCFlow, TemplateKYCFlowProvider, useTemplateKYCFlowContext } from './hooks/useTemplateKYCFlow';
|
|
22
|
-
export { IDCardCapture } from './components/KYCElements/IDCardCapture';
|
|
23
|
-
export { SelfieCaptureTemplate } from './components/KYCElements/SelfieCaptureTemplate';
|
|
24
|
-
export { FileUploadTemplate } from './components/KYCElements/FileUploadTemplate';
|
|
25
|
-
export { LocationCaptureTemplate } from './components/KYCElements/LocationCaptureTemplate';
|
|
26
|
-
export { CountrySelectionTemplate } from './components/KYCElements/CountrySelectionTemplate';
|
|
3
|
+
export { TemplateKYCExample as LauchTransferGratisKYC } from './components/TemplateKYCExample';
|
|
27
4
|
export { WebKYCEntry } from './web';
|
|
28
|
-
export { default as KYCService } from './modules/api/KYCService';
|
|
29
|
-
export { default as useOrientationVideo } from './hooks/useOrientationVideo';
|
|
30
|
-
export { default as useLocation } from './hooks/useLocation';
|
|
31
|
-
export type { LocationData, LocationError, UseLocationOptions, UseLocationReturn } from './hooks/useLocation';
|
|
32
|
-
export { Button, PrimaryButton, SecondaryButton, OutlineButton, GhostButton, DangerButton, SuccessButton, WarningButton, SmallButton, LargeButton, BackButton, NextButton, SubmitButton, CancelButton, buttonIcons } from './components/ui/Button';
|
|
33
|
-
export { buttonStyles, colors, shadows, buttonTextColors, iconSizes, buttonSpacing } from './components/ui/ButtonStyles';
|
|
34
|
-
export { default as ButtonExample } from './components/ui/ButtonExample';
|
|
35
5
|
//# sourceMappingURL=index.d.ts.map
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAI1C,cAAc,mBAAmB,CAAC;AAGlC,OAAO,EAAE,kBAAkB,IAAI,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAG/F,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC"}
|
package/build/index.js
CHANGED
|
@@ -1,47 +1,7 @@
|
|
|
1
|
-
// Reexport the native module. On web, it will be resolved to TransfergratisSdkModule.web.ts
|
|
2
|
-
// and on native platforms to TransfergratisSdkModule.ts
|
|
3
|
-
export { default } from './TransfergratisSdkModule';
|
|
4
|
-
export { default as TransfergratisSdkView } from './TransfergratisSdkView';
|
|
5
1
|
export * from './TransfergratisSdk.types';
|
|
6
|
-
// Export KYC Flow - Main component
|
|
7
|
-
export { default as LauchTransferGratisKYC } from './App';
|
|
8
2
|
// Export KYC types
|
|
9
3
|
export * from './types/KYC.types';
|
|
10
|
-
|
|
11
|
-
export { default as NativeCameraModule } from './modules/camera/NativeCameraModule';
|
|
12
|
-
export { default as VisionCameraModule } from './modules/camera/VisionCameraModule';
|
|
13
|
-
export { default as UnifiedCameraModule } from './modules/camera/UnifiedCameraModule';
|
|
14
|
-
// Export Camera Components
|
|
15
|
-
export { NativeCameraView } from './components/NativeCameraView'; // Legacy
|
|
16
|
-
export { VisionCameraView } from './components/VisionCameraView';
|
|
17
|
-
export { EnhancedCameraView } from './components/EnhancedCameraView';
|
|
18
|
-
// Export KYC Components
|
|
19
|
-
export { SelfieCapture } from './components/SelfieCapture';
|
|
20
|
-
export { FileUpload } from './components/FileUpload';
|
|
21
|
-
export { CustomCameraExample } from './components/CustomCameraExample';
|
|
22
|
-
// Export Orientation Video Processing Components
|
|
23
|
-
export { default as OrientationVideoCapture } from './components/KYCElements/OrientationVideoCapture';
|
|
24
|
-
export { default as OrientationVideoCaptureEnhanced } from './components/KYCElements/OrientationVideoCaptureEnhanced';
|
|
25
|
-
export { default as OrientationVideoCaptureFinal } from './components/KYCElements/OrientationVideoCaptureFinal';
|
|
26
|
-
export { default as OrientationVideoExample } from './components/example/OrientationVideoExample';
|
|
27
|
-
// Export Template-based KYC Components
|
|
28
|
-
export { TemplateKYCFlow } from './components/TemplateKYCFlowRefactored';
|
|
29
|
-
export { TemplateKYCExample } from './components/TemplateKYCExample';
|
|
30
|
-
export { useTemplateKYCFlow, TemplateKYCFlowProvider, useTemplateKYCFlowContext } from './hooks/useTemplateKYCFlow';
|
|
31
|
-
export { IDCardCapture } from './components/KYCElements/IDCardCapture';
|
|
32
|
-
export { SelfieCaptureTemplate } from './components/KYCElements/SelfieCaptureTemplate';
|
|
33
|
-
export { FileUploadTemplate } from './components/KYCElements/FileUploadTemplate';
|
|
34
|
-
export { LocationCaptureTemplate } from './components/KYCElements/LocationCaptureTemplate';
|
|
35
|
-
export { CountrySelectionTemplate } from './components/KYCElements/CountrySelectionTemplate';
|
|
4
|
+
export { TemplateKYCExample as LauchTransferGratisKYC } from './components/TemplateKYCExample';
|
|
36
5
|
// Export Web KYC Components
|
|
37
6
|
export { WebKYCEntry } from './web';
|
|
38
|
-
// Export KYC Service
|
|
39
|
-
export { default as KYCService } from './modules/api/KYCService';
|
|
40
|
-
// Export Hooks
|
|
41
|
-
export { default as useOrientationVideo } from './hooks/useOrientationVideo';
|
|
42
|
-
export { default as useLocation } from './hooks/useLocation';
|
|
43
|
-
// UI Components
|
|
44
|
-
export { Button, PrimaryButton, SecondaryButton, OutlineButton, GhostButton, DangerButton, SuccessButton, WarningButton, SmallButton, LargeButton, BackButton, NextButton, SubmitButton, CancelButton, buttonIcons } from './components/ui/Button';
|
|
45
|
-
export { buttonStyles, colors, shadows, buttonTextColors, iconSizes, buttonSpacing } from './components/ui/ButtonStyles';
|
|
46
|
-
export { default as ButtonExample } from './components/ui/ButtonExample';
|
|
47
7
|
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAG1C,mBAAmB;AACnB,cAAc,mBAAmB,CAAC;AAGlC,OAAO,EAAE,kBAAkB,IAAI,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAE/F,4BAA4B;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC","sourcesContent":["export * from './TransfergratisSdk.types';\n\n\n// Export KYC types\nexport * from './types/KYC.types';\n\n\nexport { TemplateKYCExample as LauchTransferGratisKYC } from './components/TemplateKYCExample';\n\n// Export Web KYC Components\nexport { WebKYCEntry } from './web';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KYCService.d.ts","sourceRoot":"","sources":["../../../src/modules/api/KYCService.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"KYCService.d.ts","sourceRoot":"","sources":["../../../src/modules/api/KYCService.ts"],"names":[],"mappings":"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"}
|
|
@@ -155,8 +155,8 @@ export class KYCService {
|
|
|
155
155
|
const rnFile = { uri: fileUri, type: 'image/jpeg', name: 'id_card_front.jpg' };
|
|
156
156
|
formData.append('file', rnFile);
|
|
157
157
|
const docTypeShorted = GovernmentDocumentTypeShorted[docType];
|
|
158
|
-
logger.log('checkTemplateType params', this.mrzServiceURL, JSON.stringify({ fileUri, docTypeShorted, docRegion, token, postfix }, null, 2));
|
|
159
158
|
const url = `${this.mrzServiceURL}/get_template_version/?doc_type=${encodeURIComponent(docTypeShorted)}&doc_region=${encodeURIComponent(docRegion)}&postfix=${postfix}`;
|
|
159
|
+
logger.log('checkTemplateType params', this.mrzServiceURL, JSON.stringify({ fileUri, docTypeShorted, docRegion, token, postfix, url }, null, 2));
|
|
160
160
|
try {
|
|
161
161
|
const res = await axios.post(url, formData, {
|
|
162
162
|
headers: { 'Content-Type': 'multipart/form-data', 'Authorization': `Bearer ${token}`, },
|
|
@@ -315,9 +315,9 @@ export class KYCService {
|
|
|
315
315
|
}
|
|
316
316
|
async verificationSession(payload) {
|
|
317
317
|
try {
|
|
318
|
-
const token = await authentification();
|
|
319
318
|
// /api/v1/verification/api/kyc/sessions/{session_id}/steps/{step}/
|
|
320
|
-
const { session_id, step, data, templateId, action } = payload;
|
|
319
|
+
const { session_id, step, data, templateId, action, apiKey } = payload;
|
|
320
|
+
const token = apiKey ? undefined : await authentification();
|
|
321
321
|
// const session_id = "kyc-8b4e069258d8";
|
|
322
322
|
const payloadData = {
|
|
323
323
|
action: action,
|
|
@@ -334,7 +334,7 @@ export class KYCService {
|
|
|
334
334
|
const logPayload = truncateFields({ payloadData, session_id, step });
|
|
335
335
|
logger.log('verificationSession payload', JSON.stringify(truncateFields({ logPayload, token, path: url }), null, 2));
|
|
336
336
|
const res = await axios.post(url, payloadData, {
|
|
337
|
-
headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${token}` }
|
|
337
|
+
headers: { 'Content-Type': 'application/json', ...(this.apiKey ? { 'Authorization': `ApiKey ${this.apiKey}` } : { 'Authorization': `Bearer ${token}` }) }
|
|
338
338
|
});
|
|
339
339
|
logger.log('verificationSession res', JSON.stringify(truncateFields(res.data), null, 2));
|
|
340
340
|
return res.data;
|
|
@@ -346,11 +346,17 @@ export class KYCService {
|
|
|
346
346
|
}
|
|
347
347
|
// reultat de la verification
|
|
348
348
|
async getVerificationResult(session_id) {
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
349
|
+
try {
|
|
350
|
+
const token = await authentification();
|
|
351
|
+
const url = `${this.backendServiceURL}/verification/api/kyc/result/?session_id=${session_id}`;
|
|
352
|
+
const res = await axios.get(url, { headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${token}` } });
|
|
353
|
+
logger.log('getVerificationResult res', JSON.stringify(truncateFields(res.data), null, 2));
|
|
354
|
+
return res.data;
|
|
355
|
+
}
|
|
356
|
+
catch (error) {
|
|
357
|
+
logger.error('Error getting verification result:', JSON.stringify(errorMessage(error), null, 2));
|
|
358
|
+
throw error;
|
|
359
|
+
}
|
|
354
360
|
}
|
|
355
361
|
}
|
|
356
362
|
const kycService = new KYCService("", "");
|