@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.
- package/README.md +1 -1
- package/android/gradle.properties +1 -1
- package/android/src/main/java/com/smileidentity/react/Mapper.kt +179 -0
- package/android/src/main/java/com/smileidentity/react/SmileIdModule.kt +76 -49
- package/android/src/main/java/com/smileidentity/react/SmileIdPackage.kt +4 -2
- package/android/src/main/java/com/smileidentity/react/utils/ReactUtils.kt +9 -38
- package/android/src/main/java/com/smileidentity/react/viewmanagers/SmileIDBiometricKYCViewManager.kt +41 -9
- package/android/src/main/java/com/smileidentity/react/viewmanagers/SmileIDConsentViewManager.kt +83 -0
- package/android/src/main/java/com/smileidentity/react/viewmanagers/SmileIDDocumentVerificationViewManager.kt +45 -9
- package/android/src/main/java/com/smileidentity/react/viewmanagers/SmileIDEnhancedDocumentVerificationViewManager.kt +77 -0
- package/android/src/main/java/com/smileidentity/react/viewmanagers/SmileIDSmartSelfieAuthenticationViewManager.kt +36 -9
- package/android/src/main/java/com/smileidentity/react/viewmanagers/SmileIDSmartSelfieEnrollmentViewManager.kt +36 -9
- package/android/src/main/java/com/smileidentity/react/views/SmileIDBiometricKYCView.kt +64 -0
- package/android/src/main/java/com/smileidentity/react/views/SmileIDConsentView.kt +67 -0
- package/android/src/main/java/com/smileidentity/react/views/SmileIDDocumentVerificationView.kt +77 -0
- package/android/src/main/java/com/smileidentity/react/views/SmileIDEnhancedDocumentVerificationView.kt +71 -0
- package/android/src/main/java/com/smileidentity/react/views/{SmileIDSmartSelfieAuthentication.kt → SmileIDSmartSelfieAuthenticationView.kt} +15 -4
- package/android/src/main/java/com/smileidentity/react/views/{SmileIDSmartSelfieEnrollment.kt → SmileIDSmartSelfieEnrollmentView.kt} +14 -5
- package/android/src/main/java/com/smileidentity/react/views/SmileIDView.kt +3 -27
- package/android/src/oldarch/SmileIdSpec.kt +26 -1
- package/ios/RNDelegates/SmileIDUIViewDelegate.swift +4 -0
- package/ios/RNDelegates/SmileIDViewDelegate.swift +5 -0
- package/ios/RNSmileID.mm +7 -0
- package/ios/RNSmileID.swift +147 -0
- package/ios/SmileId.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/ios/SmileId.xcodeproj/project.xcworkspace/xcuserdata/japhetndhlovu.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/SmileId.xcodeproj/xcuserdata/japhetndhlovu.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
- package/ios/Utils/SmileIDDictExt.swift +50 -0
- package/ios/Utils/SmileIDUtils.swift +10 -0
- package/ios/View/BaseSmileIDView.swift +35 -0
- package/ios/View/SmileIDBiometricKYCView.swift +46 -0
- package/ios/View/SmileIDConsentView.swift +36 -0
- package/ios/View/SmileIDDocumentVerificationView.swift +55 -0
- package/ios/View/SmileIDEnhancedDocumentVerificationView.swift +55 -0
- package/ios/View/SmileIDSmartSelfieAuthView.swift +41 -0
- package/ios/View/SmileIDSmartSelfieEnrollmentView.swift +41 -0
- package/ios/ViewManagers/SmileIDBaseViewManager.swift +18 -0
- package/ios/ViewManagers/SmileIDBiometricKYCViewManager.m +6 -0
- package/ios/ViewManagers/SmileIDBiometricKYCViewManager.swift +34 -0
- package/ios/ViewManagers/SmileIDConsentViewManager.m +6 -0
- package/ios/ViewManagers/SmileIDConsentViewManager.swift +47 -0
- package/ios/ViewManagers/SmileIDDocumentVerificationViewManager.m +6 -0
- package/ios/ViewManagers/SmileIDDocumentVerificationViewManager.swift +49 -0
- package/ios/ViewManagers/SmileIDEnhancedDocumentVerificationViewManager.m +6 -0
- package/ios/ViewManagers/SmileIDEnhancedDocumentVerificationViewManager.swift +49 -0
- package/ios/ViewManagers/SmileIDSmartSelfieAuthenticationViewManager.m +6 -0
- package/ios/ViewManagers/SmileIDSmartSelfieAuthenticationViewManager.swift +27 -0
- package/ios/ViewManagers/SmileIDSmartSelfieEnrollmentViewManager.m +6 -0
- package/ios/ViewManagers/SmileIDSmartSelfieEnrollmentViewManager.swift +27 -0
- package/ios/ViewModels/SmileIDProductModel.swift +30 -0
- package/ios/react-native-smile-id-Bridging-Header.h +8 -0
- package/lib/commonjs/NativeSmileId.js +1 -1
- package/lib/commonjs/NativeSmileId.js.map +1 -1
- package/lib/commonjs/SmileIDBiometricKYCView.js +40 -0
- package/lib/commonjs/SmileIDBiometricKYCView.js.map +1 -0
- package/lib/commonjs/SmileIDConsentView.js +40 -0
- package/lib/commonjs/SmileIDConsentView.js.map +1 -0
- package/lib/commonjs/SmileIDDocumentVerificationView.js +40 -0
- package/lib/commonjs/SmileIDDocumentVerificationView.js.map +1 -0
- package/lib/commonjs/SmileIDEnhancedDocumentVerificationView.js +40 -0
- package/lib/commonjs/SmileIDEnhancedDocumentVerificationView.js.map +1 -0
- package/lib/commonjs/SmileIDSmartSelfieAuthenticationView.js +40 -0
- package/lib/commonjs/SmileIDSmartSelfieAuthenticationView.js.map +1 -0
- package/lib/commonjs/SmileIDSmartSelfieEnrollmentView.js +40 -0
- package/lib/commonjs/SmileIDSmartSelfieEnrollmentView.js.map +1 -0
- package/lib/commonjs/index.js +194 -27
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/types.js +517 -0
- package/lib/commonjs/types.js.map +1 -0
- package/lib/module/NativeSmileId.js +1 -1
- package/lib/module/NativeSmileId.js.map +1 -1
- package/lib/module/SmileIDBiometricKYCView.js +30 -0
- package/lib/module/SmileIDBiometricKYCView.js.map +1 -0
- package/lib/module/SmileIDConsentView.js +30 -0
- package/lib/module/SmileIDConsentView.js.map +1 -0
- package/lib/module/SmileIDDocumentVerificationView.js +30 -0
- package/lib/module/SmileIDDocumentVerificationView.js.map +1 -0
- package/lib/module/SmileIDEnhancedDocumentVerificationView.js +30 -0
- package/lib/module/SmileIDEnhancedDocumentVerificationView.js.map +1 -0
- package/lib/module/SmileIDSmartSelfieAuthenticationView.js +30 -0
- package/lib/module/SmileIDSmartSelfieAuthenticationView.js.map +1 -0
- package/lib/module/SmileIDSmartSelfieEnrollmentView.js +30 -0
- package/lib/module/SmileIDSmartSelfieEnrollmentView.js.map +1 -0
- package/lib/module/index.js +33 -21
- package/lib/module/index.js.map +1 -1
- package/lib/module/types.js +472 -0
- package/lib/module/types.js.map +1 -0
- package/lib/typescript/NativeSmileId.d.ts +22 -3
- package/lib/typescript/NativeSmileId.d.ts.map +1 -1
- package/lib/typescript/SmileIDBiometricKYCView.d.ts +8 -0
- package/lib/typescript/SmileIDBiometricKYCView.d.ts.map +1 -0
- package/lib/typescript/SmileIDConsentView.d.ts +8 -0
- package/lib/typescript/SmileIDConsentView.d.ts.map +1 -0
- package/lib/typescript/SmileIDDocumentVerificationView.d.ts +8 -0
- package/lib/typescript/SmileIDDocumentVerificationView.d.ts.map +1 -0
- package/lib/typescript/SmileIDEnhancedDocumentVerificationView.d.ts +8 -0
- package/lib/typescript/SmileIDEnhancedDocumentVerificationView.d.ts.map +1 -0
- package/lib/typescript/SmileIDSmartSelfieAuthenticationView.d.ts +8 -0
- package/lib/typescript/SmileIDSmartSelfieAuthenticationView.d.ts.map +1 -0
- package/lib/typescript/SmileIDSmartSelfieEnrollmentView.d.ts +8 -0
- package/lib/typescript/SmileIDSmartSelfieEnrollmentView.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +24 -86
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +504 -0
- package/lib/typescript/types.d.ts.map +1 -0
- package/package.json +3 -4
- package/react-native-smile-id.podspec +2 -2
- package/src/NativeSmileId.ts +68 -9
- package/src/SmileIDBiometricKYCView.tsx +45 -0
- package/src/SmileIDConsentView.tsx +44 -0
- package/src/SmileIDDocumentVerificationView.tsx +51 -0
- package/src/SmileIDEnhancedDocumentVerificationView.tsx +51 -0
- package/src/SmileIDSmartSelfieAuthenticationView.tsx +51 -0
- package/src/SmileIDSmartSelfieEnrollmentView.tsx +51 -0
- package/src/index.tsx +86 -122
- package/src/types.ts +1084 -0
- package/android/src/main/assets/smile_config.json +0 -9
- package/android/src/main/java/com/smileidentity/react/viewmanagers/SmileIDBVNConsentViewManager.kt +0 -42
- package/android/src/main/java/com/smileidentity/react/views/SmileIDBVNConsentScreen.kt +0 -54
- package/android/src/main/java/com/smileidentity/react/views/SmileIDBiometricKYC.kt +0 -89
- package/android/src/main/java/com/smileidentity/react/views/SmileIDDocumentVerification.kt +0 -59
- package/ios/SmileId.h +0 -12
- package/ios/SmileId.mm +0 -27
package/README.md
CHANGED
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
package com.smileidentity.react
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.ReadableMap
|
|
4
|
+
import com.smileidentity.models.AuthenticationRequest
|
|
5
|
+
import com.smileidentity.models.ConsentInfo
|
|
6
|
+
import com.smileidentity.models.EnhancedKycRequest
|
|
7
|
+
import com.smileidentity.models.IdInfo
|
|
8
|
+
import com.smileidentity.models.ImageType
|
|
9
|
+
import com.smileidentity.models.JobStatusRequest
|
|
10
|
+
import com.smileidentity.models.JobType
|
|
11
|
+
import com.smileidentity.models.PartnerParams
|
|
12
|
+
import com.smileidentity.models.PrepUploadRequest
|
|
13
|
+
import com.smileidentity.models.ProductsConfigRequest
|
|
14
|
+
import com.smileidentity.models.UploadImageInfo
|
|
15
|
+
import com.smileidentity.models.UploadRequest
|
|
16
|
+
import com.smileidentity.react.utils.getBoolOrDefault
|
|
17
|
+
import com.smileidentity.react.utils.getIntOrDefault
|
|
18
|
+
import com.smileidentity.react.utils.getMapOrDefault
|
|
19
|
+
import com.smileidentity.react.utils.getStringOrDefault
|
|
20
|
+
import com.smileidentity.react.utils.toMap
|
|
21
|
+
import com.smileidentity.util.randomJobId
|
|
22
|
+
import com.smileidentity.util.randomUserId
|
|
23
|
+
import java.io.File
|
|
24
|
+
|
|
25
|
+
fun ReadableMap.toAuthenticationRequest(): AuthenticationRequest {
|
|
26
|
+
return AuthenticationRequest(
|
|
27
|
+
jobType = getIntOrDefault("jobType")?.let { JobType.fromValue(it) } ?: run {
|
|
28
|
+
throw IllegalArgumentException("jobType is required")
|
|
29
|
+
},
|
|
30
|
+
country = getStringOrDefault("country"),
|
|
31
|
+
idType = getStringOrDefault("idType"),
|
|
32
|
+
updateEnrolledImage = getBoolOrDefault("updateEnrolledImage", false),
|
|
33
|
+
jobId = getStringOrDefault("jobId"),
|
|
34
|
+
userId = getStringOrDefault("userId"),
|
|
35
|
+
)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
fun ReadableMap.toPartnerParams(): PartnerParams {
|
|
39
|
+
return PartnerParams(
|
|
40
|
+
jobType = getIntOrDefault("jobType")?.let { JobType.fromValue(it) } ?: run {
|
|
41
|
+
throw IllegalArgumentException("jobType is required")
|
|
42
|
+
},
|
|
43
|
+
jobId = getStringOrDefault("jobId") ?: randomJobId(),
|
|
44
|
+
userId = getStringOrDefault("userId") ?: randomUserId(),
|
|
45
|
+
extras = getMapOrDefault("extras")?.toMap() ?: emptyMap()
|
|
46
|
+
)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
fun ReadableMap.toConsentInfo(): ConsentInfo {
|
|
50
|
+
return ConsentInfo(
|
|
51
|
+
canAccess = getBoolOrDefault("canAccess", false),
|
|
52
|
+
consentRequired = getBoolOrDefault("consentRequired", true)
|
|
53
|
+
)
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
fun ReadableMap.toPrepUploadRequest(): PrepUploadRequest {
|
|
57
|
+
return PrepUploadRequest(
|
|
58
|
+
partnerParams = getMapOrDefault("partnerParams")?.toPartnerParams() ?: run {
|
|
59
|
+
throw IllegalArgumentException("partnerParams is required")
|
|
60
|
+
},
|
|
61
|
+
callbackUrl = getStringOrDefault("callbackUrl"),
|
|
62
|
+
partnerId = getStringOrDefault("partnerId") ?: run {
|
|
63
|
+
throw IllegalArgumentException("partnerId is required")
|
|
64
|
+
},
|
|
65
|
+
sourceSdk = getStringOrDefault("sourceSdk") ?: "react-native",
|
|
66
|
+
timestamp = getStringOrDefault("timestamp") ?: run {
|
|
67
|
+
throw IllegalArgumentException("timestamp is required")
|
|
68
|
+
},
|
|
69
|
+
//TODO: Remove this and use strings once the backend is updated
|
|
70
|
+
allowNewEnroll = getBoolOrDefault("allowNewEnroll", false).toString(),
|
|
71
|
+
signature = getStringOrDefault("signature") ?: run {
|
|
72
|
+
throw IllegalArgumentException("signature is required")
|
|
73
|
+
},
|
|
74
|
+
)
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
fun ReadableMap.toUploadRequest(): UploadRequest {
|
|
78
|
+
val imagesArray = getArray("images")?.toArrayList()?.map {
|
|
79
|
+
(it as ReadableMap).toUploadImageInfo()
|
|
80
|
+
}
|
|
81
|
+
return UploadRequest(
|
|
82
|
+
images = imagesArray ?: emptyList(),
|
|
83
|
+
idInfo = getMapOrDefault("idInfo")?.toIdInfo()
|
|
84
|
+
)
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
fun ReadableMap.toUploadImageInfo(): UploadImageInfo {
|
|
88
|
+
return UploadImageInfo(
|
|
89
|
+
imageTypeId = getStringOrDefault("imageTypeId")?.let { ImageType.valueOf(it) } ?: run {
|
|
90
|
+
throw IllegalArgumentException("imageTypeId is required")
|
|
91
|
+
},
|
|
92
|
+
image = File(getStringOrDefault("imageName") ?: run {
|
|
93
|
+
throw IllegalArgumentException("imageName is required")
|
|
94
|
+
}),
|
|
95
|
+
)
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
fun ReadableMap.toIdInfo(): IdInfo {
|
|
99
|
+
return IdInfo(
|
|
100
|
+
country = getStringOrDefault("country") ?: run {
|
|
101
|
+
throw IllegalArgumentException("country is required")
|
|
102
|
+
},
|
|
103
|
+
idType = getStringOrDefault("idType"),
|
|
104
|
+
idNumber = getStringOrDefault("idNumber"),
|
|
105
|
+
firstName = getStringOrDefault("firstName"),
|
|
106
|
+
middleName = getStringOrDefault("middleName"),
|
|
107
|
+
lastName = getStringOrDefault("lastName"),
|
|
108
|
+
dob = getStringOrDefault("dob"),
|
|
109
|
+
bankCode = getStringOrDefault("bankCode"),
|
|
110
|
+
entered = getBoolean("entered")
|
|
111
|
+
)
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
fun ReadableMap.toEnhancedKycRequest(): EnhancedKycRequest {
|
|
115
|
+
return EnhancedKycRequest(
|
|
116
|
+
country = getStringOrDefault("country") ?: run {
|
|
117
|
+
throw IllegalArgumentException("country is required")
|
|
118
|
+
},
|
|
119
|
+
idType = getStringOrDefault("idType") ?: run {
|
|
120
|
+
throw IllegalArgumentException("idType is required")
|
|
121
|
+
},
|
|
122
|
+
idNumber = getStringOrDefault("idNumber") ?: run {
|
|
123
|
+
throw IllegalArgumentException("idNumber is required")
|
|
124
|
+
},
|
|
125
|
+
firstName = getStringOrDefault("firstName"),
|
|
126
|
+
middleName = getStringOrDefault("middleName"),
|
|
127
|
+
lastName = getStringOrDefault("lastName"),
|
|
128
|
+
dob = getStringOrDefault("dob"),
|
|
129
|
+
phoneNumber = getStringOrDefault("phoneNumber"),
|
|
130
|
+
bankCode = getStringOrDefault("bankCode"),
|
|
131
|
+
callbackUrl = getStringOrDefault("callbackUrl"),
|
|
132
|
+
partnerParams = getMapOrDefault("partnerParams")?.toPartnerParams() ?: run {
|
|
133
|
+
throw IllegalArgumentException("partnerParams is required")
|
|
134
|
+
},
|
|
135
|
+
sourceSdk = getStringOrDefault("sourceSdk") ?: "react-native",
|
|
136
|
+
timestamp = getStringOrDefault("timestamp") ?: run {
|
|
137
|
+
throw IllegalArgumentException("timestamp is required")
|
|
138
|
+
},
|
|
139
|
+
signature = getStringOrDefault("signature") ?: run {
|
|
140
|
+
throw IllegalArgumentException("signature is required")
|
|
141
|
+
},
|
|
142
|
+
)
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
fun ReadableMap.toJobStatusRequest(): JobStatusRequest {
|
|
146
|
+
return JobStatusRequest(
|
|
147
|
+
userId = getStringOrDefault("userId") ?: run {
|
|
148
|
+
throw IllegalArgumentException("userId is required")
|
|
149
|
+
},
|
|
150
|
+
jobId = getStringOrDefault("jobId") ?: run {
|
|
151
|
+
throw IllegalArgumentException("jobId is required")
|
|
152
|
+
},
|
|
153
|
+
includeImageLinks = getBoolOrDefault("includeImageLinks", false),
|
|
154
|
+
includeHistory = getBoolOrDefault("includeHistory", false),
|
|
155
|
+
partnerId = getStringOrDefault("partnerId") ?: run {
|
|
156
|
+
throw IllegalArgumentException("partnerId is required")
|
|
157
|
+
},
|
|
158
|
+
timestamp = getStringOrDefault("timestamp") ?: run {
|
|
159
|
+
throw IllegalArgumentException("timestamp is required")
|
|
160
|
+
},
|
|
161
|
+
signature = getStringOrDefault("signature") ?: run {
|
|
162
|
+
throw IllegalArgumentException("signature is required")
|
|
163
|
+
}
|
|
164
|
+
)
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
fun ReadableMap.toProductsConfigRequest(): ProductsConfigRequest {
|
|
168
|
+
return ProductsConfigRequest(
|
|
169
|
+
partnerId = getStringOrDefault("partnerId") ?: run {
|
|
170
|
+
throw IllegalArgumentException("partnerId is required")
|
|
171
|
+
},
|
|
172
|
+
timestamp = getStringOrDefault("timestamp") ?: run {
|
|
173
|
+
throw IllegalArgumentException("timestamp is required")
|
|
174
|
+
},
|
|
175
|
+
signature = getStringOrDefault("signature") ?: run {
|
|
176
|
+
throw IllegalArgumentException("signature is required")
|
|
177
|
+
}
|
|
178
|
+
)
|
|
179
|
+
}
|
|
@@ -5,10 +5,10 @@ import com.facebook.react.bridge.ReactApplicationContext
|
|
|
5
5
|
import com.facebook.react.bridge.ReactMethod
|
|
6
6
|
import com.facebook.react.bridge.ReadableMap
|
|
7
7
|
import com.smileidentity.SmileID
|
|
8
|
+
import com.smileidentity.SmileIDCrashReporting
|
|
8
9
|
import com.smileidentity.SmileIdSpec
|
|
9
10
|
import com.smileidentity.models.EnhancedKycRequest
|
|
10
11
|
import com.smileidentity.react.utils.getStringOrDefault
|
|
11
|
-
import com.smileidentity.react.utils.partnerParams
|
|
12
12
|
import kotlinx.coroutines.CoroutineExceptionHandler
|
|
13
13
|
import kotlinx.coroutines.CoroutineScope
|
|
14
14
|
import kotlinx.coroutines.Dispatchers
|
|
@@ -23,60 +23,87 @@ class SmileIdModule internal constructor(context: ReactApplicationContext) :
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
@ReactMethod
|
|
26
|
-
override fun initialize(
|
|
27
|
-
SmileID.initialize(
|
|
28
|
-
reactApplicationContext,
|
|
29
|
-
enableCrashReporting = enableCrashReporting,
|
|
30
|
-
useSandbox = useSandBox
|
|
31
|
-
)
|
|
26
|
+
override fun initialize(useSandBox: Boolean, promise: Promise) {
|
|
27
|
+
SmileID.initialize(reactApplicationContext, useSandbox = useSandBox)
|
|
32
28
|
promise.resolve(null)
|
|
33
29
|
}
|
|
34
30
|
|
|
35
31
|
@ReactMethod
|
|
36
|
-
override fun
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
signature = signature,
|
|
74
|
-
)
|
|
75
|
-
)
|
|
76
|
-
},
|
|
32
|
+
override fun disableCrashReporting(promise: Promise) {
|
|
33
|
+
SmileIDCrashReporting.disable()
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
@ReactMethod
|
|
37
|
+
override fun authenticate(request: ReadableMap, promise: Promise) = launch(
|
|
38
|
+
work = { SmileID.api.authenticate(request = request.toAuthenticationRequest()) },
|
|
39
|
+
promise = promise
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
@ReactMethod
|
|
43
|
+
override fun prepUpload(request: ReadableMap, promise: Promise) = launch(
|
|
44
|
+
work = { SmileID.api.prepUpload(request = request.toPrepUploadRequest()) },
|
|
45
|
+
promise = promise
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
@ReactMethod
|
|
49
|
+
override fun upload(url: String, request: ReadableMap, promise: Promise) = launch(
|
|
50
|
+
work = { SmileID.api.upload(url, request.toUploadRequest()) },
|
|
51
|
+
promise = promise
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
@ReactMethod
|
|
55
|
+
override fun doEnhancedKyc(request: ReadableMap, promise: Promise) = launch(
|
|
56
|
+
work = { SmileID.api.doEnhancedKyc(request = request.toEnhancedKycRequest()) },
|
|
57
|
+
promise = promise
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
@ReactMethod
|
|
61
|
+
override fun doEnhancedKycAsync(request: ReadableMap, promise: Promise) = launch(
|
|
62
|
+
work = { SmileID.api.doEnhancedKycAsync(request = request.toEnhancedKycRequest()) },
|
|
63
|
+
promise = promise
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
@ReactMethod
|
|
67
|
+
override fun getSmartSelfieJobStatus(request: ReadableMap, promise: Promise) = launch(
|
|
68
|
+
work = { SmileID.api.getSmartSelfieJobStatus(request = request.toJobStatusRequest()) },
|
|
77
69
|
promise = promise
|
|
78
70
|
)
|
|
79
71
|
|
|
72
|
+
@ReactMethod
|
|
73
|
+
override fun getDocumentVerificationJobStatus(request: ReadableMap, promise: Promise) = launch(
|
|
74
|
+
work = { SmileID.api.getDocumentVerificationJobStatus(request = request.toJobStatusRequest()) },
|
|
75
|
+
promise = promise
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
@ReactMethod
|
|
79
|
+
override fun getBiometricKycJobStatus(request: ReadableMap, promise: Promise) = launch(
|
|
80
|
+
work = { SmileID.api.getBiometricKycJobStatus(request = request.toJobStatusRequest()) },
|
|
81
|
+
promise = promise
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
@ReactMethod
|
|
85
|
+
override fun getEnhancedDocumentVerificationJobStatus(request: ReadableMap, promise: Promise) = launch(
|
|
86
|
+
work = { SmileID.api.getEnhancedDocumentVerificationJobStatus(request = request.toJobStatusRequest()) },
|
|
87
|
+
promise = promise
|
|
88
|
+
)
|
|
89
|
+
|
|
90
|
+
@ReactMethod
|
|
91
|
+
override fun getProductsConfig(request: ReadableMap, promise: Promise) = launch(
|
|
92
|
+
work = { SmileID.api.getProductsConfig(request = request.toProductsConfigRequest()) },
|
|
93
|
+
promise = promise
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
@ReactMethod
|
|
97
|
+
override fun getValidDocuments(request: ReadableMap, promise: Promise) = launch(
|
|
98
|
+
work = { SmileID.api.getValidDocuments(request = request.toProductsConfigRequest()) },
|
|
99
|
+
promise = promise
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
@ReactMethod
|
|
103
|
+
override fun getServices(promise: Promise) = launch(
|
|
104
|
+
work = { SmileID.api.getServices() },
|
|
105
|
+
promise = promise
|
|
106
|
+
)
|
|
80
107
|
|
|
81
108
|
private fun <T> launch(
|
|
82
109
|
work: suspend () -> T,
|
|
@@ -92,6 +119,6 @@ class SmileIdModule internal constructor(context: ReactApplicationContext) :
|
|
|
92
119
|
}
|
|
93
120
|
|
|
94
121
|
companion object {
|
|
95
|
-
const val NAME = "
|
|
122
|
+
const val NAME = "RNSmileID"
|
|
96
123
|
}
|
|
97
124
|
}
|
|
@@ -6,9 +6,10 @@ import com.facebook.react.bridge.ReactApplicationContext
|
|
|
6
6
|
import com.facebook.react.module.model.ReactModuleInfo
|
|
7
7
|
import com.facebook.react.module.model.ReactModuleInfoProvider
|
|
8
8
|
import com.facebook.react.uimanager.ViewManager
|
|
9
|
-
import com.smileidentity.react.viewmanagers.SmileIDBVNConsentViewManager
|
|
10
9
|
import com.smileidentity.react.viewmanagers.SmileIDBiometricKYCViewManager
|
|
10
|
+
import com.smileidentity.react.viewmanagers.SmileIDConsentViewManager
|
|
11
11
|
import com.smileidentity.react.viewmanagers.SmileIDDocumentVerificationViewManager
|
|
12
|
+
import com.smileidentity.react.viewmanagers.SmileIDEnhancedDocumentVerificationViewManager
|
|
12
13
|
import com.smileidentity.react.viewmanagers.SmileIDSmartSelfieAuthenticationViewManager
|
|
13
14
|
import com.smileidentity.react.viewmanagers.SmileIDSmartSelfieEnrollmentViewManager
|
|
14
15
|
|
|
@@ -18,7 +19,8 @@ class SmileIdPackage : TurboReactPackage() {
|
|
|
18
19
|
listOf(SmileIDSmartSelfieEnrollmentViewManager(reactContext),
|
|
19
20
|
SmileIDSmartSelfieAuthenticationViewManager(reactContext),
|
|
20
21
|
SmileIDDocumentVerificationViewManager(reactContext),
|
|
21
|
-
|
|
22
|
+
SmileIDEnhancedDocumentVerificationViewManager(reactContext),
|
|
23
|
+
SmileIDConsentViewManager(reactContext),
|
|
22
24
|
SmileIDBiometricKYCViewManager(reactContext),
|
|
23
25
|
)
|
|
24
26
|
|
|
@@ -26,64 +26,35 @@ fun ReadableMap.toMap(): Map<String, String> {
|
|
|
26
26
|
return map
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
fun ReadableMap.
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
Timber.e("idInfo.country is required")
|
|
33
|
-
return null
|
|
34
|
-
}
|
|
35
|
-
return IdInfo(
|
|
36
|
-
country = country,
|
|
37
|
-
idType = idInfoMap.getStringOrDefault("idType", null),
|
|
38
|
-
idNumber = idInfoMap.getStringOrDefault("idNumber", null),
|
|
39
|
-
firstName = idInfoMap.getStringOrDefault("firstName", null),
|
|
40
|
-
middleName = idInfoMap.getStringOrDefault("middleName", null),
|
|
41
|
-
lastName = idInfoMap.getStringOrDefault("lastName", null),
|
|
42
|
-
dob = idInfoMap.getStringOrDefault("dob", null),
|
|
43
|
-
bankCode = idInfoMap.getStringOrDefault("bankCode", null),
|
|
44
|
-
entered = idInfoMap.getBoolOrDefault("entered", false),
|
|
45
|
-
)
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
fun ReadableMap.partnerParams(): PartnerParams? {
|
|
50
|
-
val partnerParams = getMapOrDefault("partnerParams", null) ?: run {
|
|
51
|
-
Timber.w("partnerParams is required")
|
|
52
|
-
return null
|
|
29
|
+
fun ReadableMap.getBoolOrDefault(key: String, defaultValue: Boolean): Boolean {
|
|
30
|
+
if (hasKey(key)) {
|
|
31
|
+
return getBoolean(key)
|
|
53
32
|
}
|
|
54
|
-
|
|
55
|
-
val jobType = if (jobTypeValue != null) JobType.fromValue(jobTypeValue) else null
|
|
56
|
-
return PartnerParams(
|
|
57
|
-
jobType = jobType,
|
|
58
|
-
userId = partnerParams.getStringOrDefault("userId", null) ?: run { randomUserId() },
|
|
59
|
-
jobId = partnerParams.getStringOrDefault("jobId", null) ?: run { randomUserId() },
|
|
60
|
-
extras = partnerParams.getMapOrDefault("extras", null)?.toMap() ?: run { emptyMap() },
|
|
61
|
-
)
|
|
33
|
+
return defaultValue
|
|
62
34
|
}
|
|
63
35
|
|
|
64
|
-
|
|
65
|
-
fun ReadableMap.getBoolOrDefault(key: String, defaultValue: Boolean): Boolean {
|
|
36
|
+
fun ReadableMap.getFloatOrDefault(key: String, defaultValue: Float? = null): Float? {
|
|
66
37
|
if (hasKey(key)) {
|
|
67
|
-
return
|
|
38
|
+
return getDouble(key).toFloat()
|
|
68
39
|
}
|
|
69
40
|
return defaultValue
|
|
70
41
|
}
|
|
71
42
|
|
|
72
|
-
fun ReadableMap.getStringOrDefault(key: String, defaultValue: String?): String? {
|
|
43
|
+
fun ReadableMap.getStringOrDefault(key: String, defaultValue: String? = null): String? {
|
|
73
44
|
if (hasKey(key)) {
|
|
74
45
|
return getString(key)
|
|
75
46
|
}
|
|
76
47
|
return defaultValue
|
|
77
48
|
}
|
|
78
49
|
|
|
79
|
-
fun ReadableMap.getIntOrDefault(key: String, defaultValue: Int?): Int? {
|
|
50
|
+
fun ReadableMap.getIntOrDefault(key: String, defaultValue: Int? = null): Int? {
|
|
80
51
|
if (hasKey(key)) {
|
|
81
52
|
return getInt(key)
|
|
82
53
|
}
|
|
83
54
|
return defaultValue
|
|
84
55
|
}
|
|
85
56
|
|
|
86
|
-
fun ReadableMap.getMapOrDefault(key: String, defaultValue: ReadableMap?): ReadableMap? {
|
|
57
|
+
fun ReadableMap.getMapOrDefault(key: String, defaultValue: ReadableMap? = null): ReadableMap? {
|
|
87
58
|
if (hasKey(key)) {
|
|
88
59
|
return getMap(key)
|
|
89
60
|
}
|
package/android/src/main/java/com/smileidentity/react/viewmanagers/SmileIDBiometricKYCViewManager.kt
CHANGED
|
@@ -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.
|
|
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.
|
|
9
|
-
import com.smileidentity.react.
|
|
8
|
+
import com.smileidentity.react.toIdInfo
|
|
9
|
+
import com.smileidentity.react.utils.getBoolOrDefault
|
|
10
|
+
import com.smileidentity.react.utils.getStringOrDefault
|
|
11
|
+
import com.smileidentity.react.utils.toMap
|
|
12
|
+
import com.smileidentity.react.views.SmileIDBiometricKYCView
|
|
10
13
|
|
|
11
14
|
|
|
12
15
|
@ReactModule(name = SmileIDBiometricKYCViewManager.NAME)
|
|
13
16
|
class SmileIDBiometricKYCViewManager(private val reactApplicationContext: ReactApplicationContext) :
|
|
14
|
-
SimpleViewManager<
|
|
17
|
+
SimpleViewManager<SmileIDBiometricKYCView>() {
|
|
15
18
|
override fun getName(): String {
|
|
16
19
|
return NAME
|
|
17
20
|
}
|
|
@@ -26,17 +29,46 @@ class SmileIDBiometricKYCViewManager(private val reactApplicationContext: ReactA
|
|
|
26
29
|
)
|
|
27
30
|
}
|
|
28
31
|
|
|
29
|
-
|
|
30
|
-
|
|
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
|
|
35
|
-
|
|
36
|
+
override fun receiveCommand(
|
|
37
|
+
view: SmileIDBiometricKYCView,
|
|
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
|
+
val idInfoMap = params.getMap("idInfo")
|
|
48
|
+
?: return view.emitFailure(IllegalArgumentException("idInfo is required to run Biometric KYC"))
|
|
49
|
+
val idInfo = idInfoMap.toIdInfo()
|
|
50
|
+
?: return view.emitFailure(IllegalArgumentException("idInfo is required to run Biometric KYC"))
|
|
51
|
+
view.extraPartnerParams = params.getMap("extraPartnerParams")?.toMap()
|
|
52
|
+
view.userId = params.getStringOrDefault("userId")
|
|
53
|
+
view.jobId = params.getStringOrDefault("jobId")
|
|
54
|
+
view.idInfo = idInfo
|
|
55
|
+
view.allowAgentMode = params.getBoolOrDefault("allowAgentMode", false)
|
|
56
|
+
view.showAttribution = params.getBoolOrDefault("showAttribution", true)
|
|
57
|
+
view.showInstructions = params.getBoolOrDefault("showInstructions", true)
|
|
58
|
+
view.allowNewEnroll = params.getBoolOrDefault("allowNewEnroll", false)
|
|
59
|
+
view.renderContent()
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
override fun createViewInstance(p0: ThemedReactContext): SmileIDBiometricKYCView {
|
|
66
|
+
return SmileIDBiometricKYCView(reactApplicationContext)
|
|
36
67
|
}
|
|
37
68
|
|
|
38
69
|
companion object {
|
|
39
70
|
const val NAME = "SmileIDBiometricKYCView"
|
|
71
|
+
const val COMMAND_SET_PARAMS = 6
|
|
40
72
|
}
|
|
41
73
|
|
|
42
74
|
}
|
package/android/src/main/java/com/smileidentity/react/viewmanagers/SmileIDConsentViewManager.kt
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
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.getMapOrDefault
|
|
10
|
+
import com.smileidentity.react.utils.getStringOrDefault
|
|
11
|
+
import com.smileidentity.react.utils.toMap
|
|
12
|
+
import com.smileidentity.react.views.SmileIDConsentView
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
@ReactModule(name = SmileIDConsentViewManager.NAME)
|
|
16
|
+
class SmileIDConsentViewManager(private val reactApplicationContext: ReactApplicationContext) :
|
|
17
|
+
SimpleViewManager<SmileIDConsentView>() {
|
|
18
|
+
override fun getName(): String {
|
|
19
|
+
return NAME
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
override fun getExportedCustomBubblingEventTypeConstants(): Map<String, Any> {
|
|
23
|
+
return mapOf(
|
|
24
|
+
"onSmileResult" to mapOf(
|
|
25
|
+
"phasedRegistrationNames" to mapOf(
|
|
26
|
+
"bubbled" to "onResult"
|
|
27
|
+
)
|
|
28
|
+
)
|
|
29
|
+
)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
override fun getCommandsMap(): Map<String, Int> {
|
|
33
|
+
return mapOf("setParams" to COMMAND_SET_PARAMS)
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
override fun receiveCommand(
|
|
37
|
+
view: SmileIDConsentView,
|
|
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
|
+
|
|
48
|
+
val partnerName = params.getString("partnerName")
|
|
49
|
+
?: return view.emitFailure(IllegalArgumentException("partnerName is required to show Consent Screen"))
|
|
50
|
+
val partnerPrivacyPolicy = params.getString("partnerPrivacyPolicy") ?: return view.emitFailure(
|
|
51
|
+
IllegalArgumentException("partnerPrivacyPolicy is required to show Consent Screen")
|
|
52
|
+
)
|
|
53
|
+
val logoResName = params.getString("partnerIcon")
|
|
54
|
+
?: return view.emitFailure(IllegalArgumentException("partnerIcon is required to show Consent Screen"))
|
|
55
|
+
val productName = params.getString("productName")
|
|
56
|
+
?: return view.emitFailure(IllegalArgumentException("productName is required to show Consent Screen"))
|
|
57
|
+
|
|
58
|
+
view.extraPartnerParams = params.getMapOrDefault("extraPartnerParams")?.toMap()
|
|
59
|
+
view.userId = params.getStringOrDefault("userId")
|
|
60
|
+
view.jobId = params.getStringOrDefault("jobId")
|
|
61
|
+
view.partnerName = partnerName
|
|
62
|
+
view.partnerPrivacyPolicy = partnerPrivacyPolicy
|
|
63
|
+
view.logoResName = logoResName
|
|
64
|
+
view.productName = productName
|
|
65
|
+
view.allowAgentMode = params.getBoolOrDefault("allowAgentMode", false)
|
|
66
|
+
view.showAttribution = params.getBoolOrDefault("showAttribution", true)
|
|
67
|
+
view.showInstructions = params.getBoolOrDefault("showInstructions", true)
|
|
68
|
+
view.renderContent()
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
override fun createViewInstance(p0: ThemedReactContext): SmileIDConsentView {
|
|
75
|
+
return SmileIDConsentView(reactApplicationContext)
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
companion object {
|
|
79
|
+
const val NAME = "SmileIDConsentView"
|
|
80
|
+
const val COMMAND_SET_PARAMS = 5
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
}
|