@sanctum-key/react-native-sdk 1.0.51 → 1.0.53

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.
Files changed (59) hide show
  1. package/android/build/intermediates/compiled_local_resources/debug/compileDebugLibraryResources/out/xml_file_paths.xml.flat +0 -0
  2. package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +2 -2
  3. package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +1 -1
  4. package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +1 -1
  5. package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +1 -1
  6. package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +1 -1
  7. package/android/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +41 -41
  8. package/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
  9. package/android/build/kotlin/compileDebugKotlin/local-state/build-history.bin +0 -0
  10. package/android/build/outputs/logs/manifest-merger-debug-report.txt +52 -52
  11. package/build/package.json +1 -1
  12. package/build/src/components/KYCElements/IDCardCapture.d.ts.map +1 -1
  13. package/build/src/components/KYCElements/IDCardCapture.js +73 -66
  14. package/build/src/components/KYCElements/IDCardCapture.js.map +1 -1
  15. package/build/src/components/TemplateKYCExample.d.ts +2 -1
  16. package/build/src/components/TemplateKYCExample.d.ts.map +1 -1
  17. package/build/src/components/TemplateKYCExample.js +20 -18
  18. package/build/src/components/TemplateKYCExample.js.map +1 -1
  19. package/build/src/components/TemplateKYCFlowRefactored.d.ts +1 -0
  20. package/build/src/components/TemplateKYCFlowRefactored.d.ts.map +1 -1
  21. package/build/src/components/TemplateKYCFlowRefactored.js +20 -20
  22. package/build/src/components/TemplateKYCFlowRefactored.js.map +1 -1
  23. package/build/src/config/KYCConfig.d.ts.map +1 -1
  24. package/build/src/config/KYCConfig.js +4 -2
  25. package/build/src/config/KYCConfig.js.map +1 -1
  26. package/build/src/hooks/useTemplateKYCFlow.d.ts +1 -0
  27. package/build/src/hooks/useTemplateKYCFlow.d.ts.map +1 -1
  28. package/build/src/hooks/useTemplateKYCFlow.js.map +1 -1
  29. package/build/src/hooks/useTemplateLoader.d.ts.map +1 -1
  30. package/build/src/hooks/useTemplateLoader.js +0 -2
  31. package/build/src/hooks/useTemplateLoader.js.map +1 -1
  32. package/build/src/modules/api/CardAuthentification.d.ts +0 -23
  33. package/build/src/modules/api/CardAuthentification.d.ts.map +1 -1
  34. package/build/src/modules/api/CardAuthentification.js +46 -83
  35. package/build/src/modules/api/CardAuthentification.js.map +1 -1
  36. package/build/src/modules/api/KYCService.d.ts.map +1 -1
  37. package/build/src/modules/api/KYCService.js +96 -38
  38. package/build/src/modules/api/KYCService.js.map +1 -1
  39. package/build/src/modules/api/SelfieVerification.d.ts.map +1 -1
  40. package/build/src/modules/api/SelfieVerification.js +12 -19
  41. package/build/src/modules/api/SelfieVerification.js.map +1 -1
  42. package/build/src/modules/api/TemplateService.d.ts.map +1 -1
  43. package/build/src/modules/api/TemplateService.js +2 -1
  44. package/build/src/modules/api/TemplateService.js.map +1 -1
  45. package/build/src/modules/api/types.d.ts +34 -27
  46. package/build/src/modules/api/types.d.ts.map +1 -1
  47. package/build/src/modules/api/types.js.map +1 -1
  48. package/package.json +1 -1
  49. package/src/components/KYCElements/IDCardCapture.tsx +192 -191
  50. package/src/components/TemplateKYCExample.tsx +29 -20
  51. package/src/components/TemplateKYCFlowRefactored.tsx +33 -31
  52. package/src/config/KYCConfig.ts +7 -5
  53. package/src/hooks/useTemplateKYCFlow.tsx +1 -0
  54. package/src/hooks/useTemplateLoader.ts +0 -2
  55. package/src/modules/api/CardAuthentification.ts +409 -445
  56. package/src/modules/api/KYCService.ts +599 -449
  57. package/src/modules/api/SelfieVerification.ts +22 -29
  58. package/src/modules/api/TemplateService.ts +3 -2
  59. package/src/modules/api/types.ts +36 -29
@@ -7,6 +7,7 @@ export interface TemplateKYCExampleProps {
7
7
  onError: (error: string) => void;
8
8
  language: string;
9
9
  API_KEY?: string;
10
+ TEST_API_KEY?: string;
10
11
  templateId?: string;
11
12
  template?: KYCTemplate;
12
13
  env?: KycEnvironment;
@@ -22,5 +23,5 @@ export interface TemplateKYCExampleProps {
22
23
  onSessionSave?: (sessionId: string) => void;
23
24
  kyc_session_id?: string;
24
25
  }
25
- export declare function TemplateKYCExample({ onComplete, onCancel, onError, language, API_KEY, templateId, template, env, serverEnv, existingSessionId, initialComponentIndex, initialCountryResume, referenceId, onSessionSave, kyc_session_id }: TemplateKYCExampleProps): JSX.Element;
26
+ export declare function TemplateKYCExample({ onComplete, onCancel, onError, language, API_KEY, TEST_API_KEY, templateId, template, env, serverEnv, existingSessionId, initialComponentIndex, initialCountryResume, referenceId, onSessionSave, kyc_session_id }: TemplateKYCExampleProps): JSX.Element;
26
27
  //# sourceMappingURL=TemplateKYCExample.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateKYCExample.d.ts","sourceRoot":"","sources":["../../../src/components/TemplateKYCExample.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAGnC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAwCxE,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC9C,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,GAAG,CAAC,EAAE,cAAc,CAAC;IACrB,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,oBAAoB,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,kBAAkB,CAAC,EACjC,UAAU,EACV,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,OAAO,EACP,UAAU,EACV,QAAQ,EACR,GAAkB,EAClB,SAAS,EACT,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,WAAW,EACX,aAAa,EACb,cAAc,EACf,EAAE,uBAAuB,GAAG,GAAG,CAAC,OAAO,CA2FvC"}
1
+ {"version":3,"file":"TemplateKYCExample.d.ts","sourceRoot":"","sources":["../../../src/components/TemplateKYCExample.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAGnC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAwCxE,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC9C,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,GAAG,CAAC,EAAE,cAAc,CAAC;IACrB,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,oBAAoB,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,kBAAkB,CAAC,EACjC,UAAU,EACV,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,OAAO,EACP,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,GAAkB,EAClB,SAAS,EACT,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,WAAW,EACX,aAAa,EACb,cAAc,EACf,EAAE,uBAAuB,GAAG,GAAG,CAAC,OAAO,CAkGvC"}
@@ -38,46 +38,48 @@ const advancedVerificationTemplate = {
38
38
  },
39
39
  ]
40
40
  };
41
- export function TemplateKYCExample({ onComplete, onCancel, onError, language, API_KEY, templateId, template, env = 'PRODUCTION', serverEnv, existingSessionId, initialComponentIndex, initialCountryResume, referenceId, onSessionSave, kyc_session_id }) {
41
+ export function TemplateKYCExample({ onComplete, onCancel, onError, language, API_KEY, TEST_API_KEY, templateId, template, env = 'PRODUCTION', serverEnv, existingSessionId, initialComponentIndex, initialCountryResume, referenceId, onSessionSave, kyc_session_id }) {
42
42
  const handleComplete = (data) => {
43
43
  console.log('KYC Template completed with raw data:', data);
44
44
  let finalPayload = data; // Fallback to raw data if mapping fails
45
45
  if ((data.status === 'success' || data.status === 'in_progress') && data.result) {
46
- // 1. Extract the dynamic root key (e.g., 'national_id', 'passport')
47
- const docKey = Object.keys(data.result)[0];
48
- if (docKey && data.result[docKey]) {
49
- const backendData = data.result[docKey].data;
50
- const personalInfo = backendData?.user_data?.personal_information || {};
46
+ // 1. Grab the backend data directly from the result (no docKey needed)
47
+ const backendData = data.result.data;
48
+ if (backendData) {
49
+ const personalInfo = backendData.user_data?.personal_information || {};
51
50
  // Ensure we capture the session ID from whichever prop was provided
52
- const activeSessionId = kyc_session_id || existingSessionId || "";
53
- // 2. Strict mapping to your expected format
51
+ const activeSessionId = kyc_session_id || existingSessionId || backendData.session_id || "";
52
+ // 2. Strict mapping to your expected format with improved fallbacks
54
53
  finalPayload = {
55
54
  data: {
56
- verification_id: backendData?.verification_id,
57
- verification_status: backendData?.verification_status,
55
+ verification_id: backendData.verification_id,
56
+ verification_status: backendData.verification_status,
58
57
  session_id: activeSessionId,
59
58
  user_data: {
60
59
  personal_information: {
61
- first_name: personalInfo.first_name || undefined,
60
+ // Safely fallback to given_name and surname if first/last are empty strings
61
+ first_name: personalInfo.first_name || personalInfo.given_name || undefined,
62
+ last_name: personalInfo.last_name || personalInfo.surname || undefined,
62
63
  given_name: personalInfo.given_name || undefined,
63
- last_name: personalInfo.last_name || undefined,
64
- surname: personalInfo.last_name || undefined, // fallback
64
+ surname: personalInfo.surname || undefined,
65
65
  address: personalInfo.address || undefined,
66
66
  city: personalInfo.city || undefined,
67
67
  postal_code: personalInfo.postal_code || undefined,
68
68
  expiry_date: personalInfo.expiry_date || undefined,
69
69
  issue_date: personalInfo.issue_date || undefined,
70
- date_of_birth: personalInfo.date_of_birth || undefined,
71
- birth_date: personalInfo.date_of_birth || undefined, // fallback
70
+ // Fallback to birth_date if date_of_birth is missing
71
+ date_of_birth: personalInfo.date_of_birth || personalInfo.birth_date || undefined,
72
+ birth_date: personalInfo.birth_date || undefined,
72
73
  country: personalInfo.country || undefined,
73
74
  document_number: personalInfo.document_number || undefined,
74
75
  nationality: personalInfo.nationality || undefined,
76
+ sex: personalInfo.sex || undefined,
75
77
  }
76
78
  }
77
79
  }
78
80
  };
79
81
  sdkLogger.info("Wrapper formatted completion payload successfully", {
80
- verification_id: finalPayload.data.verification_id
82
+ data: finalPayload
81
83
  });
82
84
  }
83
85
  }
@@ -91,13 +93,13 @@ export function TemplateKYCExample({ onComplete, onCancel, onError, language, AP
91
93
  onCancel();
92
94
  };
93
95
  const handleError = (error) => {
94
- console.error('KYC Template error:', error);
96
+ sdkLogger.error('KYC Template error:', error);
95
97
  onError(error);
96
98
  };
97
99
  const templateToUse = templateId ? undefined : (template || advancedVerificationTemplate);
98
100
  return (<SafeAreaView style={{ flex: 1, paddingVertical: 25 }}>
99
101
  <View style={{ flex: 1 }}>
100
- <TemplateKYCFlow template={templateToUse} templateId={templateId} onComplete={handleComplete} onError={handleError} onCancel={handleCancel} language={language} API_KEY={API_KEY} env={env} serverEnv={serverEnv} existingSessionId={existingSessionId} initialComponentIndex={initialComponentIndex} initialCountryResume={initialCountryResume} referenceId={referenceId} onSessionSave={onSessionSave} kyc_session_id={kyc_session_id}/>
102
+ <TemplateKYCFlow template={templateToUse} templateId={templateId} onComplete={handleComplete} onError={handleError} onCancel={handleCancel} language={language} API_KEY={API_KEY} TEST_API_KEY={TEST_API_KEY} env={env} serverEnv={serverEnv} existingSessionId={existingSessionId} initialComponentIndex={initialComponentIndex} initialCountryResume={initialCountryResume} referenceId={referenceId} onSessionSave={onSessionSave} kyc_session_id={kyc_session_id}/>
101
103
  </View>
102
104
  </SafeAreaView>);
103
105
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateKYCExample.js","sourceRoot":"","sources":["../../../src/components/TemplateKYCExample.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { JSX } from 'react';\nimport { View, SafeAreaView } from 'react-native';\nimport { TemplateKYCFlow } from './TemplateKYCFlowRefactored';\nimport { KYCTemplate, VerificationState } from '../types/KYC.types';\nimport { KycEnvironment, BackendEnvironment } from '../types/env.types';\nimport { sdkLogger } from '../utils/logger'; // 🚨 IMPORT SDK LOGGER\n\nconst advancedVerificationTemplate: KYCTemplate = {\n id: 1,\n name: { en: \"Advanced Verification\", fr: \"Vérification Avancée\" },\n description: { en: \"Extended identity verification flow\", fr: \"Processus de vérification d'identité étendu\" },\n version: \"1.1.0\",\n components: [\n {\n id: 5, type: \"location\" as const, order: 1,\n labels: { en: \"Enable your location\", fr: \"Activez votre localisation\" },\n instructions: { en: \"We need your GPS location for compliance purposes.\", fr: \"Nous avons besoin de votre localisation GPS pour des raisons réglementaires.\" },\n ui: { icon: \"location-icon.png\", themeColor: \"#2DBD60\", buttonText: { en: \"Enable Location\", fr: \"Activer la localisation\" } },\n config: { accuracy: \"high\", required: true } as const\n },\n {\n id: 6, type: \"country_selection\" as const, order: 2,\n labels: { en: \"Select your country\", fr: \"Sélectionnez votre pays\" },\n instructions: { en: \"Choose your country of residence.\", fr: \"Choisissez votre pays de résidence.\" },\n ui: { icon: \"country-icon.png\", themeColor: \"#2DBD60\", buttonText: { en: \"Confirm\", fr: \"Confirmer\" } },\n config: { allowed_countries: [\"CM\", \"NG\", \"CI\", \"KE\", \"GH\"], default_country: \"CM\", required: true } as const\n },\n {\n id: 1, type: \"id_card\" as const, order: 3, templateId: 1,\n labels: { front: { en: \"Upload front of ID card\", fr: \"Téléversez le recto de votre carte d'identité\" }, back: { en: \"Upload back of ID card\", fr: \"Téléversez le verso de votre carte d'identité\" }, },\n instructions: { front: { en: \"Take a clear photo of the front of your ID.\", fr: \"Prenez une photo nette du recto de votre pièce.\" }, back: { en: \"Take a clear photo of the back of your ID.\", fr: \"Prenez une photo nette du verso de votre pièce.\" }, },\n ui: { front: { icon: \"id-card-icon.png\", themeColor: \"#2DBD60\", buttonText: { en: \"Next\", fr: \"Suivant\" } }, back: { icon: \"id-card-icon.png\", themeColor: \"#2DBD60\", buttonText: { en: \"Next\", fr: \"Suivant\" } }, },\n config: { sides: [\"front\", \"back\"], allowed_formats: [\"jpg\", \"png\"], max_size_mb: 5, document_types: [\"drivers_licence\", \"passport\", \"drivers_licence\", \"national_id\"], } as const\n },\n {\n id: 3, type: \"selfie\" as const, order: 5, templateId: 1,\n labels: { en: \"Take selfies from different angles\", fr: \"Prenez des selfies sous différents angles\" },\n instructions: { en: \"Take selfies from front, left, and right angles.\", fr: \"Prenez des selfies de face, profil gauche et profil droit.\" },\n ui: { icon: \"selfie-icon.png\", themeColor: \"#2DBD60\", buttonText: { en: \"Next\", fr: \"Suivant\" } },\n config: { liveness_check: true, max_attempts: 3, orientations: [\"center\", \"left\", \"right\"] } as const\n },\n ]\n};\n\nexport interface TemplateKYCExampleProps {\n onComplete: (data: VerificationState) => void;\n onCancel: () => void;\n onError: (error: string) => void;\n language: string;\n API_KEY?: string;\n templateId?: string;\n template?: KYCTemplate;\n env?: KycEnvironment;\n serverEnv?: BackendEnvironment;\n existingSessionId?: string;\n initialComponentIndex?: number;\n initialCountryResume?: { code: string; documentType: string; region?: string };\n referenceId?: string;\n onSessionSave?: (sessionId: string) => void;\n kyc_session_id?: string;\n}\n\nexport function TemplateKYCExample({\n onComplete,\n onCancel,\n onError,\n language,\n API_KEY,\n templateId,\n template,\n env = 'PRODUCTION',\n serverEnv,\n existingSessionId,\n initialComponentIndex,\n initialCountryResume,\n referenceId,\n onSessionSave,\n kyc_session_id\n}: TemplateKYCExampleProps): JSX.Element {\n\n const handleComplete = (data: VerificationState) => {\n console.log('KYC Template completed with raw data:', data);\n\n let finalPayload: any = data; // Fallback to raw data if mapping fails\n\n if ((data.status === 'success' || data.status === 'in_progress') && data.result) {\n // 1. Extract the dynamic root key (e.g., 'national_id', 'passport')\n const docKey = Object.keys(data.result)[0];\n \n if (docKey && data.result[docKey]) {\n const backendData = data.result[docKey].data;\n const personalInfo = backendData?.user_data?.personal_information || {};\n \n // Ensure we capture the session ID from whichever prop was provided\n const activeSessionId = kyc_session_id || existingSessionId || \"\";\n\n // 2. Strict mapping to your expected format\n finalPayload = {\n data: {\n verification_id: backendData?.verification_id,\n verification_status: backendData?.verification_status,\n session_id: activeSessionId,\n user_data: {\n personal_information: {\n first_name: personalInfo.first_name || undefined,\n given_name: personalInfo.given_name || undefined,\n last_name: personalInfo.last_name || undefined,\n surname: personalInfo.last_name || undefined, // fallback\n address: personalInfo.address || undefined,\n city: personalInfo.city || undefined,\n postal_code: personalInfo.postal_code || undefined,\n expiry_date: personalInfo.expiry_date || undefined,\n issue_date: personalInfo.issue_date || undefined,\n date_of_birth: personalInfo.date_of_birth || undefined,\n birth_date: personalInfo.date_of_birth || undefined, // fallback\n country: personalInfo.country || undefined,\n document_number: (personalInfo as any).document_number || undefined,\n nationality: (personalInfo as any).nationality || undefined,\n }\n }\n }\n };\n\n sdkLogger.info(\"Wrapper formatted completion payload successfully\", { \n verification_id: finalPayload.data.verification_id \n });\n }\n } else {\n sdkLogger.warn(\"Wrapper received completion without a success result object\", { status: data.status });\n }\n\n onComplete(finalPayload as any); \n };\n\n const handleCancel = () => {\n console.log('KYC Template flow cancelled');\n onCancel();\n };\n\n const handleError = (error: string) => {\n console.error('KYC Template error:', error);\n onError(error);\n };\n\n const templateToUse = templateId ? undefined : (template || advancedVerificationTemplate);\n\n return (\n <SafeAreaView style={{ flex: 1, paddingVertical: 25 }}>\n <View style={{ flex: 1 }}>\n <TemplateKYCFlow\n template={templateToUse}\n templateId={templateId}\n onComplete={handleComplete}\n onError={handleError}\n onCancel={handleCancel}\n language={language}\n API_KEY={API_KEY}\n env={env}\n serverEnv={serverEnv}\n existingSessionId={existingSessionId}\n initialComponentIndex={initialComponentIndex}\n initialCountryResume={initialCountryResume}\n referenceId={referenceId}\n onSessionSave={onSessionSave}\n kyc_session_id={kyc_session_id}\n />\n </View>\n </SafeAreaView>\n );\n}"]}
1
+ {"version":3,"file":"TemplateKYCExample.js","sourceRoot":"","sources":["../../../src/components/TemplateKYCExample.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { JSX } from 'react';\nimport { View, SafeAreaView } from 'react-native';\nimport { TemplateKYCFlow } from './TemplateKYCFlowRefactored';\nimport { KYCTemplate, VerificationState } from '../types/KYC.types';\nimport { KycEnvironment, BackendEnvironment } from '../types/env.types';\nimport { sdkLogger } from '../utils/logger'; // 🚨 IMPORT SDK LOGGER\n\nconst advancedVerificationTemplate: KYCTemplate = {\n id: 1,\n name: { en: \"Advanced Verification\", fr: \"Vérification Avancée\" },\n description: { en: \"Extended identity verification flow\", fr: \"Processus de vérification d'identité étendu\" },\n version: \"1.1.0\",\n components: [\n {\n id: 5, type: \"location\" as const, order: 1,\n labels: { en: \"Enable your location\", fr: \"Activez votre localisation\" },\n instructions: { en: \"We need your GPS location for compliance purposes.\", fr: \"Nous avons besoin de votre localisation GPS pour des raisons réglementaires.\" },\n ui: { icon: \"location-icon.png\", themeColor: \"#2DBD60\", buttonText: { en: \"Enable Location\", fr: \"Activer la localisation\" } },\n config: { accuracy: \"high\", required: true } as const\n },\n {\n id: 6, type: \"country_selection\" as const, order: 2,\n labels: { en: \"Select your country\", fr: \"Sélectionnez votre pays\" },\n instructions: { en: \"Choose your country of residence.\", fr: \"Choisissez votre pays de résidence.\" },\n ui: { icon: \"country-icon.png\", themeColor: \"#2DBD60\", buttonText: { en: \"Confirm\", fr: \"Confirmer\" } },\n config: { allowed_countries: [\"CM\", \"NG\", \"CI\", \"KE\", \"GH\"], default_country: \"CM\", required: true } as const\n },\n {\n id: 1, type: \"id_card\" as const, order: 3, templateId: 1,\n labels: { front: { en: \"Upload front of ID card\", fr: \"Téléversez le recto de votre carte d'identité\" }, back: { en: \"Upload back of ID card\", fr: \"Téléversez le verso de votre carte d'identité\" }, },\n instructions: { front: { en: \"Take a clear photo of the front of your ID.\", fr: \"Prenez une photo nette du recto de votre pièce.\" }, back: { en: \"Take a clear photo of the back of your ID.\", fr: \"Prenez une photo nette du verso de votre pièce.\" }, },\n ui: { front: { icon: \"id-card-icon.png\", themeColor: \"#2DBD60\", buttonText: { en: \"Next\", fr: \"Suivant\" } }, back: { icon: \"id-card-icon.png\", themeColor: \"#2DBD60\", buttonText: { en: \"Next\", fr: \"Suivant\" } }, },\n config: { sides: [\"front\", \"back\"], allowed_formats: [\"jpg\", \"png\"], max_size_mb: 5, document_types: [\"drivers_licence\", \"passport\", \"drivers_licence\", \"national_id\"], } as const\n },\n {\n id: 3, type: \"selfie\" as const, order: 5, templateId: 1,\n labels: { en: \"Take selfies from different angles\", fr: \"Prenez des selfies sous différents angles\" },\n instructions: { en: \"Take selfies from front, left, and right angles.\", fr: \"Prenez des selfies de face, profil gauche et profil droit.\" },\n ui: { icon: \"selfie-icon.png\", themeColor: \"#2DBD60\", buttonText: { en: \"Next\", fr: \"Suivant\" } },\n config: { liveness_check: true, max_attempts: 3, orientations: [\"center\", \"left\", \"right\"] } as const\n },\n ]\n};\n\nexport interface TemplateKYCExampleProps {\n onComplete: (data: VerificationState) => void;\n onCancel: () => void;\n onError: (error: string) => void;\n language: string;\n API_KEY?: string;\n TEST_API_KEY?: string;\n templateId?: string;\n template?: KYCTemplate;\n env?: KycEnvironment;\n serverEnv?: BackendEnvironment;\n existingSessionId?: string;\n initialComponentIndex?: number;\n initialCountryResume?: { code: string; documentType: string; region?: string };\n referenceId?: string;\n onSessionSave?: (sessionId: string) => void;\n kyc_session_id?: string;\n}\n\nexport function TemplateKYCExample({\n onComplete,\n onCancel,\n onError,\n language,\n API_KEY,\n TEST_API_KEY,\n templateId,\n template,\n env = 'PRODUCTION',\n serverEnv,\n existingSessionId,\n initialComponentIndex,\n initialCountryResume,\n referenceId,\n onSessionSave,\n kyc_session_id\n}: TemplateKYCExampleProps): JSX.Element {\n\n const handleComplete = (data: VerificationState) => {\n console.log('KYC Template completed with raw data:', data);\n\n let finalPayload: any = data; // Fallback to raw data if mapping fails\n\n if ((data.status === 'success' || data.status === 'in_progress') && data.result) {\n \n // 1. Grab the backend data directly from the result (no docKey needed)\n const backendData = data.result.data;\n\n if (backendData) {\n const personalInfo = backendData.user_data?.personal_information || {};\n\n // Ensure we capture the session ID from whichever prop was provided\n const activeSessionId = kyc_session_id || existingSessionId || backendData.session_id || \"\";\n\n // 2. Strict mapping to your expected format with improved fallbacks\n finalPayload = {\n data: {\n verification_id: backendData.verification_id,\n verification_status: backendData.verification_status,\n session_id: activeSessionId,\n user_data: {\n personal_information: {\n // Safely fallback to given_name and surname if first/last are empty strings\n first_name: personalInfo.first_name || personalInfo.given_name || undefined,\n last_name: personalInfo.last_name || personalInfo.surname || undefined,\n given_name: personalInfo.given_name || undefined,\n surname: personalInfo.surname || undefined, \n \n address: personalInfo.address || undefined,\n city: personalInfo.city || undefined,\n postal_code: personalInfo.postal_code || undefined,\n expiry_date: personalInfo.expiry_date || undefined,\n issue_date: personalInfo.issue_date || undefined,\n \n // Fallback to birth_date if date_of_birth is missing\n date_of_birth: personalInfo.date_of_birth || personalInfo.birth_date || undefined,\n birth_date: personalInfo.birth_date || undefined,\n \n country: personalInfo.country || undefined,\n document_number: personalInfo.document_number || undefined,\n nationality: personalInfo.nationality || undefined,\n sex: personalInfo.sex || undefined,\n }\n }\n }\n };\n\n sdkLogger.info(\"Wrapper formatted completion payload successfully\", { \n data: finalPayload \n });\n }\n } else {\n sdkLogger.warn(\"Wrapper received completion without a success result object\", { status: data.status });\n }\n\n onComplete(finalPayload as any); \n};\n\n const handleCancel = () => {\n console.log('KYC Template flow cancelled');\n onCancel();\n };\n\n const handleError = (error: string) => {\n sdkLogger.error('KYC Template error:', error);\n onError(error);\n };\n\n const templateToUse = templateId ? undefined : (template || advancedVerificationTemplate);\n\n return (\n <SafeAreaView style={{ flex: 1, paddingVertical: 25 }}>\n <View style={{ flex: 1 }}>\n <TemplateKYCFlow\n template={templateToUse}\n templateId={templateId}\n onComplete={handleComplete}\n onError={handleError}\n onCancel={handleCancel}\n language={language}\n API_KEY={API_KEY}\n TEST_API_KEY={TEST_API_KEY}\n env={env}\n serverEnv={serverEnv}\n existingSessionId={existingSessionId}\n initialComponentIndex={initialComponentIndex}\n initialCountryResume={initialCountryResume}\n referenceId={referenceId}\n onSessionSave={onSessionSave}\n kyc_session_id={kyc_session_id}\n />\n </View>\n </SafeAreaView>\n );\n}"]}
@@ -9,6 +9,7 @@ interface TemplateKYCFlowProps {
9
9
  language?: string;
10
10
  onCancel?: () => void;
11
11
  API_KEY?: string;
12
+ TEST_API_KEY?: string;
12
13
  env?: KycEnvironment;
13
14
  serverEnv?: BackendEnvironment;
14
15
  existingSessionId?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateKYCFlowRefactored.d.ts","sourceRoot":"","sources":["../../../src/components/TemplateKYCFlowRefactored.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAmBpE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAIxE,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,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,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,cAAc,CAAC;IACrB,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,oBAAoB,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAsJ1D,CAAC"}
1
+ {"version":3,"file":"TemplateKYCFlowRefactored.d.ts","sourceRoot":"","sources":["../../../src/components/TemplateKYCFlowRefactored.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAkBpE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAIxE,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,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,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,cAAc,CAAC;IACrB,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,oBAAoB,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAyJ1D,CAAC"}
@@ -18,16 +18,18 @@ import { PhoneVerificationTemplate } from './KYCElements/PhoneVerificationTempla
18
18
  import { PersonalInformationTemplate } from './KYCElements/PersonalInformationTemplate';
19
19
  import { AdditionalDocumentsTemplate } from './KYCElements/AdditionalDocumentsTemplate';
20
20
  import KYCConfig from '../config/KYCConfig';
21
- import { sdkLogger } from '../utils/logger'; // 🚨 IMPORT SDK LOGGER
22
- export const TemplateKYCFlow = ({ template: providedTemplate, templateId, onComplete, onError, language = 'fr', onCancel, API_KEY, env = 'PRODUCTION', serverEnv, existingSessionId, initialComponentIndex, initialCountryResume, referenceId, onSessionSave, kyc_session_id, }) => {
21
+ import { logger, sdkLogger } from '../utils/logger';
22
+ export const TemplateKYCFlow = ({ template: providedTemplate, templateId, onComplete, onError, language = 'fr', onCancel, API_KEY, TEST_API_KEY, env = 'PRODUCTION', serverEnv, existingSessionId, initialComponentIndex, initialCountryResume, referenceId, onSessionSave, kyc_session_id, }) => {
23
23
  const { t } = useI18n();
24
24
  const { template: loadedTemplate, isLoading, error, loadTemplate } = useTemplateLoader();
25
+ // 🚨 1. Determine the active API key based on the environment
26
+ const activeApiKey = env === 'PRODUCTION' ? API_KEY : (TEST_API_KEY || API_KEY);
25
27
  useEffect(() => {
26
- if (API_KEY) {
28
+ if (activeApiKey) {
27
29
  if (sdkLogger.setApiKey)
28
- sdkLogger.setApiKey(API_KEY);
30
+ sdkLogger.setApiKey(activeApiKey);
29
31
  }
30
- }, [env, serverEnv, existingSessionId, API_KEY]);
32
+ }, [env, serverEnv, existingSessionId, activeApiKey]);
31
33
  useEffect(() => {
32
34
  if (serverEnv !== undefined) {
33
35
  KYCConfig.setBackendEnvironment(serverEnv);
@@ -36,19 +38,20 @@ export const TemplateKYCFlow = ({ template: providedTemplate, templateId, onComp
36
38
  useEffect(() => {
37
39
  if (!providedTemplate && !templateId) {
38
40
  const errorMsg = 'Either template or templateId must be provided';
39
- sdkLogger.error("Template Loading Failed: Missing Props", { errorMsg });
41
+ logger.error("Template Loading Failed: Missing Props", { errorMsg });
40
42
  onError?.(errorMsg);
41
43
  return;
42
44
  }
43
- if (templateId && !API_KEY) {
44
- sdkLogger.info(`Fetching template ${templateId} via token authentication`);
45
+ if (templateId && !activeApiKey) {
46
+ logger.log(`Fetching template ${templateId} via token authentication`);
45
47
  loadTemplate(templateId);
46
48
  }
47
- else if (templateId && API_KEY) {
48
- sdkLogger.info(`Fetching template ${templateId} via API Key`);
49
- loadTemplate(templateId, API_KEY);
49
+ else if (templateId && activeApiKey) {
50
+ logger.log(`Fetching template ${templateId} via API Key`);
51
+ // 🚨 2. Use the resolved active key here
52
+ loadTemplate(templateId, activeApiKey);
50
53
  }
51
- }, [templateId, API_KEY, providedTemplate, loadTemplate, onError]);
54
+ }, [templateId, activeApiKey, providedTemplate, loadTemplate, onError]);
52
55
  useEffect(() => {
53
56
  if (error) {
54
57
  sdkLogger.error("Template Fetch Error", { error });
@@ -72,11 +75,6 @@ export const TemplateKYCFlow = ({ template: providedTemplate, templateId, onComp
72
75
  ]);
73
76
  };
74
77
  const template = providedTemplate || loadedTemplate;
75
- useEffect(() => {
76
- if (template) {
77
- sdkLogger.info("Template loaded successfully", { componentCount: template.components.length });
78
- }
79
- }, [template]);
80
78
  if (templateId && isLoading && !template) {
81
79
  return (<View style={styles.loadingContainer}>
82
80
  <ActivityIndicator size="large" color="#2DBD60"/>
@@ -88,7 +86,7 @@ export const TemplateKYCFlow = ({ template: providedTemplate, templateId, onComp
88
86
  <Text style={styles.errorText}>{error}</Text>
89
87
  <TouchableOpacity style={styles.retryButton} onPress={() => {
90
88
  sdkLogger.info("User retrying template fetch");
91
- loadTemplate(templateId, API_KEY);
89
+ loadTemplate(templateId, activeApiKey);
92
90
  }}>
93
91
  <Text style={styles.retryButtonText}>{t('common.retry') || 'Retry'}</Text>
94
92
  </TouchableOpacity>
@@ -104,21 +102,23 @@ export const TemplateKYCFlow = ({ template: providedTemplate, templateId, onComp
104
102
  return (<TemplateKYCFlowProvider template={template} onComplete={(data) => {
105
103
  sdkLogger.info("KYC Flow Completed", { referenceId: data?.result?.referenceId });
106
104
  sdkLogger.flush();
105
+ logger.log('this is the data going to the TG side', data);
106
+ console.log('this is the data going to the TG side', data);
107
107
  if (onComplete)
108
108
  onComplete(data);
109
109
  }} onError={(err) => {
110
110
  sdkLogger.error("KYC Flow Error", { error: err });
111
111
  sdkLogger.flush();
112
+ logger.log('Error', err);
112
113
  if (onError)
113
114
  onError(err);
114
- }} onCancel={OnCancel} initialLanguage={language} apiKey={API_KEY} env={env} existingSessionId={existingSessionId} initialComponentIndex={initialComponentIndex} initialCountryResume={initialCountryResume} referenceId={referenceId} onSessionSave={onSessionSave} kyc_session_id={kyc_session_id}>
115
+ }} onCancel={OnCancel} initialLanguage={language} apiKey={activeApiKey} testApiKey={TEST_API_KEY} env={env} existingSessionId={existingSessionId} initialComponentIndex={initialComponentIndex} initialCountryResume={initialCountryResume} referenceId={referenceId} onSessionSave={onSessionSave} kyc_session_id={kyc_session_id}>
115
116
  <TemplateKYCFlowContent onCancel={OnCancel}/>
116
117
  </TemplateKYCFlowProvider>);
117
118
  };
118
119
  const TemplateKYCFlowContent = ({ onCancel }) => {
119
120
  const { state, actions, currentComponent, progress } = useTemplateKYCFlowContext();
120
121
  const { t } = useI18n();
121
- console.log(`sessionnnn id: ${state.session.session_id}`);
122
122
  useEffect(() => {
123
123
  if (state.session?.session_id) {
124
124
  sdkLogger.setSessionId(state.session.session_id);
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateKYCFlowRefactored.js","sourceRoot":"","sources":["../../../src/components/TemplateKYCFlowRefactored.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useEffect } from 'react';\nimport { View, Text, StyleSheet, SafeAreaView, TouchableOpacity, ActivityIndicator, Dimensions, ScrollView, Platform } from 'react-native';\nimport { KYCTemplate, VerificationState } from '../types/KYC.types';\nimport { TemplateKYCFlowProvider, useTemplateKYCFlowContext } from '../hooks/useTemplateKYCFlow';\nimport { useI18n } from '../hooks/useI18n';\nimport { showAlert } from '../utils/platformAlert';\n\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';\nimport { useTemplateLoader } from '../hooks/useTemplateLoader';\nimport { WelcomeTemplate } from './KYCElements/WelcomeTemplate';\nimport { EmailVerificationTemplate } from './KYCElements/EmailVerificationTemplate';\nimport { PhoneVerificationTemplate } from './KYCElements/PhoneVerificationTemplate';\nimport { PersonalInformationTemplate } from './KYCElements/PersonalInformationTemplate';\nimport { AdditionalDocumentsTemplate } from './KYCElements/AdditionalDocumentsTemplate';\nimport { KycEnvironment, BackendEnvironment } from '../types/env.types';\nimport KYCConfig from '../config/KYCConfig';\nimport { sdkLogger } from '../utils/logger'; // 🚨 IMPORT SDK LOGGER\n\ninterface TemplateKYCFlowProps {\n template?: KYCTemplate; // Format SDK direct (existing, now optional)\n templateId?: string; // New: ID to load from API\n onComplete?: (data: VerificationState) => void;\n onError?: (error: string) => void;\n language?: string;\n onCancel?: () => void;\n API_KEY?: string; // Required if templateId is used\n env?: KycEnvironment; // Flow execution: PRODUCTION (full AI) or SANDBOX (skip AI)\n serverEnv?: BackendEnvironment; // Backend to call: PRODUCTION or TEST (API URL)\n existingSessionId?: string;\n initialComponentIndex?: number;\n initialCountryResume?: { code: string; documentType: string; region?: string };\n referenceId?: string;\n onSessionSave?: (sessionId: string) => void;\n kyc_session_id?: string;\n}\n\nexport const TemplateKYCFlow: React.FC<TemplateKYCFlowProps> = ({\n template: providedTemplate,\n templateId,\n onComplete,\n onError,\n language = 'fr',\n onCancel,\n API_KEY,\n env = 'PRODUCTION',\n serverEnv,\n existingSessionId,\n initialComponentIndex,\n initialCountryResume,\n referenceId,\n onSessionSave,\n kyc_session_id,\n}) => {\n const { t } = useI18n();\n const { template: loadedTemplate, isLoading, error, loadTemplate } = useTemplateLoader();\n\n useEffect(() => {\n if (API_KEY) {\n if (sdkLogger.setApiKey) sdkLogger.setApiKey(API_KEY);\n }\n \n }, [env, serverEnv, existingSessionId, API_KEY]);\n\n useEffect(() => {\n if (serverEnv !== undefined) {\n KYCConfig.setBackendEnvironment(serverEnv);\n }\n }, [serverEnv]);\n\n useEffect(() => {\n if (!providedTemplate && !templateId) {\n const errorMsg = 'Either template or templateId must be provided';\n sdkLogger.error(\"Template Loading Failed: Missing Props\", { errorMsg });\n onError?.(errorMsg);\n return;\n }\n\n if (templateId && !API_KEY) {\n sdkLogger.info(`Fetching template ${templateId} via token authentication`);\n loadTemplate(templateId);\n } else if (templateId && API_KEY) {\n sdkLogger.info(`Fetching template ${templateId} via API Key`);\n loadTemplate(templateId, API_KEY);\n }\n }, [templateId, API_KEY, providedTemplate, loadTemplate, onError]);\n\n useEffect(() => {\n if (error) {\n sdkLogger.error(\"Template Fetch Error\", { error });\n onError?.(error);\n }\n }, [error, onError]);\n\n const OnCancel = () => {\n showAlert(\n t('kyc.cancelConfirmation.title'),\n t('kyc.cancelConfirmation.message'),\n [\n { \n text: t('kyc.cancelConfirmation.cancelButton'), \n style: 'cancel',\n },\n {\n text: t('kyc.cancelConfirmation.confirmButton'),\n onPress: () => {\n sdkLogger.warn(\"User confirmed flow cancellation\");\n sdkLogger.flush();\n onCancel?.();\n }\n },\n ]\n );\n };\n\n const template = providedTemplate || loadedTemplate;\n\n useEffect(() => {\n if (template) {\n sdkLogger.info(\"Template loaded successfully\", { componentCount: template.components.length });\n }\n }, [template]);\n\n if (templateId && isLoading && !template) {\n return (\n <View style={styles.loadingContainer}>\n <ActivityIndicator size=\"large\" color=\"#2DBD60\" />\n <Text style={styles.loadingText}>{t('common.loading') || 'Loading template...'}</Text>\n </View>\n );\n }\n\n if (templateId && error && !template) {\n return (\n <View style={styles.errorContainer}>\n <Text style={styles.errorText}>{error}</Text>\n <TouchableOpacity \n style={styles.retryButton} \n onPress={() => {\n sdkLogger.info(\"User retrying template fetch\");\n loadTemplate(templateId, API_KEY);\n }}\n >\n <Text style={styles.retryButtonText}>{t('common.retry') || 'Retry'}</Text>\n </TouchableOpacity>\n </View>\n );\n }\n\n if (!template) {\n return (\n <View style={styles.errorContainer}>\n <Text style={styles.errorText}>\n {t('errors.unknownError') || 'Template not available'}\n </Text>\n </View>\n );\n }\n\n\n return (\n <TemplateKYCFlowProvider\n template={template}\n onComplete={(data) => {\n sdkLogger.info(\"KYC Flow Completed\", { referenceId: data?.result?.referenceId });\n sdkLogger.flush();\n if (onComplete) onComplete(data);\n }}\n onError={(err) => {\n sdkLogger.error(\"KYC Flow Error\", { error: err });\n sdkLogger.flush();\n if (onError) onError(err);\n }}\n onCancel={OnCancel}\n initialLanguage={language}\n apiKey={API_KEY}\n env={env}\n existingSessionId={existingSessionId}\n initialComponentIndex={initialComponentIndex}\n initialCountryResume={initialCountryResume}\n referenceId={referenceId}\n onSessionSave={onSessionSave}\n kyc_session_id={kyc_session_id}\n >\n <TemplateKYCFlowContent onCancel={OnCancel} />\n </TemplateKYCFlowProvider>\n );\n};\n\nconst TemplateKYCFlowContent: React.FC<{ onCancel?: () => void }> = ({ onCancel }) => {\n const { state, actions, currentComponent, progress } = useTemplateKYCFlowContext();\n const { t } = useI18n();\n\n console.log(`sessionnnn id: ${state.session.session_id}`)\n\n useEffect(() => {\n if (state.session?.session_id) {\n sdkLogger.setSessionId(state.session.session_id);\n }\n }, [state.session?.session_id]);\n\n useEffect(() => {\n if (currentComponent) {\n sdkLogger.info(`User navigated to step ${state.currentComponentIndex + 1}: ${currentComponent.type}`, {\n componentId: currentComponent.id,\n progress: `${progress}%`\n });\n }\n }, [currentComponent?.id, state.currentComponentIndex, progress]);\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 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 'welcome': return <WelcomeTemplate {...commonProps} />;\n case 'id_card': return <IDCardCapture {...commonProps} />;\n case 'selfie': return <SelfieCaptureTemplate {...commonProps} />;\n case 'file_upload': return <FileUploadTemplate {...commonProps} />;\n case 'location': return <LocationCaptureTemplate {...commonProps} />;\n case 'country_selection': return <CountrySelectionTemplate {...commonProps} />;\n case 'review_submit': return <ReviewSubmitTemplate {...commonProps} />;\n case 'email_verification': return <EmailVerificationTemplate {...commonProps} />;\n case 'phone_verification': return <PhoneVerificationTemplate {...commonProps} />;\n case 'personal_information': return <PersonalInformationTemplate {...commonProps} />;\n case 'additional_documents': return <AdditionalDocumentsTemplate {...commonProps} />;\n case 'verification_progress': return <VerificationProgressTemplate {...commonProps} />;\n default:\n sdkLogger.error(\"Attempted to render unsupported component type\", { type: currentComponent.type });\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\n <SafeAreaView style={styles.container}>\n {(state.showCustomStepper && state.session.isInitialized) ? (\n <View style={styles.header}>\n <Text style={styles.progressText}>\n {t('kyc.step', {\n current: (state.template.components.findIndex(c => c.id === currentComponent.id) + 1) || (state.currentComponentIndex + 1),\n total: state.template.components.length,\n })}\n </Text>\n \n <View style={styles.progressContainer}>\n <View style={styles.progressBar}>\n <View style={[styles.progressFill, { width: `${progress}%` }]} />\n </View>\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 <ScrollView\n style={styles.scrollView}\n contentContainerStyle={styles.content}\n showsVerticalScrollIndicator={Platform.OS === 'web'}\n bounces={false}\n >\n {renderCurrentComponent()}\n </ScrollView>\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\nconst styles = StyleSheet.create({\n container: { flex: 1, backgroundColor: '#f5f5f5', },\n header: { backgroundColor: 'white', paddingVertical: 20, paddingHorizontal: 12, borderBottomWidth: 1, borderBottomColor: '#e0e0e0', marginHorizontal: 12, marginTop: 12, shadowColor: '#000', shadowOffset: { width: 0, height: 2 }, shadowOpacity: 0.15, shadowRadius: 1.84, elevation: 5, },\n title: { fontSize: 24, fontWeight: 'bold', color: '#333', marginBottom: 8, },\n description: { fontSize: 16, color: '#666', marginBottom: 20, },\n progressContainer: { },\n progressBar: { height: 8, backgroundColor: '#e0e0e0', borderRadius: 4, overflow: 'hidden', },\n progressFill: { height: '100%', backgroundColor: '#2DBD60', borderRadius: 4, },\n progressText: { fontSize: 14, color: 'black', fontWeight: '600', textAlign: 'left', marginBottom: 8, },\n stepInfo: { backgroundColor: '#f8f9fa', padding: 16, borderRadius: 8, borderLeftWidth: 4, borderLeftColor: '#2DBD60', },\n stepTitle: { fontSize: 18, fontWeight: '600', color: '#333', marginBottom: 8, },\n stepDescription: { fontSize: 14, color: '#666', lineHeight: 20, },\n scrollView: { flex: 1, },\n content: { flexGrow: 1, alignItems: 'center', paddingBottom: 20, },\n navigation: { flexDirection: 'row', justifyContent: 'space-between', padding: 20, backgroundColor: 'white', borderTopWidth: 1, borderTopColor: '#e0e0e0', },\n navButton: { paddingHorizontal: 24, paddingVertical: 12, borderRadius: 8, minWidth: 100, alignItems: 'center', },\n primaryButton: { backgroundColor: '#2DBD60', },\n navButtonText: { fontSize: 16, fontWeight: '600', color: 'white', },\n errorText: { color: '#dc2626', fontSize: 16, textAlign: 'center', margin: 20, },\n unsupportedContainer: { flex: 1, justifyContent: 'center', alignItems: 'center', padding: 20, },\n unsupportedText: { fontSize: 16, color: '#666', textAlign: 'center', },\n processingContainer: { position: 'absolute', flex: 1, width: Dimensions.get('window').width, height: Dimensions.get('window').height, backgroundColor: 'rgba(0, 0, 0, 0.5)', justifyContent: 'center', alignItems: 'center', zIndex: 10000000, },\n processingText: { fontSize: 16, color: '#fff', textAlign: 'center', fontWeight: 'bold', marginBottom: 10, },\n loadingContainer: { flex: 1, justifyContent: 'center', alignItems: 'center', backgroundColor: '#f5f5f5', },\n loadingText: { marginTop: 16, fontSize: 16, color: '#666', textAlign: 'center', },\n errorContainer: { flex: 1, justifyContent: 'center', alignItems: 'center', backgroundColor: '#f5f5f5', padding: 20, },\n retryButton: { marginTop: 20, paddingHorizontal: 24, paddingVertical: 12, backgroundColor: '#2DBD60', borderRadius: 8, },\n retryButtonText: { color: '#fff', fontSize: 16, fontWeight: '600', },\n});"]}
1
+ {"version":3,"file":"TemplateKYCFlowRefactored.js","sourceRoot":"","sources":["../../../src/components/TemplateKYCFlowRefactored.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useEffect } from 'react';\nimport { View, Text, StyleSheet, SafeAreaView, TouchableOpacity, ActivityIndicator, Dimensions, ScrollView, Platform } from 'react-native';\nimport { KYCTemplate, VerificationState } from '../types/KYC.types';\nimport { TemplateKYCFlowProvider, useTemplateKYCFlowContext } from '../hooks/useTemplateKYCFlow';\nimport { useI18n } from '../hooks/useI18n';\nimport { showAlert } from '../utils/platformAlert';\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';\nimport { useTemplateLoader } from '../hooks/useTemplateLoader';\nimport { WelcomeTemplate } from './KYCElements/WelcomeTemplate';\nimport { EmailVerificationTemplate } from './KYCElements/EmailVerificationTemplate';\nimport { PhoneVerificationTemplate } from './KYCElements/PhoneVerificationTemplate';\nimport { PersonalInformationTemplate } from './KYCElements/PersonalInformationTemplate';\nimport { AdditionalDocumentsTemplate } from './KYCElements/AdditionalDocumentsTemplate';\nimport { KycEnvironment, BackendEnvironment } from '../types/env.types';\nimport KYCConfig from '../config/KYCConfig';\nimport { logger, sdkLogger } from '../utils/logger'; \n\ninterface TemplateKYCFlowProps {\n template?: KYCTemplate; \n templateId?: string; \n onComplete?: (data: VerificationState) => void;\n onError?: (error: string) => void;\n language?: string;\n onCancel?: () => void;\n API_KEY?: string; \n TEST_API_KEY?: string;\n env?: KycEnvironment; \n serverEnv?: BackendEnvironment; \n existingSessionId?: string;\n initialComponentIndex?: number;\n initialCountryResume?: { code: string; documentType: string; region?: string };\n referenceId?: string;\n onSessionSave?: (sessionId: string) => void;\n kyc_session_id?: string;\n}\n\nexport const TemplateKYCFlow: React.FC<TemplateKYCFlowProps> = ({\n template: providedTemplate,\n templateId,\n onComplete,\n onError,\n language = 'fr',\n onCancel,\n API_KEY,\n TEST_API_KEY,\n env = 'PRODUCTION',\n serverEnv,\n existingSessionId,\n initialComponentIndex,\n initialCountryResume,\n referenceId,\n onSessionSave,\n kyc_session_id,\n}) => {\n const { t } = useI18n();\n const { template: loadedTemplate, isLoading, error, loadTemplate } = useTemplateLoader();\n\n // 🚨 1. Determine the active API key based on the environment\n const activeApiKey = env === 'PRODUCTION' ? API_KEY : (TEST_API_KEY || API_KEY);\n\n useEffect(() => {\n if (activeApiKey) {\n if (sdkLogger.setApiKey) sdkLogger.setApiKey(activeApiKey);\n }\n }, [env, serverEnv, existingSessionId, activeApiKey]);\n\n useEffect(() => {\n if (serverEnv !== undefined) {\n KYCConfig.setBackendEnvironment(serverEnv);\n }\n }, [serverEnv]);\n\n useEffect(() => {\n if (!providedTemplate && !templateId) {\n const errorMsg = 'Either template or templateId must be provided';\n logger.error(\"Template Loading Failed: Missing Props\", { errorMsg });\n onError?.(errorMsg);\n return;\n }\n\n if (templateId && !activeApiKey) {\n logger.log(`Fetching template ${templateId} via token authentication`);\n loadTemplate(templateId);\n } else if (templateId && activeApiKey) {\n logger.log(`Fetching template ${templateId} via API Key`);\n // 🚨 2. Use the resolved active key here\n loadTemplate(templateId, activeApiKey);\n }\n }, [templateId, activeApiKey, providedTemplate, loadTemplate, onError]);\n\n useEffect(() => {\n if (error) {\n sdkLogger.error(\"Template Fetch Error\", { error });\n onError?.(error);\n }\n }, [error, onError]);\n\n const OnCancel = () => {\n showAlert(\n t('kyc.cancelConfirmation.title'),\n t('kyc.cancelConfirmation.message'),\n [\n {\n text: t('kyc.cancelConfirmation.cancelButton'),\n style: 'cancel',\n },\n {\n text: t('kyc.cancelConfirmation.confirmButton'),\n onPress: () => {\n sdkLogger.warn(\"User confirmed flow cancellation\");\n sdkLogger.flush();\n onCancel?.();\n }\n },\n ]\n );\n };\n\n const template = providedTemplate || loadedTemplate;\n\n \n\n if (templateId && isLoading && !template) {\n return (\n <View style={styles.loadingContainer}>\n <ActivityIndicator size=\"large\" color=\"#2DBD60\" />\n <Text style={styles.loadingText}>{t('common.loading') || 'Loading template...'}</Text>\n </View>\n );\n }\n\n if (templateId && error && !template) {\n return (\n <View style={styles.errorContainer}>\n <Text style={styles.errorText}>{error}</Text>\n <TouchableOpacity\n style={styles.retryButton}\n onPress={() => {\n sdkLogger.info(\"User retrying template fetch\");\n loadTemplate(templateId, activeApiKey);\n }}\n >\n <Text style={styles.retryButtonText}>{t('common.retry') || 'Retry'}</Text>\n </TouchableOpacity>\n </View>\n );\n }\n\n if (!template) {\n return (\n <View style={styles.errorContainer}>\n <Text style={styles.errorText}>\n {t('errors.unknownError') || 'Template not available'}\n </Text>\n </View>\n );\n }\n\n return (\n <TemplateKYCFlowProvider\n template={template}\n onComplete={(data) => {\n sdkLogger.info(\"KYC Flow Completed\", { referenceId: data?.result?.referenceId });\n sdkLogger.flush();\n logger.log('this is the data going to the TG side',data)\n console.log('this is the data going to the TG side',data)\n if (onComplete) onComplete(data);\n }}\n onError={(err) => {\n sdkLogger.error(\"KYC Flow Error\", { error: err });\n sdkLogger.flush();\n logger.log('Error', err)\n if (onError) onError(err);\n }}\n onCancel={OnCancel}\n initialLanguage={language}\n apiKey={activeApiKey}\n testApiKey={TEST_API_KEY} \n env={env}\n existingSessionId={existingSessionId}\n initialComponentIndex={initialComponentIndex}\n initialCountryResume={initialCountryResume}\n referenceId={referenceId}\n onSessionSave={onSessionSave}\n kyc_session_id={kyc_session_id}\n >\n <TemplateKYCFlowContent onCancel={OnCancel} />\n </TemplateKYCFlowProvider>\n );\n};\n\nconst TemplateKYCFlowContent: React.FC<{ onCancel?: () => void }> = ({ onCancel }) => {\n const { state, actions, currentComponent, progress } = useTemplateKYCFlowContext();\n const { t } = useI18n();\n\n\n useEffect(() => {\n if (state.session?.session_id) {\n sdkLogger.setSessionId(state.session.session_id);\n }\n }, [state.session?.session_id]);\n\n useEffect(() => {\n if (currentComponent) {\n sdkLogger.info(`User navigated to step ${state.currentComponentIndex + 1}: ${currentComponent.type}`, {\n componentId: currentComponent.id,\n progress: `${progress}%`\n });\n }\n }, [currentComponent?.id, state.currentComponentIndex, progress]);\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 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 'welcome': return <WelcomeTemplate {...commonProps} />;\n case 'id_card': return <IDCardCapture {...commonProps} />;\n case 'selfie': return <SelfieCaptureTemplate {...commonProps} />;\n case 'file_upload': return <FileUploadTemplate {...commonProps} />;\n case 'location': return <LocationCaptureTemplate {...commonProps} />;\n case 'country_selection': return <CountrySelectionTemplate {...commonProps} />;\n case 'review_submit': return <ReviewSubmitTemplate {...commonProps} />;\n case 'email_verification': return <EmailVerificationTemplate {...commonProps} />;\n case 'phone_verification': return <PhoneVerificationTemplate {...commonProps} />;\n case 'personal_information': return <PersonalInformationTemplate {...commonProps} />;\n case 'additional_documents': return <AdditionalDocumentsTemplate {...commonProps} />;\n case 'verification_progress': return <VerificationProgressTemplate {...commonProps} />;\n default:\n sdkLogger.error(\"Attempted to render unsupported component type\", { type: currentComponent.type });\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\n <SafeAreaView style={styles.container}>\n {(state.showCustomStepper && state.session.isInitialized) ? (\n <View style={styles.header}>\n <Text style={styles.progressText}>\n {t('kyc.step', {\n current: (state.template.components.findIndex(c => c.id === currentComponent.id) + 1) || (state.currentComponentIndex + 1),\n total: state.template.components.length,\n })}\n </Text>\n \n <View style={styles.progressContainer}>\n <View style={styles.progressBar}>\n <View style={[styles.progressFill, { width: `${progress}%` }]} />\n </View>\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 <ScrollView\n style={styles.scrollView}\n contentContainerStyle={styles.content}\n showsVerticalScrollIndicator={Platform.OS === 'web'}\n bounces={false}\n >\n {renderCurrentComponent()}\n </ScrollView>\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\nconst styles = StyleSheet.create({\n container: { flex: 1, backgroundColor: '#f5f5f5', },\n header: { backgroundColor: 'white', paddingVertical: 20, paddingHorizontal: 12, borderBottomWidth: 1, borderBottomColor: '#e0e0e0', marginHorizontal: 12, marginTop: 12, shadowColor: '#000', shadowOffset: { width: 0, height: 2 }, shadowOpacity: 0.15, shadowRadius: 1.84, elevation: 5, },\n title: { fontSize: 24, fontWeight: 'bold', color: '#333', marginBottom: 8, },\n description: { fontSize: 16, color: '#666', marginBottom: 20, },\n progressContainer: { },\n progressBar: { height: 8, backgroundColor: '#e0e0e0', borderRadius: 4, overflow: 'hidden', },\n progressFill: { height: '100%', backgroundColor: '#2DBD60', borderRadius: 4, },\n progressText: { fontSize: 14, color: 'black', fontWeight: '600', textAlign: 'left', marginBottom: 8, },\n stepInfo: { backgroundColor: '#f8f9fa', padding: 16, borderRadius: 8, borderLeftWidth: 4, borderLeftColor: '#2DBD60', },\n stepTitle: { fontSize: 18, fontWeight: '600', color: '#333', marginBottom: 8, },\n stepDescription: { fontSize: 14, color: '#666', lineHeight: 20, },\n scrollView: { flex: 1, },\n content: { flexGrow: 1, alignItems: 'center', paddingBottom: 20, },\n navigation: { flexDirection: 'row', justifyContent: 'space-between', padding: 20, backgroundColor: 'white', borderTopWidth: 1, borderTopColor: '#e0e0e0', },\n navButton: { paddingHorizontal: 24, paddingVertical: 12, borderRadius: 8, minWidth: 100, alignItems: 'center', },\n primaryButton: { backgroundColor: '#2DBD60', },\n navButtonText: { fontSize: 16, fontWeight: '600', color: 'white', },\n errorText: { color: '#dc2626', fontSize: 16, textAlign: 'center', margin: 20, },\n unsupportedContainer: { flex: 1, justifyContent: 'center', alignItems: 'center', padding: 20, },\n unsupportedText: { fontSize: 16, color: '#666', textAlign: 'center', },\n processingContainer: { position: 'absolute', flex: 1, width: Dimensions.get('window').width, height: Dimensions.get('window').height, backgroundColor: 'rgba(0, 0, 0, 0.5)', justifyContent: 'center', alignItems: 'center', zIndex: 10000000, },\n processingText: { fontSize: 16, color: '#fff', textAlign: 'center', fontWeight: 'bold', marginBottom: 10, },\n loadingContainer: { flex: 1, justifyContent: 'center', alignItems: 'center', backgroundColor: '#f5f5f5', },\n loadingText: { marginTop: 16, fontSize: 16, color: '#666', textAlign: 'center', },\n errorContainer: { flex: 1, justifyContent: 'center', alignItems: 'center', backgroundColor: '#f5f5f5', padding: 20, },\n retryButton: { marginTop: 20, paddingHorizontal: 24, paddingVertical: 12, backgroundColor: '#2DBD60', borderRadius: 8, },\n retryButtonText: { color: '#fff', fontSize: 16, fontWeight: '600', },\n});"]}
@@ -1 +1 @@
1
- {"version":3,"file":"KYCConfig.d.ts","sourceRoot":"","sources":["../../../src/config/KYCConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,cAAM,SAAS;IACX,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAY;IACnC,OAAO,CAAC,kBAAkB,CAAoC;IAE9D,OAAO,CAAC,WAAW,CAIjB;IAEF,OAAO;WAEO,WAAW,IAAI,SAAS;IAO/B,qBAAqB,CAAC,GAAG,EAAE,kBAAkB;IAI7C,aAAa,IAAI,MAAM;IAIvB,qBAAqB,IAAI,kBAAkB;CAGrD;;AAED,wBAAuC"}
1
+ {"version":3,"file":"KYCConfig.d.ts","sourceRoot":"","sources":["../../../src/config/KYCConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,cAAM,SAAS;IACX,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAY;IACnC,OAAO,CAAC,kBAAkB,CAAoC;IAG9D,OAAO,CAAC,WAAW,CAIjB;IAEF,OAAO;WAEO,WAAW,IAAI,SAAS;IAO/B,qBAAqB,CAAC,GAAG,EAAE,kBAAkB;IAI7C,aAAa,IAAI,MAAM;IAKvB,qBAAqB,IAAI,kBAAkB;CAGrD;;AAED,wBAAuC"}
@@ -1,10 +1,11 @@
1
1
  class KYCConfig {
2
2
  static instance;
3
3
  backendEnvironment = 'PRODUCTION';
4
+ // 🚨 Use a string record to safely handle 'TEST' or 'SANDBOX' aliases
4
5
  backendUrls = {
5
6
  PRODUCTION: 'https://service.sanctumkey.com/api/v1',
6
- // TEST: 'https://kyc-backend.transfergratis.net/api/v1',
7
7
  TEST: 'https://api.sanctumkey.com/api/v1',
8
+ SANDBOX: 'https://kyc-backend.transfergratis.net/api/v1',
8
9
  };
9
10
  constructor() { }
10
11
  static getInstance() {
@@ -17,7 +18,8 @@ class KYCConfig {
17
18
  this.backendEnvironment = env;
18
19
  }
19
20
  getBackendUrl() {
20
- return this.backendUrls[this.backendEnvironment];
21
+ // Fallback to PRODUCTION if an invalid env string is somehow passed
22
+ return this.backendUrls[this.backendEnvironment] || this.backendUrls['PRODUCTION'];
21
23
  }
22
24
  getBackendEnvironment() {
23
25
  return this.backendEnvironment;
@@ -1 +1 @@
1
- {"version":3,"file":"KYCConfig.js","sourceRoot":"","sources":["../../../src/config/KYCConfig.ts"],"names":[],"mappings":"AAEA,MAAM,SAAS;IACH,MAAM,CAAC,QAAQ,CAAY;IAC3B,kBAAkB,GAAuB,YAAY,CAAC;IAEtD,WAAW,GAAuC;QACtD,UAAU,EAAE,uCAAuC;QACnD,0DAA0D;QAC1D,IAAI,EAAE,mCAAmC;KAC5C,CAAC;IAEF,gBAAwB,CAAC;IAElB,MAAM,CAAC,WAAW;QACrB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YACtB,SAAS,CAAC,QAAQ,GAAG,IAAI,SAAS,EAAE,CAAC;QACzC,CAAC;QACD,OAAO,SAAS,CAAC,QAAQ,CAAC;IAC9B,CAAC;IAEM,qBAAqB,CAAC,GAAuB;QAChD,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC;IAClC,CAAC;IAEM,aAAa;QAChB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACrD,CAAC;IAEM,qBAAqB;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACnC,CAAC;CACJ;AAED,eAAe,SAAS,CAAC,WAAW,EAAE,CAAC","sourcesContent":["import { BackendEnvironment } from '../types/env.types';\n\nclass KYCConfig {\n private static instance: KYCConfig;\n private backendEnvironment: BackendEnvironment = 'PRODUCTION';\n\n private backendUrls: Record<BackendEnvironment, string> = {\n PRODUCTION: 'https://service.sanctumkey.com/api/v1',\n // TEST: 'https://kyc-backend.transfergratis.net/api/v1', \n TEST: 'https://api.sanctumkey.com/api/v1', \n };\n\n private constructor() { }\n\n public static getInstance(): KYCConfig {\n if (!KYCConfig.instance) {\n KYCConfig.instance = new KYCConfig();\n }\n return KYCConfig.instance;\n }\n\n public setBackendEnvironment(env: BackendEnvironment) {\n this.backendEnvironment = env;\n }\n\n public getBackendUrl(): string {\n return this.backendUrls[this.backendEnvironment];\n }\n\n public getBackendEnvironment(): BackendEnvironment {\n return this.backendEnvironment;\n }\n}\n\nexport default KYCConfig.getInstance();\n"]}
1
+ {"version":3,"file":"KYCConfig.js","sourceRoot":"","sources":["../../../src/config/KYCConfig.ts"],"names":[],"mappings":"AAEA,MAAM,SAAS;IACH,MAAM,CAAC,QAAQ,CAAY;IAC3B,kBAAkB,GAAuB,YAAY,CAAC;IAE9D,uEAAuE;IAC/D,WAAW,GAA2B;QAC1C,UAAU,EAAE,uCAAuC;QACnD,IAAI,EAAE,mCAAmC;QACzC,OAAO,EAAE,+CAA+C;KAC3D,CAAC;IAEF,gBAAwB,CAAC;IAElB,MAAM,CAAC,WAAW;QACrB,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;YACtB,SAAS,CAAC,QAAQ,GAAG,IAAI,SAAS,EAAE,CAAC;QACzC,CAAC;QACD,OAAO,SAAS,CAAC,QAAQ,CAAC;IAC9B,CAAC;IAEM,qBAAqB,CAAC,GAAuB;QAChD,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC;IAClC,CAAC;IAEM,aAAa;QAChB,oEAAoE;QACpE,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IACvF,CAAC;IAEM,qBAAqB;QACxB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACnC,CAAC;CACJ;AAED,eAAe,SAAS,CAAC,WAAW,EAAE,CAAC","sourcesContent":["import { BackendEnvironment } from '../types/env.types';\n\nclass KYCConfig {\n private static instance: KYCConfig;\n private backendEnvironment: BackendEnvironment = 'PRODUCTION';\n\n // 🚨 Use a string record to safely handle 'TEST' or 'SANDBOX' aliases \n private backendUrls: Record<string, string> = {\n PRODUCTION: 'https://service.sanctumkey.com/api/v1',\n TEST: 'https://api.sanctumkey.com/api/v1',\n SANDBOX: 'https://kyc-backend.transfergratis.net/api/v1',\n };\n\n private constructor() { }\n\n public static getInstance(): KYCConfig {\n if (!KYCConfig.instance) {\n KYCConfig.instance = new KYCConfig();\n }\n return KYCConfig.instance;\n }\n\n public setBackendEnvironment(env: BackendEnvironment) {\n this.backendEnvironment = env;\n }\n\n public getBackendUrl(): string {\n // Fallback to PRODUCTION if an invalid env string is somehow passed\n return this.backendUrls[this.backendEnvironment] || this.backendUrls['PRODUCTION'];\n }\n\n public getBackendEnvironment(): BackendEnvironment {\n return this.backendEnvironment;\n }\n}\n\nexport default KYCConfig.getInstance();"]}
@@ -26,6 +26,7 @@ interface TemplateKYCFlowProviderProps {
26
26
  onCancel?: () => void;
27
27
  initialLanguage?: string;
28
28
  apiKey?: string;
29
+ testApiKey?: string;
29
30
  env?: KycEnvironment;
30
31
  existingSessionId?: string;
31
32
  /** Index in template.components where to resume (0-based). Simple to store in template table. */
@@ -1 +1 @@
1
- {"version":3,"file":"useTemplateKYCFlow.d.ts","sourceRoot":"","sources":["../../../src/hooks/useTemplateKYCFlow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAA6D,SAAS,EAAqB,MAAM,OAAO,CAAC;AACvH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAA6C,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAClK,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAQpD,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;IACvC,GAAG,EAAE,cAAc,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;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;IAChB,GAAG,CAAC,EAAE,cAAc,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iGAAiG;IACjG,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,6GAA6G;IAC7G,oBAAoB,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,4BAA4B,CAuC1E,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,EACf,MAAK,cAA6B,EAClC,oBAAoB,MAAM,EAC1B,wBAAwB,MAAM,EAC9B,uBAAuB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAC9E,cAAc,MAAM,EACpB,gBAAgB,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,KAC1C,iBAwgCF,CAAC"}
1
+ {"version":3,"file":"useTemplateKYCFlow.d.ts","sourceRoot":"","sources":["../../../src/hooks/useTemplateKYCFlow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAA6D,SAAS,EAAqB,MAAM,OAAO,CAAC;AACvH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAA6C,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAClK,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAQpD,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;IACvC,GAAG,EAAE,cAAc,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;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;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,cAAc,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iGAAiG;IACjG,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,6GAA6G;IAC7G,oBAAoB,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,4BAA4B,CAuC1E,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,EACf,MAAK,cAA6B,EAClC,oBAAoB,MAAM,EAC1B,wBAAwB,MAAM,EAC9B,uBAAuB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,EAC9E,cAAc,MAAM,EACpB,gBAAgB,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,KAC1C,iBAwgCF,CAAC"}