assentify-sdk-react-native 0.0.42 → 1.0.0-Beta.1

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 (104) hide show
  1. package/README.md +11 -3
  2. package/android/build.gradle +31 -32
  3. package/android/gradle.properties +2 -2
  4. package/android/src/main/java/com/assentifysdk/AssentifySdkModule.kt +81 -118
  5. package/android/src/main/java/com/assentifysdk/FaceMatchActivity.kt +27 -24
  6. package/android/src/main/java/com/assentifysdk/FlowActivity.kt +198 -0
  7. package/android/src/main/java/com/assentifysdk/QrActivity.kt +10 -11
  8. package/android/src/main/java/com/assentifysdk/ScanIDActivity.kt +83 -98
  9. package/android/src/main/java/com/assentifysdk/ScanOtherActivity.kt +7 -6
  10. package/android/src/main/java/com/assentifysdk/ScanPassportActivity.kt +8 -13
  11. package/android/src/main/res/layout/activity_face_scan.xml +1 -1
  12. package/android/src/main/res/layout/activity_flow.xml +9 -0
  13. package/android/src/main/res/layout/activity_scan.xml +1 -1
  14. package/assentify-sdk.podspec +2 -1
  15. package/ios/NativeAssentifySdk.mm +24 -4
  16. package/ios/NativeAssentifySdk.swift +240 -30
  17. package/ios/UIComponents/RNPassportScanner.swift +4 -3
  18. package/ios/View/FaceMatchController.swift +131 -124
  19. package/ios/View/IDCardController.swift +48 -35
  20. package/ios/View/OtherController.swift +9 -18
  21. package/ios/View/PassportController.swift +82 -121
  22. package/ios/View/QrController.swift +9 -6
  23. package/lib/commonjs/AssentifyProvider.js +97 -101
  24. package/lib/commonjs/AssentifyProvider.js.map +1 -1
  25. package/lib/commonjs/AssentifyWrapper.js +11 -17
  26. package/lib/commonjs/AssentifyWrapper.js.map +1 -1
  27. package/lib/commonjs/BackgroundType.js +11 -0
  28. package/lib/commonjs/BackgroundType.js.map +1 -0
  29. package/lib/commonjs/helpers/parsers/FlowCompletedModelParser.js +26 -0
  30. package/lib/commonjs/helpers/parsers/FlowCompletedModelParser.js.map +1 -0
  31. package/lib/commonjs/index.js +4 -4
  32. package/lib/commonjs/index.js.map +1 -1
  33. package/lib/commonjs/types.js.map +1 -1
  34. package/lib/module/AssentifyProvider.js +95 -98
  35. package/lib/module/AssentifyProvider.js.map +1 -1
  36. package/lib/module/AssentifyWrapper.js +11 -17
  37. package/lib/module/AssentifyWrapper.js.map +1 -1
  38. package/lib/module/BackgroundType.js +5 -0
  39. package/lib/module/BackgroundType.js.map +1 -0
  40. package/lib/module/helpers/parsers/FlowCompletedModelParser.js +20 -0
  41. package/lib/module/helpers/parsers/FlowCompletedModelParser.js.map +1 -0
  42. package/lib/module/index.js +1 -1
  43. package/lib/module/index.js.map +1 -1
  44. package/lib/module/types.js.map +1 -1
  45. package/lib/typescript/example/babel.config.d.ts +153 -1
  46. package/lib/typescript/example/babel.config.d.ts.map +1 -1
  47. package/lib/typescript/example/metro.config.d.ts +2 -2
  48. package/lib/typescript/example/metro.config.d.ts.map +1 -1
  49. package/lib/typescript/example/react-native.config.d.ts +153 -1
  50. package/lib/typescript/example/react-native.config.d.ts.map +1 -1
  51. package/lib/typescript/example/src/App.d.ts.map +1 -1
  52. package/lib/typescript/example/src/Home.d.ts.map +1 -1
  53. package/lib/typescript/lib/commonjs/AssentifyProvider.d.ts +3 -1
  54. package/lib/typescript/lib/commonjs/AssentifyProvider.d.ts.map +1 -1
  55. package/lib/typescript/lib/commonjs/AssentifyWrapper.d.ts +4 -6
  56. package/lib/typescript/lib/commonjs/AssentifyWrapper.d.ts.map +1 -1
  57. package/lib/typescript/lib/commonjs/BackgroundType.d.ts +6 -0
  58. package/lib/typescript/lib/commonjs/BackgroundType.d.ts.map +1 -0
  59. package/lib/typescript/lib/commonjs/helpers/parsers/FlowCompletedModelParser.d.ts +11 -0
  60. package/lib/typescript/lib/commonjs/helpers/parsers/FlowCompletedModelParser.d.ts.map +1 -0
  61. package/lib/typescript/lib/module/AssentifyProvider.d.ts +4 -2
  62. package/lib/typescript/lib/module/AssentifyProvider.d.ts.map +1 -1
  63. package/lib/typescript/lib/module/AssentifyWrapper.d.ts +4 -6
  64. package/lib/typescript/lib/module/AssentifyWrapper.d.ts.map +1 -1
  65. package/lib/typescript/lib/module/BackgroundType.d.ts +5 -0
  66. package/lib/typescript/lib/module/BackgroundType.d.ts.map +1 -0
  67. package/lib/typescript/lib/module/helpers/parsers/FlowCompletedModelParser.d.ts +10 -0
  68. package/lib/typescript/lib/module/helpers/parsers/FlowCompletedModelParser.d.ts.map +1 -0
  69. package/lib/typescript/lib/module/index.d.ts +5 -7
  70. package/lib/typescript/lib/module/index.d.ts.map +1 -1
  71. package/lib/typescript/src/AssentifyProvider.d.ts +5 -2
  72. package/lib/typescript/src/AssentifyProvider.d.ts.map +1 -1
  73. package/lib/typescript/src/AssentifyWrapper.d.ts +6 -7
  74. package/lib/typescript/src/AssentifyWrapper.d.ts.map +1 -1
  75. package/lib/typescript/src/BackgroundType.d.ts +6 -0
  76. package/lib/typescript/src/BackgroundType.d.ts.map +1 -0
  77. package/lib/typescript/src/helpers/parsers/FaceMatchParser.d.ts.map +1 -1
  78. package/lib/typescript/src/helpers/parsers/FlowCompletedModelParser.d.ts +4 -0
  79. package/lib/typescript/src/helpers/parsers/FlowCompletedModelParser.d.ts.map +1 -0
  80. package/lib/typescript/src/helpers/parsers/IDCardParser.d.ts.map +1 -1
  81. package/lib/typescript/src/helpers/parsers/OtherIDParser.d.ts.map +1 -1
  82. package/lib/typescript/src/helpers/parsers/PassportParser.d.ts.map +1 -1
  83. package/lib/typescript/src/index.d.ts +5 -7
  84. package/lib/typescript/src/index.d.ts.map +1 -1
  85. package/lib/typescript/src/types.d.ts +11 -2
  86. package/lib/typescript/src/types.d.ts.map +1 -1
  87. package/package.json +14 -10
  88. package/src/AssentifyProvider.tsx +207 -147
  89. package/src/AssentifyWrapper.ts +55 -27
  90. package/src/BackgroundType.ts +7 -0
  91. package/src/helpers/parsers/FlowCompletedModelParser.ts +31 -0
  92. package/src/index.ts +1 -1
  93. package/src/types.ts +13 -2
  94. package/lib/commonjs/DoneFlags.js +0 -14
  95. package/lib/commonjs/DoneFlags.js.map +0 -1
  96. package/lib/module/DoneFlags.js +0 -8
  97. package/lib/module/DoneFlags.js.map +0 -1
  98. package/lib/typescript/lib/commonjs/DoneFlags.d.ts +0 -9
  99. package/lib/typescript/lib/commonjs/DoneFlags.d.ts.map +0 -1
  100. package/lib/typescript/lib/module/DoneFlags.d.ts +0 -8
  101. package/lib/typescript/lib/module/DoneFlags.d.ts.map +0 -1
  102. package/lib/typescript/src/DoneFlags.d.ts +0 -9
  103. package/lib/typescript/src/DoneFlags.d.ts.map +0 -1
  104. package/src/DoneFlags.ts +0 -11
@@ -8,6 +8,14 @@ class FaceMAtchController: UIViewController ,FaceMatchDelegate
8
8
  {
9
9
 
10
10
 
11
+ func onUploadingProgress(progress: Double) {
12
+ // NOTHING TODO
13
+ }
14
+
15
+ func onCollectingManualImages(){
16
+ // NOTHING TODO
17
+ }
18
+
11
19
 
12
20
  private var assentifySdk:AssentifySdk?;
13
21
  private var secondImage:String = "";
@@ -182,7 +190,7 @@ class FaceMAtchController: UIViewController ,FaceMatchDelegate
182
190
 
183
191
 
184
192
 
185
- func onComplete(dataModel: FaceResponseModel,doneFlag:DoneFlags) {
193
+ func onComplete(dataModel: FaceResponseModel) {
186
194
 
187
195
  if let outputProperties = try? JSONSerialization.data(withJSONObject: dataModel.faceExtractedModel?.outputProperties, options: []) {
188
196
  if UserDefaults.standard.object(forKey: String(self.stepID)) != nil {
@@ -191,7 +199,7 @@ class FaceMAtchController: UIViewController ,FaceMatchDelegate
191
199
  UserDefaults.standard.set(nil, forKey:String(self.stepID))
192
200
  UserDefaults.standard.set(outputProperties, forKey: String(self.stepID))
193
201
  }
194
- triggerCompleteEvent(eventName:"onComplete",dataModel:dataModel.faceExtractedModel,doneFlag:doneFlag)
202
+ triggerCompleteEvent(eventName:"onComplete",dataModel:dataModel.faceExtractedModel)
195
203
 
196
204
  DispatchQueue.main.async {
197
205
  self.faceMatch?.stopScanning()
@@ -248,119 +256,131 @@ class FaceMAtchController: UIViewController ,FaceMatchDelegate
248
256
  triggerEvent(eventName:"onUploadFailed",dataModel:dataModel)
249
257
  }
250
258
 
251
- func onEnvironmentalConditionsChange(brightnessEvents: BrightnessEvents,motion: MotionType,faceEvents: FaceEvents,zoom: ZoomType, detectedFaces:Int) {
252
- DispatchQueue.main.async {
253
- if self.start == false && self.currentActiveLiveEvents == ActiveLiveEvents.GOOD {
254
- // Detected Faces Handling
259
+ func onEnvironmentalConditionsChange( brightnessEvents: BrightnessEvents,
260
+ motion: MotionType,
261
+ faceEvents: FaceEvents,
262
+ zoom: ZoomType,
263
+ detectedFaces:Int,
264
+ isCentered: Bool,) {
265
+ DispatchQueue.main.async {
266
+ if self.start == false && self.currentActiveLiveEvents == ActiveLiveEvents.GOOD {
267
+ // Fetected Faces Handling
255
268
  if (detectedFaces > 1 ) {
256
- self.infoLabel?.text = "We detected more than one face.\nPlease keep just your face in view."
269
+ self.infoLabel?.text = "We detected more than one face.\nPlease keep just your face in view."
270
+ self.infoImage!.image = UIImage(named: "info_icon")
271
+ }
272
+ // Zoom Type Handling
273
+ else if (zoom != ZoomType.SENDING && zoom != ZoomType.NO_DETECT) {
274
+ if (zoom == ZoomType.ZOOM_IN) {
275
+ self.infoLabel?.text = "Please Move Closer"
276
+ self.infoImage!.image = UIImage(named: "zoom_in")
277
+ }
278
+ if (zoom == ZoomType.ZOOM_OUT) {
279
+ self.infoLabel?.text = "Please Move Further"
280
+ self.infoImage!.image = UIImage(named: "zoom_out")
281
+ }
282
+ }
283
+ // Motion Type Handling
284
+ else if (motion != MotionType.SENDING && motion != MotionType.NO_DETECT) {
285
+ self.infoLabel?.text = "Please Hold Your Hand"
286
+ self.infoImage!.image = UIImage(named: "info_icon")
287
+ }
288
+ // Brightness Events Handling
289
+ else if (brightnessEvents != BrightnessEvents.Good) {
290
+ if (brightnessEvents == BrightnessEvents.TooDark) {
291
+ self.infoLabel?.text = "Please increase the lighting"
292
+ self.infoImage!.image = UIImage(named: "info_icon")
293
+ }
294
+ if (brightnessEvents == BrightnessEvents.TooBright) {
295
+ self.infoLabel?.text = "Please reduce the lighting"
257
296
  self.infoImage!.image = UIImage(named: "info_icon")
297
+ }
258
298
  }
259
- // Zoom Type Handling
260
- else if (zoom != ZoomType.SENDING && zoom != ZoomType.NO_DETECT) {
261
- if (zoom == ZoomType.ZOOM_IN) {
262
- self.infoLabel?.text = "Please Move Closer"
263
- self.infoImage!.image = UIImage(named: "zoom_in")
264
- }
265
- if (zoom == ZoomType.ZOOM_OUT) {
266
- self.infoLabel?.text = "Please Move Further"
267
- self.infoImage!.image = UIImage(named: "zoom_out")
268
- }
269
- }
270
- // Motion Type Handling
271
- else if (motion != MotionType.SENDING && motion != MotionType.NO_DETECT) {
272
- self.infoLabel?.text = "Please Hold Your Hand"
273
- self.infoImage!.image = UIImage(named: "info_icon")
274
- }
275
- // Brightness Events Handling
276
- else if (brightnessEvents != BrightnessEvents.Good) {
277
- if (brightnessEvents == BrightnessEvents.TooDark) {
278
- self.infoLabel?.text = "Please increase the lighting"
279
- self.infoImage!.image = UIImage(named: "info_icon")
280
- }
281
- if (brightnessEvents == BrightnessEvents.TooBright) {
282
- self.infoLabel?.text = "Please reduce the lighting"
283
- self.infoImage!.image = UIImage(named: "info_icon")
284
- }
285
- }
286
- // Face Events Handling
287
- else if (faceEvents != FaceEvents.GOOD && faceEvents != FaceEvents.NO_DETECT) {
288
- if (faceEvents == FaceEvents.ROLL_LEFT) {
289
- self.infoLabel?.text = "Please tilt your head to the right"
290
- self.infoImage!.image = UIImage(named: "info_icon")
291
- }
292
- if (faceEvents == FaceEvents.ROLL_RIGHT) {
293
- self.infoLabel?.text = "Please tilt your head to the left"
294
- self.infoImage!.image = UIImage(named: "info_icon")
295
- }
296
- if (faceEvents == FaceEvents.YAW_LEFT) {
297
- self.infoLabel?.text = "Please turn your head to the right"
298
- self.infoImage!.image = UIImage(named: "info_icon")
299
- }
300
- if (faceEvents == FaceEvents.YAW_RIGHT) {
301
- self.infoLabel?.text = "Please turn your head to the left"
302
- self.infoImage!.image = UIImage(named: "info_icon")
303
- }
304
- if (faceEvents == FaceEvents.PITCH_UP) {
305
- self.infoLabel?.text = "Please lower your head"
306
- self.infoImage!.image = UIImage(named: "info_icon")
307
- }
308
- if (faceEvents == FaceEvents.PITCH_DOWN) {
309
- self.infoLabel?.text = "Please raise your head"
310
- self.infoImage!.image = UIImage(named: "info_icon")
311
- }
312
- }
313
- // Final Conditions
314
- else {
315
- if (motion == MotionType.SENDING && zoom == ZoomType.SENDING && brightnessEvents == BrightnessEvents.Good && faceEvents == FaceEvents.GOOD) {
316
- self.infoLabel?.text = "Hold Steady"
317
- self.infoImage!.image = UIImage(named: "info_icon")
318
- }
319
- if (motion == MotionType.NO_DETECT && zoom == ZoomType.NO_DETECT && faceEvents == FaceEvents.NO_DETECT) {
320
- self.infoLabel?.text = "Please face within circle"
321
- self.infoImage!.image = UIImage(named: "info_icon")
322
- }
323
- }
324
- } else {
299
+ // Face Events Handling
300
+ else if (faceEvents != FaceEvents.GOOD && faceEvents != FaceEvents.NO_DETECT) {
301
+ if (faceEvents == FaceEvents.ROLL_LEFT) {
302
+ self.infoLabel?.text = "Please tilt your head to the right"
303
+ self.infoImage!.image = UIImage(named: "info_icon")
304
+ }
305
+ if (faceEvents == FaceEvents.ROLL_RIGHT) {
306
+ self.infoLabel?.text = "Please tilt your head to the left"
307
+ self.infoImage!.image = UIImage(named: "info_icon")
308
+ }
309
+ if (faceEvents == FaceEvents.YAW_LEFT) {
310
+ self.infoLabel?.text = "Please turn your head to the right"
311
+ self.infoImage!.image = UIImage(named: "info_icon")
312
+ }
313
+ if (faceEvents == FaceEvents.YAW_RIGHT) {
314
+ self.infoLabel?.text = "Please turn your head to the left"
315
+ self.infoImage!.image = UIImage(named: "info_icon")
316
+ }
317
+ if (faceEvents == FaceEvents.PITCH_UP) {
318
+ self.infoLabel?.text = "Please lower your head"
319
+ self.infoImage!.image = UIImage(named: "info_icon")
320
+ }
321
+ if (faceEvents == FaceEvents.PITCH_DOWN) {
322
+ self.infoLabel?.text = "Please raise your head"
323
+ self.infoImage!.image = UIImage(named: "info_icon")
324
+ }
325
+ }
326
+ // Final Conditions
327
+ else {
328
+ if (motion == MotionType.SENDING && zoom == ZoomType.SENDING && brightnessEvents == BrightnessEvents.Good && faceEvents == FaceEvents.GOOD) {
329
+ self.infoLabel?.text = "Hold Steady"
330
+ self.infoImage!.image = UIImage(named: "info_icon")
331
+ }
332
+ if (motion == MotionType.NO_DETECT && zoom == ZoomType.NO_DETECT && faceEvents == FaceEvents.NO_DETECT) {
333
+ self.infoLabel?.text = "Please face within circle"
334
+ self.infoImage!.image = UIImage(named: "info_icon")
335
+ } else if(!isCentered){
336
+ self.start = false
337
+ self.infoLabel?.text = " Please center your face"
338
+ self.infoImage!.image = UIImage(named: "info_icon")
339
+ }
340
+ }
341
+ } else {
325
342
  if(self.currentActiveLiveEvents == ActiveLiveEvents.GOOD){
326
- self.infoLabel?.removeFromSuperview()
327
- self.infoImage?.removeFromSuperview()
328
- }
329
- }
330
- }
331
- }
332
-
333
- func onCurrentLiveMoveChange(activeLiveEvents: ActiveLiveEvents) {
334
- DispatchQueue.main.async {
335
- self.currentActiveLiveEvents = activeLiveEvents
336
- switch activeLiveEvents {
337
- case .YAW_LEFT:
338
- self.infoLabel?.text = "Please move your face left"
339
- self.infoImage?.image = UIImage(named: "info_icon")
340
- case .YAW_RIGHT:
341
- self.infoLabel?.text = "Please move your face right"
342
- self.infoImage?.image = UIImage(named: "info_icon")
343
- case .PITCH_UP:
344
- self.infoLabel?.text = "Please move your face up"
345
- self.infoImage?.image = UIImage(named: "info_icon")
346
- case .PITCH_DOWN:
347
- self.infoLabel?.text = "Please move your face down"
348
- self.infoImage?.image = UIImage(named: "info_icon")
349
- case .GOOD:
350
- break
351
- case .WINK_LEFT:
352
- self.infoLabel?.text = "Please wink with your left eye"
353
- self.infoImage?.image = UIImage(named: "info_icon")
354
- case .WINK_RIGHT:
355
- self.infoLabel?.text = "Please wink with your right eye"
356
- self.infoImage?.image = UIImage(named: "info_icon")
357
- case .BLINK:
358
- self.infoLabel?.text = "Please blink your eyes"
359
- self.infoImage?.image = UIImage(named: "info_icon")
343
+ self.infoLabel?.removeFromSuperview()
344
+ self.infoImage?.removeFromSuperview()
345
+ }
346
+
347
+ }
348
+ }
349
+ }
350
+
351
+ func onCurrentLiveMoveChange(activeLiveEvents: ActiveLiveEvents) {
352
+ DispatchQueue.main.async {
353
+ self.currentActiveLiveEvents = activeLiveEvents
354
+ switch activeLiveEvents {
355
+ case .YAW_LEFT:
356
+ self.infoLabel?.text = "Please move your face left"
357
+ self.infoImage?.image = UIImage(named: "info_icon")
358
+ case .YAW_RIGHT:
359
+ self.infoLabel?.text = "Please move your face right"
360
+ self.infoImage?.image = UIImage(named: "info_icon")
361
+ case .PITCH_UP:
362
+ self.infoLabel?.text = "Please move your face up"
363
+ self.infoImage?.image = UIImage(named: "info_icon")
364
+ case .PITCH_DOWN:
365
+ self.infoLabel?.text = "Please move your face down"
366
+ self.infoImage?.image = UIImage(named: "info_icon")
367
+ case .GOOD:
368
+ break
369
+ case .WINK_LEFT:
370
+ self.infoLabel?.text = "Please wink with your left eye"
371
+ self.infoImage?.image = UIImage(named: "info_icon")
372
+ case .WINK_RIGHT:
373
+ self.infoLabel?.text = "Please wink with your right eye"
374
+ self.infoImage?.image = UIImage(named: "info_icon")
375
+ case .BLINK:
376
+ self.infoLabel?.text = "Please blink your eyes"
377
+ self.infoImage?.image = UIImage(named: "info_icon")
360
378
  }
379
+
380
+ }
381
+ }
361
382
 
362
- }
363
- }
383
+
364
384
 
365
385
  func onHasTemplates(templates: [TemplatesByCountry]){
366
386
  }
@@ -377,24 +397,11 @@ class FaceMAtchController: UIViewController ,FaceMatchDelegate
377
397
 
378
398
  }
379
399
 
380
- func triggerCompleteEvent(eventName:String, dataModel: FaceExtractedModel?,doneFlag:DoneFlags){
400
+ func triggerCompleteEvent(eventName:String, dataModel: FaceExtractedModel?){
381
401
  var eventResultMap: [String: Any] = [:]
382
402
  if(dataModel != nil){
383
403
 
384
- var doneFlagValue = "";
385
- switch doneFlag {
386
- case .Success:
387
- doneFlagValue = "Success";
388
- case .LivenessFailed:
389
- doneFlagValue = "LivenessFailed";
390
- case .ExtractFailed:
391
- doneFlagValue = "ExtractFailed";
392
- case .MatchFailed:
393
- doneFlagValue = "MatchFailed";
394
- case .WrongTemplate:
395
- doneFlagValue = "WrongTemplate";
396
- }
397
- eventResultMap = ["FaceMatchDataModel": faceModelToJsonString(dataModel: dataModel) as Any,"DoneFlag":doneFlagValue]
404
+ eventResultMap = ["FaceMatchDataModel": faceModelToJsonString(dataModel: dataModel) as Any]
398
405
  }
399
406
  DispatchQueue.main.async {
400
407
  self.nativeAssentifySdk?.sendEvent(withName: eventName, body: eventResultMap)
@@ -6,6 +6,11 @@ import AssentifySdk
6
6
 
7
7
  class IDCardController: UIViewController ,ScanIDCardDelegate , ChildViewControllerDelegate
8
8
  {
9
+
10
+ func onUploadingProgress(progress: Double) {
11
+ // NOTHING TODO
12
+ }
13
+
9
14
  private var imageUrl: String? = "";
10
15
  private var apiKey: String? = "";
11
16
  private var isDone:Bool = false;
@@ -19,7 +24,7 @@ class IDCardController: UIViewController ,ScanIDCardDelegate , ChildViewControll
19
24
  private var language: String;
20
25
  private var flippingCard:Bool = false;
21
26
  private var showCountDown:Bool = true;
22
- private var _kycDocumentDetails:[KycDocumentDetails];
27
+ private var templatesByCountry: TemplatesByCountry;
23
28
  private var titleID:String? = "";
24
29
  private var nativeAssentifySdk:NativeAssentifySdk?;
25
30
  private var outputResultProperties: [String: Any]? = [:];
@@ -29,12 +34,12 @@ class IDCardController: UIViewController ,ScanIDCardDelegate , ChildViewControll
29
34
  private var takePhotoButton: UIButton?;
30
35
  private var backIDPage: UIView?;
31
36
 
32
- init(assentifySdk: AssentifySdk,nativeAssentifySdk:NativeAssentifySdk,holdHandColor: String,processingColor: String,kycDocumentDetails:[KycDocumentDetails],language:String,flippingCard:Bool,titleID:String,showCountDown:Bool,apiKey:String,stepID:Int,manualClickColor:String) {
37
+ init(assentifySdk: AssentifySdk,nativeAssentifySdk:NativeAssentifySdk,holdHandColor: String,processingColor: String,templatesByCountry:TemplatesByCountry,language:String,flippingCard:Bool,titleID:String,showCountDown:Bool,apiKey:String,stepID:Int,manualClickColor:String) {
33
38
  self.assentifySdk = assentifySdk
34
39
  self.nativeAssentifySdk = nativeAssentifySdk
35
40
  self.holdHandColor = holdHandColor
36
41
  self.processingColor = processingColor
37
- self._kycDocumentDetails = kycDocumentDetails
42
+ self.templatesByCountry = templatesByCountry
38
43
  self.language = language
39
44
  self.flippingCard = flippingCard
40
45
  self.titleID = titleID
@@ -56,7 +61,7 @@ class IDCardController: UIViewController ,ScanIDCardDelegate , ChildViewControll
56
61
  self.view.backgroundColor = .clear
57
62
  UIApplication.shared.isStatusBarHidden = false;
58
63
  DispatchQueue.main.async {
59
- self.scanID = self.assentifySdk?.startScanID(scanIDCardDelegate: self, kycDocumentDetails: self._kycDocumentDetails,language:self.language,stepId:self.stepID)
64
+ self.scanID = self.assentifySdk?.startScanID(scanIDCardDelegate: self, templatesByCountry: self.templatesByCountry,language:self.language,stepId:self.stepID)
60
65
  self.addChild( self.scanID!)
61
66
  self.view.addSubview( self.scanID!.view)
62
67
  self.scanID!.view.translatesAutoresizingMaskIntoConstraints = false
@@ -196,9 +201,10 @@ class IDCardController: UIViewController ,ScanIDCardDelegate , ChildViewControll
196
201
 
197
202
 
198
203
 
199
- func onComplete(dataModel: IDResponseModel, order: Int,doneFlag:DoneFlags) {
204
+ func onComplete(dataModel: IDResponseModel ,isFrontPage:Bool,isLastPage:Bool,classifiedTemplate: String) {
205
+
206
+ self.triggerCompleteEvent(eventName:"onComplete",dataModel:dataModel.iDExtractedModel,isFrontPage:isFrontPage,isLastPage: isLastPage ,classifiedTemplate:classifiedTemplate)
200
207
 
201
- self.triggerCompleteEvent(eventName:"onComplete",dataModel: dataModel.iDExtractedModel,doneFlag:doneFlag)
202
208
 
203
209
  outputResultProperties!.merge((dataModel.iDExtractedModel?.transformedProperties)!) { (_, new) in new }
204
210
 
@@ -206,14 +212,11 @@ class IDCardController: UIViewController ,ScanIDCardDelegate , ChildViewControll
206
212
  DispatchQueue.main.async {
207
213
  self.popUpMessage!.removeFromSuperview();
208
214
 
209
-
210
-
211
- if(self._kycDocumentDetails.count == 1){
215
+
216
+ if(isFrontPage){
212
217
  self.imageUrl = dataModel.iDExtractedModel?.imageUrl;
213
218
  }
214
-
215
- if(order == self._kycDocumentDetails.count-1 ){
216
-
219
+ if(isLastPage){
217
220
  self.mergeAndStoreOutputProperties(stepID: self.stepID, newProperties: self.outputResultProperties ?? [:])
218
221
 
219
222
  DispatchQueue.main.async {
@@ -223,12 +226,26 @@ class IDCardController: UIViewController ,ScanIDCardDelegate , ChildViewControll
223
226
  self.scanID?.removeFromParent()
224
227
  self.scanID = nil
225
228
  self.dismiss(animated: false)
226
- }
227
-
228
-
229
+ }
229
230
  }else{
230
231
  if(self.flippingCard){
231
232
  self.popUpMessage!.removeFromSuperview();
233
+ var imageURLString = ""
234
+ if !classifiedTemplate.isEmpty {
235
+ for template in self.templatesByCountry.templates {
236
+ for detail in template.kycDocumentDetails {
237
+ if detail.templateProcessingKeyInformation == classifiedTemplate {
238
+
239
+ if let other = template.kycDocumentDetails.first(where: {
240
+ $0.templateProcessingKeyInformation != classifiedTemplate
241
+ }) {
242
+ imageURLString = other.templateSpecimen
243
+ }
244
+
245
+ }
246
+ }
247
+ }
248
+ }
232
249
  self.backIDPage = showBackIDPage(
233
250
  on: self.view,
234
251
  backgroundHex: self.holdHandColor,
@@ -236,7 +253,7 @@ class IDCardController: UIViewController ,ScanIDCardDelegate , ChildViewControll
236
253
  title: "Please flip the card provided to take the back of the card.",
237
254
  subtitle: "Expected Card Type",
238
255
  buttonTitle: "Next",
239
- imageURLString: (self._kycDocumentDetails.last?.templateSpecimen)!,
256
+ imageURLString: imageURLString,
240
257
  initialBackgroundColorHex:self.manualClickColor,
241
258
  onBack: {
242
259
  self.backButtonTapped()
@@ -246,7 +263,7 @@ class IDCardController: UIViewController ,ScanIDCardDelegate , ChildViewControll
246
263
  (self.infoLabel, self.infoImage) = showInfo(view: self.view, text: "Please Present Your ID",initialTextColorHex:self.processingColor,initialBackgroundColorHex:self.holdHandColor,initialImageName:"info_icon")
247
264
  }
248
265
 
249
- self.scanID?.changeTemplateId(templateId: (self._kycDocumentDetails.last?.templateProcessingKeyInformation)!)
266
+ self.scanID?.changeTemplateId()
250
267
  self.backIDPage?.removeFromSuperview()
251
268
  }
252
269
  )
@@ -254,7 +271,7 @@ class IDCardController: UIViewController ,ScanIDCardDelegate , ChildViewControll
254
271
  }else{
255
272
  (self.infoLabel, self.infoImage) = showInfo(view: self.view, text: "Please Present Your ID",initialTextColorHex:self.processingColor,initialBackgroundColorHex:self.holdHandColor,initialImageName:"info_icon")
256
273
  }
257
- if(order == 0){
274
+ if(isFrontPage){
258
275
  self.imageUrl = dataModel.iDExtractedModel?.imageUrl;
259
276
  }
260
277
 
@@ -308,7 +325,10 @@ class IDCardController: UIViewController ,ScanIDCardDelegate , ChildViewControll
308
325
  triggerEvent(eventName:"onUploadFailed",dataModel:dataModel)
309
326
  }
310
327
 
311
- func onEnvironmentalConditionsChange( brightnessEvents: BrightnessEvents,motion: MotionType,zoom: ZoomType) {
328
+ func onEnvironmentalConditionsChange( brightnessEvents: BrightnessEvents,
329
+ motion: MotionType,
330
+ zoom: ZoomType,
331
+ isCentered: Bool,) {
312
332
  DispatchQueue.main.async {
313
333
  if self.start == false {
314
334
  if (zoom != ZoomType.SENDING && zoom != ZoomType.NO_DETECT) {
@@ -347,6 +367,10 @@ class IDCardController: UIViewController ,ScanIDCardDelegate , ChildViewControll
347
367
  self.start = false
348
368
  self.infoLabel?.text = "Please present ID"
349
369
  self.infoImage!.image = UIImage(named: "info_icon")
370
+ } else if(!isCentered){
371
+ self.start = false
372
+ self.infoLabel?.text = " Please center your card"
373
+ self.infoImage!.image = UIImage(named: "info_icon")
350
374
  }
351
375
  }
352
376
  } else {
@@ -354,26 +378,15 @@ class IDCardController: UIViewController ,ScanIDCardDelegate , ChildViewControll
354
378
  self.infoImage?.removeFromSuperview()
355
379
  }
356
380
  }
357
-
381
+
358
382
  }
383
+
359
384
 
360
- func triggerCompleteEvent(eventName:String, dataModel: IDExtractedModel?,doneFlag:DoneFlags){
385
+ func triggerCompleteEvent(eventName:String, dataModel: IDExtractedModel?,isFrontPage:Bool,isLastPage:Bool,classifiedTemplate: String){
361
386
  var eventResultMap: [String: Any] = [:]
362
387
  if(dataModel != nil){
363
- var doneFlagValue = "";
364
- switch doneFlag {
365
- case .Success:
366
- doneFlagValue = "Success";
367
- case .LivenessFailed:
368
- doneFlagValue = "LivenessFailed";
369
- case .ExtractFailed:
370
- doneFlagValue = "ExtractFailed";
371
- case .MatchFailed:
372
- doneFlagValue = "MatchFailed";
373
- case .WrongTemplate:
374
- doneFlagValue = "WrongTemplate";
375
- }
376
- eventResultMap = ["IdDataModel": iDModelToJsonString(dataModel:dataModel) as Any,"DoneFlag":doneFlagValue]
388
+
389
+ eventResultMap = ["IdDataModel": iDModelToJsonString(dataModel:dataModel) as Any, "isFrontPage":isFrontPage.description,"isLastPage":isLastPage.description]
377
390
  }
378
391
 
379
392
  DispatchQueue.main.async {
@@ -8,7 +8,10 @@ class OtherController: UIViewController ,ScanOtherDelegate , ChildViewController
8
8
  {
9
9
 
10
10
 
11
-
11
+ func onUploadingProgress(progress: Double) {
12
+ // NOTHING TODO
13
+ }
14
+
12
15
 
13
16
  private var isDone:Bool = false;
14
17
  private var assentifySdk:AssentifySdk?;
@@ -183,7 +186,7 @@ class OtherController: UIViewController ,ScanOtherDelegate , ChildViewController
183
186
  }
184
187
 
185
188
 
186
- func onComplete(dataModel: OtherResponseModel,doneFlag:DoneFlags) {
189
+ func onComplete(dataModel: OtherResponseModel) {
187
190
  if(!isDone){
188
191
  isDone = true;
189
192
  if let outputProperties = try? JSONSerialization.data(withJSONObject: dataModel.otherExtractedModel?.transformedProperties, options: []) {
@@ -193,7 +196,7 @@ class OtherController: UIViewController ,ScanOtherDelegate , ChildViewController
193
196
  UserDefaults.standard.set(nil, forKey:String(self.stepID))
194
197
  UserDefaults.standard.set(outputProperties, forKey: String(self.stepID))
195
198
  }
196
- triggerCompleteEvent(eventName:"onComplete",dataModel:dataModel.otherExtractedModel,doneFlag:doneFlag)
199
+ triggerCompleteEvent(eventName:"onComplete",dataModel:dataModel.otherExtractedModel)
197
200
  DispatchQueue.main.async {
198
201
  self.scanOther?.stopScanning();
199
202
  self.scanOther?.willMove(toParent: nil)
@@ -305,24 +308,12 @@ class OtherController: UIViewController ,ScanOtherDelegate , ChildViewController
305
308
 
306
309
 
307
310
 
308
- func triggerCompleteEvent(eventName:String, dataModel: OtherExtractedModel?,doneFlag:DoneFlags){
311
+ func triggerCompleteEvent(eventName:String, dataModel: OtherExtractedModel?){
309
312
  var eventResultMap: [String: Any] = [:]
310
313
  if(dataModel != nil){
311
- var doneFlagValue = "";
312
- switch doneFlag {
313
- case .Success:
314
- doneFlagValue = "Success";
315
- case .LivenessFailed:
316
- doneFlagValue = "LivenessFailed";
317
- case .ExtractFailed:
318
- doneFlagValue = "ExtractFailed";
319
- case .MatchFailed:
320
- doneFlagValue = "MatchFailed";
321
- case .WrongTemplate:
322
- doneFlagValue = "WrongTemplate";
323
- }
314
+
324
315
  eventResultMap = [
325
- "OtherDataModel": otherModelToJsonString(dataModel: dataModel) as Any,"DoneFlag":doneFlagValue
316
+ "OtherDataModel": otherModelToJsonString(dataModel: dataModel) as Any
326
317
  ]
327
318
  }
328
319
  DispatchQueue.main.async {