@smile_identity/react-native 10.0.0-beta01 → 10.0.0-beta03

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 (123) hide show
  1. package/README.md +1 -1
  2. package/android/gradle.properties +1 -1
  3. package/android/src/main/java/com/smileidentity/react/Mapper.kt +179 -0
  4. package/android/src/main/java/com/smileidentity/react/SmileIdModule.kt +76 -49
  5. package/android/src/main/java/com/smileidentity/react/SmileIdPackage.kt +4 -2
  6. package/android/src/main/java/com/smileidentity/react/utils/ReactUtils.kt +9 -38
  7. package/android/src/main/java/com/smileidentity/react/viewmanagers/SmileIDBiometricKYCViewManager.kt +41 -9
  8. package/android/src/main/java/com/smileidentity/react/viewmanagers/SmileIDConsentViewManager.kt +83 -0
  9. package/android/src/main/java/com/smileidentity/react/viewmanagers/SmileIDDocumentVerificationViewManager.kt +45 -9
  10. package/android/src/main/java/com/smileidentity/react/viewmanagers/SmileIDEnhancedDocumentVerificationViewManager.kt +77 -0
  11. package/android/src/main/java/com/smileidentity/react/viewmanagers/SmileIDSmartSelfieAuthenticationViewManager.kt +36 -9
  12. package/android/src/main/java/com/smileidentity/react/viewmanagers/SmileIDSmartSelfieEnrollmentViewManager.kt +36 -9
  13. package/android/src/main/java/com/smileidentity/react/views/SmileIDBiometricKYCView.kt +64 -0
  14. package/android/src/main/java/com/smileidentity/react/views/SmileIDConsentView.kt +67 -0
  15. package/android/src/main/java/com/smileidentity/react/views/SmileIDDocumentVerificationView.kt +77 -0
  16. package/android/src/main/java/com/smileidentity/react/views/SmileIDEnhancedDocumentVerificationView.kt +71 -0
  17. package/android/src/main/java/com/smileidentity/react/views/{SmileIDSmartSelfieAuthentication.kt → SmileIDSmartSelfieAuthenticationView.kt} +15 -4
  18. package/android/src/main/java/com/smileidentity/react/views/{SmileIDSmartSelfieEnrollment.kt → SmileIDSmartSelfieEnrollmentView.kt} +14 -5
  19. package/android/src/main/java/com/smileidentity/react/views/SmileIDView.kt +3 -27
  20. package/android/src/oldarch/SmileIdSpec.kt +26 -1
  21. package/ios/RNDelegates/SmileIDUIViewDelegate.swift +4 -0
  22. package/ios/RNDelegates/SmileIDViewDelegate.swift +5 -0
  23. package/ios/RNSmileID.mm +7 -0
  24. package/ios/RNSmileID.swift +147 -0
  25. package/ios/SmileId.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  26. package/ios/SmileId.xcodeproj/project.xcworkspace/xcuserdata/japhetndhlovu.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  27. package/ios/SmileId.xcodeproj/xcuserdata/japhetndhlovu.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
  28. package/ios/Utils/SmileIDDictExt.swift +50 -0
  29. package/ios/Utils/SmileIDUtils.swift +10 -0
  30. package/ios/View/BaseSmileIDView.swift +35 -0
  31. package/ios/View/SmileIDBiometricKYCView.swift +46 -0
  32. package/ios/View/SmileIDConsentView.swift +36 -0
  33. package/ios/View/SmileIDDocumentVerificationView.swift +55 -0
  34. package/ios/View/SmileIDEnhancedDocumentVerificationView.swift +55 -0
  35. package/ios/View/SmileIDSmartSelfieAuthView.swift +41 -0
  36. package/ios/View/SmileIDSmartSelfieEnrollmentView.swift +41 -0
  37. package/ios/ViewManagers/SmileIDBaseViewManager.swift +18 -0
  38. package/ios/ViewManagers/SmileIDBiometricKYCViewManager.m +6 -0
  39. package/ios/ViewManagers/SmileIDBiometricKYCViewManager.swift +34 -0
  40. package/ios/ViewManagers/SmileIDConsentViewManager.m +6 -0
  41. package/ios/ViewManagers/SmileIDConsentViewManager.swift +47 -0
  42. package/ios/ViewManagers/SmileIDDocumentVerificationViewManager.m +6 -0
  43. package/ios/ViewManagers/SmileIDDocumentVerificationViewManager.swift +49 -0
  44. package/ios/ViewManagers/SmileIDEnhancedDocumentVerificationViewManager.m +6 -0
  45. package/ios/ViewManagers/SmileIDEnhancedDocumentVerificationViewManager.swift +49 -0
  46. package/ios/ViewManagers/SmileIDSmartSelfieAuthenticationViewManager.m +6 -0
  47. package/ios/ViewManagers/SmileIDSmartSelfieAuthenticationViewManager.swift +27 -0
  48. package/ios/ViewManagers/SmileIDSmartSelfieEnrollmentViewManager.m +6 -0
  49. package/ios/ViewManagers/SmileIDSmartSelfieEnrollmentViewManager.swift +27 -0
  50. package/ios/ViewModels/SmileIDProductModel.swift +30 -0
  51. package/ios/react-native-smile-id-Bridging-Header.h +8 -0
  52. package/lib/commonjs/NativeSmileId.js +1 -1
  53. package/lib/commonjs/NativeSmileId.js.map +1 -1
  54. package/lib/commonjs/SmileIDBiometricKYCView.js +40 -0
  55. package/lib/commonjs/SmileIDBiometricKYCView.js.map +1 -0
  56. package/lib/commonjs/SmileIDConsentView.js +40 -0
  57. package/lib/commonjs/SmileIDConsentView.js.map +1 -0
  58. package/lib/commonjs/SmileIDDocumentVerificationView.js +40 -0
  59. package/lib/commonjs/SmileIDDocumentVerificationView.js.map +1 -0
  60. package/lib/commonjs/SmileIDEnhancedDocumentVerificationView.js +40 -0
  61. package/lib/commonjs/SmileIDEnhancedDocumentVerificationView.js.map +1 -0
  62. package/lib/commonjs/SmileIDSmartSelfieAuthenticationView.js +40 -0
  63. package/lib/commonjs/SmileIDSmartSelfieAuthenticationView.js.map +1 -0
  64. package/lib/commonjs/SmileIDSmartSelfieEnrollmentView.js +40 -0
  65. package/lib/commonjs/SmileIDSmartSelfieEnrollmentView.js.map +1 -0
  66. package/lib/commonjs/index.js +194 -27
  67. package/lib/commonjs/index.js.map +1 -1
  68. package/lib/commonjs/types.js +517 -0
  69. package/lib/commonjs/types.js.map +1 -0
  70. package/lib/module/NativeSmileId.js +1 -1
  71. package/lib/module/NativeSmileId.js.map +1 -1
  72. package/lib/module/SmileIDBiometricKYCView.js +30 -0
  73. package/lib/module/SmileIDBiometricKYCView.js.map +1 -0
  74. package/lib/module/SmileIDConsentView.js +30 -0
  75. package/lib/module/SmileIDConsentView.js.map +1 -0
  76. package/lib/module/SmileIDDocumentVerificationView.js +30 -0
  77. package/lib/module/SmileIDDocumentVerificationView.js.map +1 -0
  78. package/lib/module/SmileIDEnhancedDocumentVerificationView.js +30 -0
  79. package/lib/module/SmileIDEnhancedDocumentVerificationView.js.map +1 -0
  80. package/lib/module/SmileIDSmartSelfieAuthenticationView.js +30 -0
  81. package/lib/module/SmileIDSmartSelfieAuthenticationView.js.map +1 -0
  82. package/lib/module/SmileIDSmartSelfieEnrollmentView.js +30 -0
  83. package/lib/module/SmileIDSmartSelfieEnrollmentView.js.map +1 -0
  84. package/lib/module/index.js +33 -21
  85. package/lib/module/index.js.map +1 -1
  86. package/lib/module/types.js +472 -0
  87. package/lib/module/types.js.map +1 -0
  88. package/lib/typescript/NativeSmileId.d.ts +22 -3
  89. package/lib/typescript/NativeSmileId.d.ts.map +1 -1
  90. package/lib/typescript/SmileIDBiometricKYCView.d.ts +8 -0
  91. package/lib/typescript/SmileIDBiometricKYCView.d.ts.map +1 -0
  92. package/lib/typescript/SmileIDConsentView.d.ts +8 -0
  93. package/lib/typescript/SmileIDConsentView.d.ts.map +1 -0
  94. package/lib/typescript/SmileIDDocumentVerificationView.d.ts +8 -0
  95. package/lib/typescript/SmileIDDocumentVerificationView.d.ts.map +1 -0
  96. package/lib/typescript/SmileIDEnhancedDocumentVerificationView.d.ts +8 -0
  97. package/lib/typescript/SmileIDEnhancedDocumentVerificationView.d.ts.map +1 -0
  98. package/lib/typescript/SmileIDSmartSelfieAuthenticationView.d.ts +8 -0
  99. package/lib/typescript/SmileIDSmartSelfieAuthenticationView.d.ts.map +1 -0
  100. package/lib/typescript/SmileIDSmartSelfieEnrollmentView.d.ts +8 -0
  101. package/lib/typescript/SmileIDSmartSelfieEnrollmentView.d.ts.map +1 -0
  102. package/lib/typescript/index.d.ts +24 -86
  103. package/lib/typescript/index.d.ts.map +1 -1
  104. package/lib/typescript/types.d.ts +504 -0
  105. package/lib/typescript/types.d.ts.map +1 -0
  106. package/package.json +3 -4
  107. package/react-native-smile-id.podspec +2 -2
  108. package/src/NativeSmileId.ts +68 -9
  109. package/src/SmileIDBiometricKYCView.tsx +45 -0
  110. package/src/SmileIDConsentView.tsx +44 -0
  111. package/src/SmileIDDocumentVerificationView.tsx +51 -0
  112. package/src/SmileIDEnhancedDocumentVerificationView.tsx +51 -0
  113. package/src/SmileIDSmartSelfieAuthenticationView.tsx +51 -0
  114. package/src/SmileIDSmartSelfieEnrollmentView.tsx +51 -0
  115. package/src/index.tsx +86 -122
  116. package/src/types.ts +1084 -0
  117. package/android/src/main/assets/smile_config.json +0 -9
  118. package/android/src/main/java/com/smileidentity/react/viewmanagers/SmileIDBVNConsentViewManager.kt +0 -42
  119. package/android/src/main/java/com/smileidentity/react/views/SmileIDBVNConsentScreen.kt +0 -54
  120. package/android/src/main/java/com/smileidentity/react/views/SmileIDBiometricKYC.kt +0 -89
  121. package/android/src/main/java/com/smileidentity/react/views/SmileIDDocumentVerification.kt +0 -59
  122. package/ios/SmileId.h +0 -12
  123. package/ios/SmileId.mm +0 -27
@@ -1,17 +1,21 @@
1
1
  package com.smileidentity.react.viewmanagers
2
2
 
3
3
  import com.facebook.react.bridge.ReactApplicationContext
4
- import com.facebook.react.bridge.ReadableMap
4
+ import com.facebook.react.bridge.ReadableArray
5
5
  import com.facebook.react.module.annotations.ReactModule
6
6
  import com.facebook.react.uimanager.SimpleViewManager
7
7
  import com.facebook.react.uimanager.ThemedReactContext
8
- import com.facebook.react.uimanager.annotations.ReactProp
9
- import com.smileidentity.react.views.SmileIDDocumentVerification
8
+ import com.smileidentity.react.utils.getBoolOrDefault
9
+ import com.smileidentity.react.utils.getFloatOrDefault
10
+ import com.smileidentity.react.utils.getMapOrDefault
11
+ import com.smileidentity.react.utils.getStringOrDefault
12
+ import com.smileidentity.react.utils.toMap
13
+ import com.smileidentity.react.views.SmileIDDocumentVerificationView
10
14
 
11
15
 
12
16
  @ReactModule(name = SmileIDDocumentVerificationViewManager.NAME)
13
17
  class SmileIDDocumentVerificationViewManager(private val reactApplicationContext: ReactApplicationContext) :
14
- SimpleViewManager<SmileIDDocumentVerification>() {
18
+ SimpleViewManager<SmileIDDocumentVerificationView>() {
15
19
  override fun getName(): String {
16
20
  return NAME
17
21
  }
@@ -26,17 +30,49 @@ class SmileIDDocumentVerificationViewManager(private val reactApplicationContext
26
30
  )
27
31
  }
28
32
 
29
- @ReactProp(name = "product")
30
- fun setProduct(view: SmileIDDocumentVerification, product: ReadableMap) {
31
- view.product = product
33
+ override fun getCommandsMap(): Map<String, Int> {
34
+ return mapOf("setParams" to COMMAND_SET_PARAMS)
32
35
  }
33
36
 
34
- override fun createViewInstance(p0: ThemedReactContext): SmileIDDocumentVerification {
35
- return SmileIDDocumentVerification(reactApplicationContext)
37
+ override fun receiveCommand(
38
+ view: SmileIDDocumentVerificationView,
39
+ commandId: String?,
40
+ args: ReadableArray?
41
+ ) {
42
+ super.receiveCommand(view, commandId, args)
43
+ when (commandId?.toInt()) {
44
+ COMMAND_SET_PARAMS -> {
45
+ // Extract params from args and apply to view
46
+ val params = args?.getMap(0)
47
+ params?.let {
48
+ val countryCode = params.getString("countryCode")
49
+ ?: return view.emitFailure(IllegalArgumentException("countryCode is required to run Document Verification"))
50
+ view.extraPartnerParams = params.getMapOrDefault("extraPartnerParams")?.toMap()
51
+ view.userId = params.getStringOrDefault("userId")
52
+ view.jobId = params.getStringOrDefault("jobId")
53
+ view.countryCode = countryCode
54
+ view.allowAgentMode = params.getBoolOrDefault("allowAgentMode", false)
55
+ view.showAttribution = params.getBoolOrDefault("showAttribution", true)
56
+ view.captureBothSides = params.getBoolOrDefault("captureBothSides", false)
57
+ view.showInstructions = params.getBoolOrDefault("showInstructions", true)
58
+ view.allowGalleryUpload = params.getBoolOrDefault("allowGalleryUpload", false)
59
+ view.bypassSelfieCaptureWithFilePath = params.getStringOrDefault("bypassSelfieCaptureWithFilePath", null)
60
+ view.documentType = params.getStringOrDefault("documentType", null)
61
+ view.idAspectRatio = params.getFloatOrDefault("idAspectRatio", -1f)
62
+ view.allowNewEnroll = params.getBoolOrDefault("allowNewEnroll", false)
63
+ view.renderContent()
64
+ }
65
+ }
66
+ }
67
+ }
68
+
69
+ override fun createViewInstance(p0: ThemedReactContext): SmileIDDocumentVerificationView {
70
+ return SmileIDDocumentVerificationView(reactApplicationContext)
36
71
  }
37
72
 
38
73
  companion object {
39
74
  const val NAME = "SmileIDDocumentVerificationView"
75
+ const val COMMAND_SET_PARAMS = 4
40
76
  }
41
77
 
42
78
  }
@@ -0,0 +1,77 @@
1
+ package com.smileidentity.react.viewmanagers
2
+
3
+ import com.facebook.react.bridge.ReactApplicationContext
4
+ import com.facebook.react.bridge.ReadableArray
5
+ import com.facebook.react.module.annotations.ReactModule
6
+ import com.facebook.react.uimanager.SimpleViewManager
7
+ import com.facebook.react.uimanager.ThemedReactContext
8
+ import com.smileidentity.react.utils.getBoolOrDefault
9
+ import com.smileidentity.react.utils.getFloatOrDefault
10
+ import com.smileidentity.react.utils.getMapOrDefault
11
+ import com.smileidentity.react.utils.getStringOrDefault
12
+ import com.smileidentity.react.utils.toMap
13
+ import com.smileidentity.react.views.SmileIDEnhancedDocumentVerificationView
14
+
15
+
16
+ @ReactModule(name = SmileIDEnhancedDocumentVerificationViewManager.NAME)
17
+ class SmileIDEnhancedDocumentVerificationViewManager(private val reactApplicationContext: ReactApplicationContext) :
18
+ SimpleViewManager<SmileIDEnhancedDocumentVerificationView>() {
19
+ override fun getName(): String {
20
+ return NAME
21
+ }
22
+
23
+ override fun getExportedCustomBubblingEventTypeConstants(): Map<String, Any> {
24
+ return mapOf(
25
+ "onSmileResult" to mapOf(
26
+ "phasedRegistrationNames" to mapOf(
27
+ "bubbled" to "onResult"
28
+ )
29
+ )
30
+ )
31
+ }
32
+
33
+ override fun getCommandsMap(): Map<String, Int> {
34
+ return mapOf("setParams" to COMMAND_SET_PARAMS)
35
+ }
36
+
37
+ override fun receiveCommand(
38
+ view: SmileIDEnhancedDocumentVerificationView,
39
+ commandId: String?,
40
+ args: ReadableArray?
41
+ ) {
42
+ super.receiveCommand(view, commandId, args)
43
+ when (commandId?.toInt()) {
44
+ COMMAND_SET_PARAMS -> {
45
+ // Extract params from args and apply to view
46
+ val params = args?.getMap(0)
47
+ params?.let {
48
+ val countryCode = params.getString("countryCode")
49
+ ?: return view.emitFailure(IllegalArgumentException("countryCode is required to run Enhanced Document Verification"))
50
+ view.extraPartnerParams = params.getMapOrDefault("extraPartnerParams")?.toMap()
51
+ view.userId = params.getStringOrDefault("userId")
52
+ view.jobId = params.getStringOrDefault("jobId")
53
+ view.countryCode = countryCode
54
+ view.allowAgentMode = params.getBoolOrDefault("allowAgentMode", false)
55
+ view.showAttribution = params.getBoolOrDefault("showAttribution", true)
56
+ view.captureBothSides = params.getBoolOrDefault("captureBothSides", false)
57
+ view.showInstructions = params.getBoolOrDefault("showInstructions", true)
58
+ view.allowGalleryUpload = params.getBoolOrDefault("allowGalleryUpload", false)
59
+ view.documentType = params.getStringOrDefault("documentType")
60
+ view.idAspectRatio = params.getFloatOrDefault("idAspectRatio", -1f)
61
+ view.allowNewEnroll = params.getBoolOrDefault("allowNewEnroll", false)
62
+ view.renderContent()
63
+ }
64
+ }
65
+ }
66
+ }
67
+
68
+ override fun createViewInstance(p0: ThemedReactContext): SmileIDEnhancedDocumentVerificationView {
69
+ return SmileIDEnhancedDocumentVerificationView(reactApplicationContext)
70
+ }
71
+
72
+ companion object {
73
+ const val NAME = "SmileIDEnhancedDocumentVerificationView"
74
+ const val COMMAND_SET_PARAMS = 3
75
+ }
76
+
77
+ }
@@ -1,17 +1,20 @@
1
1
  package com.smileidentity.react.viewmanagers
2
2
 
3
3
  import com.facebook.react.bridge.ReactApplicationContext
4
- import com.facebook.react.bridge.ReadableMap
4
+ import com.facebook.react.bridge.ReadableArray
5
5
  import com.facebook.react.module.annotations.ReactModule
6
6
  import com.facebook.react.uimanager.SimpleViewManager
7
7
  import com.facebook.react.uimanager.ThemedReactContext
8
- import com.facebook.react.uimanager.annotations.ReactProp
9
- import com.smileidentity.react.views.SmileIDSmartSelfieAuthentication
8
+ import com.smileidentity.react.utils.getBoolOrDefault
9
+ import com.smileidentity.react.utils.getMapOrDefault
10
+ import com.smileidentity.react.utils.getStringOrDefault
11
+ import com.smileidentity.react.utils.toMap
12
+ import com.smileidentity.react.views.SmileIDSmartSelfieAuthenticationView
10
13
 
11
14
 
12
15
  @ReactModule(name = SmileIDSmartSelfieAuthenticationViewManager.NAME)
13
16
  class SmileIDSmartSelfieAuthenticationViewManager(private val reactApplicationContext: ReactApplicationContext) :
14
- SimpleViewManager<SmileIDSmartSelfieAuthentication>() {
17
+ SimpleViewManager<SmileIDSmartSelfieAuthenticationView>() {
15
18
  override fun getName(): String {
16
19
  return NAME
17
20
  }
@@ -26,17 +29,41 @@ class SmileIDSmartSelfieAuthenticationViewManager(private val reactApplicationCo
26
29
  )
27
30
  }
28
31
 
29
- @ReactProp(name = "product")
30
- fun setProduct(view: SmileIDSmartSelfieAuthentication, product: ReadableMap) {
31
- view.product = product
32
+ override fun getCommandsMap(): Map<String, Int> {
33
+ return mapOf("setParams" to COMMAND_SET_PARAMS)
32
34
  }
33
35
 
34
- override fun createViewInstance(p0: ThemedReactContext): SmileIDSmartSelfieAuthentication {
35
- return SmileIDSmartSelfieAuthentication(reactApplicationContext)
36
+ override fun receiveCommand(
37
+ view: SmileIDSmartSelfieAuthenticationView,
38
+ commandId: String?,
39
+ args: ReadableArray?
40
+ ) {
41
+ super.receiveCommand(view, commandId, args)
42
+ when (commandId?.toInt()) {
43
+ COMMAND_SET_PARAMS -> {
44
+ // Extract params from args and apply to view
45
+ val params = args?.getMap(0)
46
+ params?.let {
47
+ view.extraPartnerParams = params.getMapOrDefault("extraPartnerParams")?.toMap()
48
+ view.userId = params.getStringOrDefault("userId")
49
+ view.jobId = params.getStringOrDefault("jobId")
50
+ view.allowAgentMode = params.getBoolOrDefault("allowAgentMode", false)
51
+ view.showAttribution = params.getBoolOrDefault("showAttribution", true)
52
+ view.showInstructions = params.getBoolOrDefault("showInstructions", true)
53
+ view.allowNewEnroll = params.getBoolOrDefault("allowNewEnroll", false)
54
+ view.renderContent()
55
+ }
56
+ }
57
+ }
58
+ }
59
+
60
+ override fun createViewInstance(p0: ThemedReactContext): SmileIDSmartSelfieAuthenticationView {
61
+ return SmileIDSmartSelfieAuthenticationView(reactApplicationContext)
36
62
  }
37
63
 
38
64
  companion object {
39
65
  const val NAME = "SmileIDSmartSelfieAuthenticationView"
66
+ const val COMMAND_SET_PARAMS = 2
40
67
  }
41
68
 
42
69
  }
@@ -1,17 +1,20 @@
1
1
  package com.smileidentity.react.viewmanagers
2
2
 
3
3
  import com.facebook.react.bridge.ReactApplicationContext
4
- import com.facebook.react.bridge.ReadableMap
4
+ import com.facebook.react.bridge.ReadableArray
5
5
  import com.facebook.react.module.annotations.ReactModule
6
6
  import com.facebook.react.uimanager.SimpleViewManager
7
7
  import com.facebook.react.uimanager.ThemedReactContext
8
- import com.facebook.react.uimanager.annotations.ReactProp
9
- import com.smileidentity.react.views.SmileIDSmartSelfieEnrollment
8
+ import com.smileidentity.react.utils.getBoolOrDefault
9
+ import com.smileidentity.react.utils.getMapOrDefault
10
+ import com.smileidentity.react.utils.getStringOrDefault
11
+ import com.smileidentity.react.utils.toMap
12
+ import com.smileidentity.react.views.SmileIDSmartSelfieEnrollmentView
10
13
 
11
14
 
12
15
  @ReactModule(name = SmileIDSmartSelfieEnrollmentViewManager.NAME)
13
16
  class SmileIDSmartSelfieEnrollmentViewManager(private val reactApplicationContext: ReactApplicationContext) :
14
- SimpleViewManager<SmileIDSmartSelfieEnrollment>() {
17
+ SimpleViewManager<SmileIDSmartSelfieEnrollmentView>() {
15
18
  override fun getName(): String {
16
19
  return NAME
17
20
  }
@@ -26,17 +29,41 @@ class SmileIDSmartSelfieEnrollmentViewManager(private val reactApplicationContex
26
29
  )
27
30
  }
28
31
 
29
- @ReactProp(name = "product")
30
- fun setProduct(view: SmileIDSmartSelfieEnrollment, product: ReadableMap) {
31
- view.product = product
32
+ override fun getCommandsMap(): Map<String, Int> {
33
+ return mapOf("setParams" to COMMAND_SET_PARAMS)
32
34
  }
33
35
 
34
- override fun createViewInstance(p0: ThemedReactContext): SmileIDSmartSelfieEnrollment {
35
- return SmileIDSmartSelfieEnrollment(reactApplicationContext)
36
+ override fun receiveCommand(
37
+ view: SmileIDSmartSelfieEnrollmentView,
38
+ commandId: String?,
39
+ args: ReadableArray?
40
+ ) {
41
+ super.receiveCommand(view, commandId, args)
42
+ when (commandId?.toInt()) {
43
+ COMMAND_SET_PARAMS -> {
44
+ // Extract params from args and apply to view
45
+ val params = args?.getMap(0)
46
+ params?.let {
47
+ view.extraPartnerParams = params.getMapOrDefault("extraPartnerParams")?.toMap()
48
+ view.userId = params.getStringOrDefault("userId")
49
+ view.jobId = params.getStringOrDefault("jobId")
50
+ view.allowAgentMode = params.getBoolOrDefault("allowAgentMode", false)
51
+ view.showAttribution = params.getBoolOrDefault("showAttribution", true)
52
+ view.showInstructions = params.getBoolOrDefault("showInstructions", true)
53
+ view.allowNewEnroll = params.getBoolOrDefault("allowNewEnroll", false)
54
+ view.renderContent()
55
+ }
56
+ }
57
+ }
58
+ }
59
+
60
+ override fun createViewInstance(p0: ThemedReactContext): SmileIDSmartSelfieEnrollmentView {
61
+ return SmileIDSmartSelfieEnrollmentView(reactApplicationContext)
36
62
  }
37
63
 
38
64
  companion object {
39
65
  const val NAME = "SmileIDSmartSelfieEnrollmentView"
66
+ const val COMMAND_SET_PARAMS = 1
40
67
  }
41
68
 
42
69
  }
@@ -0,0 +1,64 @@
1
+ package com.smileidentity.react.views
2
+
3
+ import androidx.compose.runtime.CompositionLocalProvider
4
+ import androidx.compose.runtime.saveable.rememberSaveable
5
+ import androidx.compose.ui.platform.ViewCompositionStrategy
6
+ import androidx.lifecycle.ViewModelStoreOwner
7
+ import androidx.lifecycle.viewmodel.compose.LocalViewModelStoreOwner
8
+ import com.facebook.react.bridge.ReactApplicationContext
9
+ import com.smileidentity.SmileID
10
+ import com.smileidentity.compose.BiometricKYC
11
+ import com.smileidentity.models.IdInfo
12
+ import com.smileidentity.results.BiometricKycResult
13
+ import com.smileidentity.results.SmileIDResult
14
+ import com.smileidentity.util.randomJobId
15
+ import com.smileidentity.util.randomUserId
16
+ import kotlinx.collections.immutable.toImmutableMap
17
+ import timber.log.Timber
18
+
19
+ class SmileIDBiometricKYCView(context: ReactApplicationContext) : SmileIDView(context) {
20
+ var idInfo: IdInfo? = null
21
+ override fun renderContent() {
22
+ idInfo ?: run {
23
+ emitFailure(IllegalArgumentException("idInfo is required for BiometricKYC"))
24
+ return
25
+ }
26
+ composeView.apply {
27
+ setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnDetachedFromWindow)
28
+ setContent {
29
+ CompositionLocalProvider(LocalViewModelStoreOwner provides (context as ViewModelStoreOwner)) {
30
+ SmileID.BiometricKYC(
31
+ idInfo = idInfo!!,
32
+ userId = userId ?: rememberSaveable { randomUserId() },
33
+ jobId = jobId ?: rememberSaveable { randomJobId() },
34
+ allowAgentMode = allowAgentMode ?: false,
35
+ allowNewEnroll = allowNewEnroll ?: false,
36
+ showAttribution = showAttribution ?: true,
37
+ showInstructions = showInstructions ?: true,
38
+ extraPartnerParams = (extraPartnerParams ?: mapOf()).toImmutableMap(),
39
+ ) { result ->
40
+ when (result) {
41
+ is SmileIDResult.Success -> {
42
+ val json = try {
43
+ SmileID.moshi
44
+ .adapter(BiometricKycResult::class.java)
45
+ .toJson(result.data)
46
+ } catch (e: Exception) {
47
+ Timber.w(e)
48
+ "null"
49
+ }
50
+ emitSuccess(json)
51
+ }
52
+
53
+ is SmileIDResult.Error -> {
54
+ result.throwable.printStackTrace()
55
+ emitFailure(result.throwable)
56
+ }
57
+ }
58
+ }
59
+ }
60
+ }
61
+ }
62
+ }
63
+
64
+ }
@@ -0,0 +1,67 @@
1
+ package com.smileidentity.react.views
2
+
3
+ import android.webkit.URLUtil
4
+ import androidx.compose.runtime.CompositionLocalProvider
5
+ import androidx.compose.ui.platform.ViewCompositionStrategy
6
+ import androidx.compose.ui.res.painterResource
7
+ import androidx.lifecycle.ViewModelStoreOwner
8
+ import androidx.lifecycle.viewmodel.compose.LocalViewModelStoreOwner
9
+ import com.facebook.react.bridge.ReactApplicationContext
10
+ import com.smileidentity.SmileID
11
+ import com.smileidentity.compose.ConsentScreen
12
+ import java.net.URL
13
+
14
+ class SmileIDConsentView(context: ReactApplicationContext) : SmileIDView(context) {
15
+ var partnerName : String? = null
16
+ var partnerPrivacyPolicy : String? = null
17
+ var logoResName : String? = null
18
+ var productName : String? = null
19
+ override fun renderContent() {
20
+ partnerName ?: run {
21
+ emitFailure(IllegalArgumentException("partnerName is required for BiometricKYC"))
22
+ return
23
+ }
24
+ partnerPrivacyPolicy?: run {
25
+ emitFailure(IllegalArgumentException("partnerPrivacyPolicy is required for BiometricKYC"))
26
+ return
27
+ }
28
+ if (!URLUtil.isValidUrl(partnerPrivacyPolicy)) {
29
+ emitFailure(IllegalArgumentException("a valid url for partnerPrivacyPolicy is required for BiometricKYC"))
30
+ return
31
+ }
32
+ logoResName ?: run {
33
+ emitFailure(IllegalArgumentException("partnerIcon is required for BiometricKYC"))
34
+ return
35
+ }
36
+ productName ?: run {
37
+ emitFailure(IllegalArgumentException("productName is required for BiometricKYC"))
38
+ return
39
+ }
40
+ val partnerIcon = context.resources.getIdentifier(
41
+ logoResName,
42
+ "drawable",
43
+ (context as? ReactApplicationContext)?.currentActivity?.packageName
44
+ )
45
+ composeView.apply {
46
+ setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnDetachedFromWindow)
47
+ setContent {
48
+ CompositionLocalProvider(LocalViewModelStoreOwner provides (context as ViewModelStoreOwner)) {
49
+ SmileID.ConsentScreen(
50
+ partnerIcon = painterResource(
51
+ id = partnerIcon
52
+ ),
53
+ partnerName = partnerName!!,
54
+ productName = productName!!,
55
+ partnerPrivacyPolicy = URL(partnerPrivacyPolicy),
56
+ onConsentDenied = {
57
+ emitSuccess("denied")
58
+ },
59
+ onConsentGranted = {
60
+ emitSuccess("accepted")
61
+ },
62
+ )
63
+ }
64
+ }
65
+ }
66
+ }
67
+ }
@@ -0,0 +1,77 @@
1
+ package com.smileidentity.react.views
2
+
3
+ import androidx.compose.runtime.CompositionLocalProvider
4
+ import androidx.compose.runtime.saveable.rememberSaveable
5
+ import androidx.compose.ui.platform.ViewCompositionStrategy
6
+ import androidx.lifecycle.ViewModelStoreOwner
7
+ import androidx.lifecycle.viewmodel.compose.LocalViewModelStoreOwner
8
+ import com.facebook.react.bridge.ReactApplicationContext
9
+ import com.smileidentity.SmileID
10
+ import com.smileidentity.compose.DocumentVerification
11
+ import com.smileidentity.results.DocumentVerificationResult
12
+ import com.smileidentity.results.SmileIDResult
13
+ import com.smileidentity.util.randomJobId
14
+ import com.smileidentity.util.randomUserId
15
+ import kotlinx.collections.immutable.toImmutableMap
16
+ import timber.log.Timber
17
+ import java.io.File
18
+
19
+ class SmileIDDocumentVerificationView(context: ReactApplicationContext) : SmileIDView(context) {
20
+ var countryCode: String? = null
21
+ var allowGalleryUpload: Boolean = false
22
+ var captureBothSides: Boolean = true
23
+ var bypassSelfieCaptureWithFilePath: String? = null
24
+ var documentType: String? = null
25
+ var idAspectRatio: Float? = null
26
+
27
+ override fun renderContent() {
28
+ countryCode ?: run {
29
+ emitFailure(IllegalArgumentException("countryCode is required for DocumentVerification"))
30
+ return
31
+ }
32
+ var bypassSelfieCaptureWithFile: File? = null
33
+ bypassSelfieCaptureWithFilePath?.let {
34
+ bypassSelfieCaptureWithFile = File(it)
35
+ }
36
+ composeView.apply {
37
+ setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnDetachedFromWindow)
38
+ setContent {
39
+ CompositionLocalProvider(LocalViewModelStoreOwner provides (context as ViewModelStoreOwner)) {
40
+ SmileID.DocumentVerification(
41
+ userId = userId ?: rememberSaveable { randomUserId() },
42
+ jobId = jobId ?: rememberSaveable { randomJobId() },
43
+ countryCode = countryCode!!,
44
+ documentType = documentType,
45
+ idAspectRatio = idAspectRatio,
46
+ showAttribution = showAttribution ?: true,
47
+ showInstructions = showInstructions ?: true,
48
+ allowGalleryUpload = allowGalleryUpload,
49
+ captureBothSides = captureBothSides,
50
+ allowNewEnroll = allowNewEnroll ?: false,
51
+ bypassSelfieCaptureWithFile = bypassSelfieCaptureWithFile,
52
+ extraPartnerParams = (extraPartnerParams ?: mapOf()).toImmutableMap(),
53
+ ) { result ->
54
+ when (result) {
55
+ is SmileIDResult.Success -> {
56
+ val json = try {
57
+ SmileID.moshi
58
+ .adapter(DocumentVerificationResult::class.java)
59
+ .toJson(result.data)
60
+ } catch (e: Exception) {
61
+ Timber.w(e)
62
+ "null"
63
+ }
64
+ emitSuccess(json)
65
+ }
66
+
67
+ is SmileIDResult.Error -> {
68
+ result.throwable.printStackTrace()
69
+ emitFailure(result.throwable)
70
+ }
71
+ }
72
+ }
73
+ }
74
+ }
75
+ }
76
+ }
77
+ }
@@ -0,0 +1,71 @@
1
+ package com.smileidentity.react.views
2
+
3
+ import androidx.compose.runtime.CompositionLocalProvider
4
+ import androidx.compose.runtime.saveable.rememberSaveable
5
+ import androidx.compose.ui.platform.ViewCompositionStrategy
6
+ import androidx.lifecycle.ViewModelStoreOwner
7
+ import androidx.lifecycle.viewmodel.compose.LocalViewModelStoreOwner
8
+ import com.facebook.react.bridge.ReactApplicationContext
9
+ import com.smileidentity.SmileID
10
+ import com.smileidentity.compose.EnhancedDocumentVerificationScreen
11
+ import com.smileidentity.results.EnhancedDocumentVerificationResult
12
+ import com.smileidentity.results.SmileIDResult
13
+ import com.smileidentity.util.randomJobId
14
+ import com.smileidentity.util.randomUserId
15
+ import kotlinx.collections.immutable.toImmutableMap
16
+ import timber.log.Timber
17
+
18
+ class SmileIDEnhancedDocumentVerificationView(context: ReactApplicationContext) :
19
+ SmileIDView(context) {
20
+ var countryCode: String? = null
21
+ var allowGalleryUpload: Boolean = false
22
+ var captureBothSides: Boolean = true
23
+ var documentType: String? = null
24
+ var idAspectRatio: Float? = null
25
+
26
+ override fun renderContent() {
27
+ countryCode ?: run {
28
+ emitFailure(IllegalArgumentException("countryCode is required for DocumentVerification"))
29
+ return;
30
+ }
31
+ composeView.apply {
32
+ setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnDetachedFromWindow)
33
+ setContent {
34
+ CompositionLocalProvider(LocalViewModelStoreOwner provides (context as ViewModelStoreOwner)) {
35
+ SmileID.EnhancedDocumentVerificationScreen(
36
+ userId = userId ?: rememberSaveable { randomUserId() },
37
+ jobId = jobId ?: rememberSaveable { randomJobId() },
38
+ countryCode = countryCode!!,
39
+ documentType = documentType,
40
+ idAspectRatio = idAspectRatio,
41
+ showAttribution = showAttribution ?: true,
42
+ showInstructions = showInstructions ?: true,
43
+ allowNewEnroll = allowNewEnroll ?: false,
44
+ allowGalleryUpload = allowGalleryUpload,
45
+ captureBothSides = captureBothSides,
46
+ extraPartnerParams = (extraPartnerParams ?: mapOf()).toImmutableMap(),
47
+ ) { result ->
48
+ when (result) {
49
+ is SmileIDResult.Success -> {
50
+ val json = try {
51
+ SmileID.moshi
52
+ .adapter(EnhancedDocumentVerificationResult::class.java)
53
+ .toJson(result.data)
54
+ } catch (e: Exception) {
55
+ Timber.w(e)
56
+ "null"
57
+ }
58
+ emitSuccess(json)
59
+ }
60
+
61
+ is SmileIDResult.Error -> {
62
+ result.throwable.printStackTrace()
63
+ emitFailure(result.throwable)
64
+ }
65
+ }
66
+ }
67
+ }
68
+ }
69
+ }
70
+ }
71
+ }
@@ -1,6 +1,10 @@
1
1
  package com.smileidentity.react.views
2
2
 
3
+ import androidx.compose.runtime.CompositionLocalProvider
3
4
  import androidx.compose.runtime.saveable.rememberSaveable
5
+ import androidx.compose.ui.platform.ViewCompositionStrategy
6
+ import androidx.lifecycle.ViewModelStoreOwner
7
+ import androidx.lifecycle.viewmodel.compose.LocalViewModelStoreOwner
4
8
  import com.facebook.react.bridge.ReactApplicationContext
5
9
  import com.smileidentity.SmileID
6
10
  import com.smileidentity.compose.SmartSelfieAuthentication
@@ -8,18 +12,25 @@ import com.smileidentity.results.SmartSelfieResult
8
12
  import com.smileidentity.results.SmileIDResult
9
13
  import com.smileidentity.util.randomJobId
10
14
  import com.smileidentity.util.randomUserId
15
+ import kotlinx.collections.immutable.toImmutableMap
11
16
  import timber.log.Timber
12
17
 
13
- class SmileIDSmartSelfieAuthentication(context: ReactApplicationContext) : SmileIDView(context) {
18
+ class SmileIDSmartSelfieAuthenticationView(context: ReactApplicationContext) :
19
+ SmileIDView(context) {
14
20
 
15
21
  override fun renderContent() {
16
- product?.let {
17
- composeView.apply {
18
- setContent {
22
+ composeView.apply {
23
+ setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnDetachedFromWindow)
24
+ setContent {
25
+ CompositionLocalProvider(LocalViewModelStoreOwner provides (context as ViewModelStoreOwner)) {
19
26
  SmileID.SmartSelfieAuthentication(
20
27
  userId = userId ?: rememberSaveable { randomUserId() },
21
28
  jobId = jobId ?: rememberSaveable { randomJobId() },
22
29
  allowAgentMode = allowAgentMode ?: false,
30
+ allowNewEnroll = allowNewEnroll ?: false,
31
+ showAttribution = showAttribution ?: true,
32
+ showInstructions = showInstructions ?: true,
33
+ extraPartnerParams = (extraPartnerParams ?: mapOf()).toImmutableMap(),
23
34
  ) { result ->
24
35
  when (result) {
25
36
  is SmileIDResult.Success -> {
@@ -1,6 +1,10 @@
1
1
  package com.smileidentity.react.views
2
2
 
3
+ import androidx.compose.runtime.CompositionLocalProvider
3
4
  import androidx.compose.runtime.saveable.rememberSaveable
5
+ import androidx.compose.ui.platform.ViewCompositionStrategy
6
+ import androidx.lifecycle.ViewModelStoreOwner
7
+ import androidx.lifecycle.viewmodel.compose.LocalViewModelStoreOwner
4
8
  import com.facebook.react.bridge.ReactApplicationContext
5
9
  import com.smileidentity.SmileID
6
10
  import com.smileidentity.compose.SmartSelfieEnrollment
@@ -8,19 +12,24 @@ import com.smileidentity.results.SmartSelfieResult
8
12
  import com.smileidentity.results.SmileIDResult
9
13
  import com.smileidentity.util.randomJobId
10
14
  import com.smileidentity.util.randomUserId
15
+ import kotlinx.collections.immutable.toImmutableMap
11
16
  import timber.log.Timber
12
17
 
13
- class SmileIDSmartSelfieEnrollment (context: ReactApplicationContext) : SmileIDView(context) {
18
+ class SmileIDSmartSelfieEnrollmentView(context: ReactApplicationContext) : SmileIDView(context) {
14
19
 
15
20
  override fun renderContent() {
16
- product?.let {
17
- composeView.apply {
18
- setContent {
21
+ composeView.apply {
22
+ setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnDetachedFromWindow)
23
+ setContent {
24
+ CompositionLocalProvider(LocalViewModelStoreOwner provides (context as ViewModelStoreOwner)) {
19
25
  SmileID.SmartSelfieEnrollment(
20
26
  userId = userId ?: rememberSaveable { randomUserId() },
21
27
  jobId = jobId ?: rememberSaveable { randomJobId() },
22
28
  allowAgentMode = allowAgentMode ?: false,
23
- showInstructions = showInstructions ?: true
29
+ allowNewEnroll = allowNewEnroll ?: false,
30
+ showAttribution = showAttribution ?: true,
31
+ showInstructions = showInstructions ?: true,
32
+ extraPartnerParams = (extraPartnerParams ?: mapOf()).toImmutableMap(),
24
33
  ) { result ->
25
34
  when (result) {
26
35
  is SmileIDResult.Success -> {