@trustchex/react-native-sdk 1.495.10 → 1.495.11

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 (40) hide show
  1. package/android/build.gradle +10 -0
  2. package/android/libs/jj2000-5.2.jar +0 -0
  3. package/android/src/main/java/com/trustchex/reactnativesdk/ImageDecoderModule.kt +88 -0
  4. package/android/src/main/java/com/trustchex/reactnativesdk/Jp2PgxDecoder.kt +135 -0
  5. package/android/src/main/java/com/trustchex/reactnativesdk/TrustchexSDKPackage.kt +12 -0
  6. package/android/src/test/java/com/trustchex/reactnativesdk/Jp2PgxDecoderTest.kt +143 -0
  7. package/android/src/test/resources/jp2/gray.jp2 +0 -0
  8. package/android/src/test/resources/jp2/solid_color.j2k +0 -0
  9. package/android/src/test/resources/jp2/solid_color.jp2 +0 -0
  10. package/lib/module/Shared/Components/EIDScanner.js +8 -5
  11. package/lib/module/Shared/Components/IdentityDocumentCamera.flows.js +19 -16
  12. package/lib/module/Shared/Components/IdentityDocumentCamera.js +43 -4
  13. package/lib/module/Shared/Components/IdentityDocumentCamera.utils.js +22 -0
  14. package/lib/module/Shared/EIDReader/eidReader.js +11 -9
  15. package/lib/module/Shared/Libs/jp2Decode.js +12 -11
  16. package/lib/module/Shared/Services/DataUploadService.js +16 -4
  17. package/lib/module/version.js +1 -1
  18. package/lib/typescript/src/Shared/Components/EIDScanner.d.ts.map +1 -1
  19. package/lib/typescript/src/Shared/Components/IdentityDocumentCamera.d.ts.map +1 -1
  20. package/lib/typescript/src/Shared/Components/IdentityDocumentCamera.flows.d.ts +1 -1
  21. package/lib/typescript/src/Shared/Components/IdentityDocumentCamera.flows.d.ts.map +1 -1
  22. package/lib/typescript/src/Shared/Components/IdentityDocumentCamera.types.d.ts +21 -0
  23. package/lib/typescript/src/Shared/Components/IdentityDocumentCamera.types.d.ts.map +1 -1
  24. package/lib/typescript/src/Shared/Components/IdentityDocumentCamera.utils.d.ts +15 -0
  25. package/lib/typescript/src/Shared/Components/IdentityDocumentCamera.utils.d.ts.map +1 -1
  26. package/lib/typescript/src/Shared/EIDReader/eidReader.d.ts.map +1 -1
  27. package/lib/typescript/src/Shared/Libs/jp2Decode.d.ts +4 -3
  28. package/lib/typescript/src/Shared/Libs/jp2Decode.d.ts.map +1 -1
  29. package/lib/typescript/src/Shared/Services/DataUploadService.d.ts.map +1 -1
  30. package/lib/typescript/src/version.d.ts +1 -1
  31. package/package.json +1 -1
  32. package/src/Shared/Components/EIDScanner.tsx +7 -5
  33. package/src/Shared/Components/IdentityDocumentCamera.flows.ts +29 -18
  34. package/src/Shared/Components/IdentityDocumentCamera.tsx +48 -3
  35. package/src/Shared/Components/IdentityDocumentCamera.types.ts +21 -0
  36. package/src/Shared/Components/IdentityDocumentCamera.utils.ts +24 -0
  37. package/src/Shared/EIDReader/eidReader.ts +11 -9
  38. package/src/Shared/Libs/jp2Decode.ts +15 -11
  39. package/src/Shared/Services/DataUploadService.ts +41 -8
  40. package/src/version.ts +1 -1
@@ -65,9 +65,12 @@ export class DataUploadService {
65
65
  type: mrzFields.documentCode,
66
66
  name: mrzFields.firstName,
67
67
  surname: mrzFields.lastName,
68
- displayName: documentName?.source === 'dg11' ? documentName.displayFirst : undefined,
69
- displaySurname: documentName?.source === 'dg11' ? documentName.displayLast : undefined,
70
- nameSource: documentName?.source === 'dg11' ? documentName.source : undefined,
68
+ displayName:
69
+ documentName?.source === 'dg11' ? documentName.displayFirst : undefined,
70
+ displaySurname:
71
+ documentName?.source === 'dg11' ? documentName.displayLast : undefined,
72
+ nameSource:
73
+ documentName?.source === 'dg11' ? documentName.source : undefined,
71
74
  gender: this.getGenderEnumType(mrzFields.sex),
72
75
  number: mrzFields.documentNumber,
73
76
  country: mrzFields.issuingState,
@@ -137,7 +140,11 @@ export class DataUploadService {
137
140
  // or not.
138
141
  const tempPaths: string[] = [];
139
142
 
140
- const writeTempImage = async (fileName: string, base64Data: string) => {
143
+ const writeTempImage = async (
144
+ fileName: string,
145
+ base64Data: string,
146
+ mimeType: string = 'image/jpeg'
147
+ ) => {
141
148
  const filePath = decodeURIComponent(
142
149
  `${RNFS.TemporaryDirectoryPath}/${fileName}`
143
150
  );
@@ -147,11 +154,25 @@ export class DataUploadService {
147
154
  name: 'files',
148
155
  filename: fileName,
149
156
  filepath: filePath,
150
- filetype: 'image/jpeg',
157
+ // The filename extension AND this filetype must reflect the REAL format.
158
+ // The backend keys its jp2→jpeg conversion off the .jp2 extension, so a
159
+ // raw JP2 mislabeled as .jpg/image/jpeg reaches face-verification as a
160
+ // corrupt JPEG and is rejected. Pass the actual mimeType for anything
161
+ // that isn't already JPEG (the chip portrait can be jp2/png).
162
+ filetype: mimeType,
151
163
  });
152
164
  return filePath;
153
165
  };
154
166
 
167
+ // Pick a file extension that matches the image's real mime type so the
168
+ // backend handles it correctly (it converts .jp2 → jpeg on receipt).
169
+ const extensionForMime = (mimeType?: string) =>
170
+ mimeType === 'image/jp2'
171
+ ? 'jp2'
172
+ : mimeType === 'image/png'
173
+ ? 'png'
174
+ : 'jpg';
175
+
155
176
  try {
156
177
  // Add document front image
157
178
  const frontImage = scannedDocument?.frontImage;
@@ -165,10 +186,17 @@ export class DataUploadService {
165
186
  await writeTempImage('DOCUMENT_BACK_IMAGE.jpg', backImage);
166
187
  }
167
188
 
168
- // Add face image from document
189
+ // Add face image from document. The NFC chip portrait (DG2) can be JPEG,
190
+ // PNG (JS-decoded), or — when native JP2 decode was unavailable — raw JP2,
191
+ // so the extension/filetype must track the real mime type, not assume JPEG.
169
192
  const faceImage = scannedDocument?.faceImage;
170
193
  if (faceImage && faceImage !== '') {
171
- await writeTempImage('FACE_IMAGE.jpg', faceImage);
194
+ const faceMime = scannedDocument?.faceImageMimeType || 'image/jpeg';
195
+ await writeTempImage(
196
+ `FACE_IMAGE.${extensionForMime(faceMime)}`,
197
+ faceImage,
198
+ faceMime
199
+ );
172
200
  }
173
201
 
174
202
  // Add secondary face image from document (optional)
@@ -335,7 +363,12 @@ export class DataUploadService {
335
363
  if (scannedDocument) {
336
364
  onProgress?.(0.1);
337
365
  await runWithRetry(() =>
338
- this.submitDocumentData(identificationId, scannedDocument, authToken, documentName)
366
+ this.submitDocumentData(
367
+ identificationId,
368
+ scannedDocument,
369
+ authToken,
370
+ documentName
371
+ )
339
372
  );
340
373
  onProgress?.(0.3);
341
374
  }
package/src/version.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  // This file is auto-generated. Do not edit manually.
2
2
  // Version is synced from package.json during build.
3
- export const SDK_VERSION = '1.495.10';
3
+ export const SDK_VERSION = '1.495.11';