@smile_identity/react-native 10.2.3 → 10.2.4
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/android/build.gradle +4 -1
- package/android/gradle.properties +1 -1
- package/android/src/main/java/com/smileidentity/react/Mapper.kt +19 -2
- package/android/src/main/java/com/smileidentity/react/fragments/SmileCaptureFragment.kt +56 -0
- package/android/src/main/java/com/smileidentity/react/utils/ReactUtils.kt +16 -0
- package/android/src/main/java/com/smileidentity/react/viewmanagers/BaseSmileIDViewManager.kt +130 -0
- package/android/src/main/java/com/smileidentity/react/viewmanagers/SmileIDBiometricKYCViewManager.kt +22 -46
- package/android/src/main/java/com/smileidentity/react/viewmanagers/SmileIDConsentViewManager.kt +27 -52
- package/android/src/main/java/com/smileidentity/react/viewmanagers/SmileIDDocumentCaptureViewManager.kt +15 -40
- package/android/src/main/java/com/smileidentity/react/viewmanagers/SmileIDDocumentVerificationViewManager.kt +23 -49
- package/android/src/main/java/com/smileidentity/react/viewmanagers/SmileIDEnhancedDocumentVerificationViewManager.kt +28 -47
- package/android/src/main/java/com/smileidentity/react/viewmanagers/SmileIDSmartSelfieAuthenticationEnhancedViewManager.kt +12 -37
- package/android/src/main/java/com/smileidentity/react/viewmanagers/SmileIDSmartSelfieAuthenticationViewManager.kt +16 -40
- package/android/src/main/java/com/smileidentity/react/viewmanagers/SmileIDSmartSelfieCaptureViewManager.kt +15 -38
- package/android/src/main/java/com/smileidentity/react/viewmanagers/SmileIDSmartSelfieEnrollmentEnhancedViewManager.kt +13 -38
- package/android/src/main/java/com/smileidentity/react/viewmanagers/SmileIDSmartSelfieEnrollmentViewManager.kt +15 -44
- package/android/src/main/java/com/smileidentity/react/views/SmileIDBiometricKYCView.kt +7 -0
- package/android/src/main/java/com/smileidentity/react/views/SmileIDEnhancedDocumentVerificationView.kt +8 -0
- package/android/src/main/java/com/smileidentity/react/views/SmileIDSmartSelfieCaptureView.kt +38 -25
- package/android/src/main/java/com/smileidentity/react/views/SmileIDSmartSelfieEnrollmentEnhancedView.kt +29 -21
- package/android/src/main/java/com/smileidentity/react/views/SmileIDSmartSelfieEnrollmentView.kt +35 -28
- package/android/src/main/java/com/smileidentity/react/views/SmileIDView.kt +11 -10
- package/android/src/main/res/values/colors.xml +14 -0
- package/android/src/main/res/values/strings.xml +91 -0
- package/ios/RNDelegates/SmileIDUIViewDelegate.swift +2 -0
- package/ios/RNSmileID.swift +470 -471
- package/ios/Utils/FileUtils.swift +17 -17
- package/ios/Utils/SmileIDDictExt.swift +14 -9
- package/ios/View/BaseSmileIDView.swift +6 -5
- package/ios/View/SmileIDBiometricKYCView.swift +54 -54
- package/ios/View/SmileIDConsentView.swift +2 -1
- package/ios/View/SmileIDDocumentCaptureView.swift +64 -64
- package/ios/View/SmileIDDocumentVerificationView.swift +51 -51
- package/ios/View/SmileIDEnhancedDocumentVerificationView.swift +51 -50
- package/ios/View/SmileIDSmartSelfieAuthEnhancedView.swift +34 -33
- package/ios/View/SmileIDSmartSelfieAuthView.swift +35 -34
- package/ios/View/SmileIDSmartSelfieCaptureView.swift +55 -55
- package/ios/View/SmileIDSmartSelfieEnrollmentEnhancedView.swift +35 -34
- package/ios/View/SmileIDSmartSelfieEnrollmentView.swift +37 -36
- package/ios/ViewManagers/SmileIDBaseViewManager.swift +22 -5
- package/ios/ViewManagers/SmileIDBiometricKYCViewManager.m +4 -1
- package/ios/ViewManagers/SmileIDBiometricKYCViewManager.swift +2 -2
- package/ios/ViewManagers/SmileIDConsentViewManager.m +4 -1
- package/ios/ViewManagers/SmileIDConsentViewManager.swift +2 -2
- package/ios/ViewManagers/SmileIDDocumentCaptureViewManager.m +4 -1
- package/ios/ViewManagers/SmileIDDocumentCaptureViewManager.swift +19 -19
- package/ios/ViewManagers/SmileIDDocumentVerificationViewManager.m +4 -1
- package/ios/ViewManagers/SmileIDDocumentVerificationViewManager.swift +40 -40
- package/ios/ViewManagers/SmileIDEnhancedDocumentVerificationViewManager.m +4 -1
- package/ios/ViewManagers/SmileIDEnhancedDocumentVerificationViewManager.swift +40 -40
- package/ios/ViewManagers/SmileIDSmartSelfieAuthenticationEnhancedViewManager.m +4 -1
- package/ios/ViewManagers/SmileIDSmartSelfieAuthenticationEnhancedViewManager.swift +16 -16
- package/ios/ViewManagers/SmileIDSmartSelfieAuthenticationViewManager.m +4 -1
- package/ios/ViewManagers/SmileIDSmartSelfieAuthenticationViewManager.swift +20 -20
- package/ios/ViewManagers/SmileIDSmartSelfieCaptureViewManager.m +4 -1
- package/ios/ViewManagers/SmileIDSmartSelfieCaptureViewManager.swift +27 -26
- package/ios/ViewManagers/SmileIDSmartSelfieEnrollmentEnhancedViewManager.m +4 -1
- package/ios/ViewManagers/SmileIDSmartSelfieEnrollmentEnhancedViewManager.swift +16 -16
- package/ios/ViewManagers/SmileIDSmartSelfieEnrollmentViewManager.m +4 -1
- package/ios/ViewManagers/SmileIDSmartSelfieEnrollmentViewManager.swift +20 -20
- package/ios/ViewModels/SmileIDProductModel.swift +5 -5
- package/lib/commonjs/SmileIDBiometricKYCView.js +18 -29
- package/lib/commonjs/SmileIDBiometricKYCView.js.map +1 -1
- package/lib/commonjs/SmileIDConsentView.js +9 -29
- package/lib/commonjs/SmileIDConsentView.js.map +1 -1
- package/lib/commonjs/SmileIDDocumentCaptureView.js +9 -29
- package/lib/commonjs/SmileIDDocumentCaptureView.js.map +1 -1
- package/lib/commonjs/SmileIDDocumentVerificationView.js +9 -29
- package/lib/commonjs/SmileIDDocumentVerificationView.js.map +1 -1
- package/lib/commonjs/SmileIDEnhancedDocumentVerificationView.js +17 -28
- package/lib/commonjs/SmileIDEnhancedDocumentVerificationView.js.map +1 -1
- package/lib/commonjs/SmileIDSmartSelfieAuthenticationEnhancedView.js +9 -29
- package/lib/commonjs/SmileIDSmartSelfieAuthenticationEnhancedView.js.map +1 -1
- package/lib/commonjs/SmileIDSmartSelfieAuthenticationView.js +9 -29
- package/lib/commonjs/SmileIDSmartSelfieAuthenticationView.js.map +1 -1
- package/lib/commonjs/SmileIDSmartSelfieCaptureView.js +9 -29
- package/lib/commonjs/SmileIDSmartSelfieCaptureView.js.map +1 -1
- package/lib/commonjs/SmileIDSmartSelfieEnrollmentEnhancedView.js +9 -29
- package/lib/commonjs/SmileIDSmartSelfieEnrollmentEnhancedView.js.map +1 -1
- package/lib/commonjs/SmileIDSmartSelfieEnrollmentView.js +9 -29
- package/lib/commonjs/SmileIDSmartSelfieEnrollmentView.js.map +1 -1
- package/lib/commonjs/useSmileIDView.js +65 -0
- package/lib/commonjs/useSmileIDView.js.map +1 -0
- package/lib/module/SmileIDBiometricKYCView.js +18 -26
- package/lib/module/SmileIDBiometricKYCView.js.map +1 -1
- package/lib/module/SmileIDConsentView.js +9 -26
- package/lib/module/SmileIDConsentView.js.map +1 -1
- package/lib/module/SmileIDDocumentCaptureView.js +9 -26
- package/lib/module/SmileIDDocumentCaptureView.js.map +1 -1
- package/lib/module/SmileIDDocumentVerificationView.js +9 -26
- package/lib/module/SmileIDDocumentVerificationView.js.map +1 -1
- package/lib/module/SmileIDEnhancedDocumentVerificationView.js +17 -25
- package/lib/module/SmileIDEnhancedDocumentVerificationView.js.map +1 -1
- package/lib/module/SmileIDSmartSelfieAuthenticationEnhancedView.js +9 -26
- package/lib/module/SmileIDSmartSelfieAuthenticationEnhancedView.js.map +1 -1
- package/lib/module/SmileIDSmartSelfieAuthenticationView.js +9 -26
- package/lib/module/SmileIDSmartSelfieAuthenticationView.js.map +1 -1
- package/lib/module/SmileIDSmartSelfieCaptureView.js +9 -26
- package/lib/module/SmileIDSmartSelfieCaptureView.js.map +1 -1
- package/lib/module/SmileIDSmartSelfieEnrollmentEnhancedView.js +9 -26
- package/lib/module/SmileIDSmartSelfieEnrollmentEnhancedView.js.map +1 -1
- package/lib/module/SmileIDSmartSelfieEnrollmentView.js +9 -26
- package/lib/module/SmileIDSmartSelfieEnrollmentView.js.map +1 -1
- package/lib/module/useSmileIDView.js +58 -0
- package/lib/module/useSmileIDView.js.map +1 -0
- package/lib/typescript/SmileIDBiometricKYCView.d.ts +3 -6
- package/lib/typescript/SmileIDBiometricKYCView.d.ts.map +1 -1
- package/lib/typescript/SmileIDConsentView.d.ts +3 -6
- package/lib/typescript/SmileIDConsentView.d.ts.map +1 -1
- package/lib/typescript/SmileIDDocumentCaptureView.d.ts +3 -6
- package/lib/typescript/SmileIDDocumentCaptureView.d.ts.map +1 -1
- package/lib/typescript/SmileIDDocumentVerificationView.d.ts +3 -6
- package/lib/typescript/SmileIDDocumentVerificationView.d.ts.map +1 -1
- package/lib/typescript/SmileIDEnhancedDocumentVerificationView.d.ts +3 -6
- package/lib/typescript/SmileIDEnhancedDocumentVerificationView.d.ts.map +1 -1
- package/lib/typescript/SmileIDSmartSelfieAuthenticationEnhancedView.d.ts +3 -6
- package/lib/typescript/SmileIDSmartSelfieAuthenticationEnhancedView.d.ts.map +1 -1
- package/lib/typescript/SmileIDSmartSelfieAuthenticationView.d.ts +3 -6
- package/lib/typescript/SmileIDSmartSelfieAuthenticationView.d.ts.map +1 -1
- package/lib/typescript/SmileIDSmartSelfieCaptureView.d.ts +3 -6
- package/lib/typescript/SmileIDSmartSelfieCaptureView.d.ts.map +1 -1
- package/lib/typescript/SmileIDSmartSelfieEnrollmentEnhancedView.d.ts +3 -6
- package/lib/typescript/SmileIDSmartSelfieEnrollmentEnhancedView.d.ts.map +1 -1
- package/lib/typescript/SmileIDSmartSelfieEnrollmentView.d.ts +3 -6
- package/lib/typescript/SmileIDSmartSelfieEnrollmentView.d.ts.map +1 -1
- package/lib/typescript/useSmileIDView.d.ts +12 -0
- package/lib/typescript/useSmileIDView.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/SmileIDBiometricKYCView.tsx +14 -30
- package/src/SmileIDConsentView.tsx +7 -30
- package/src/SmileIDDocumentCaptureView.tsx +9 -33
- package/src/SmileIDDocumentVerificationView.tsx +9 -36
- package/src/SmileIDEnhancedDocumentVerificationView.tsx +23 -35
- package/src/SmileIDSmartSelfieAuthenticationEnhancedView.tsx +17 -36
- package/src/SmileIDSmartSelfieAuthenticationView.tsx +10 -37
- package/src/SmileIDSmartSelfieCaptureView.tsx +9 -33
- package/src/SmileIDSmartSelfieEnrollmentEnhancedView.tsx +14 -36
- package/src/SmileIDSmartSelfieEnrollmentView.tsx +10 -37
- package/src/useSmileIDView.tsx +88 -0
package/android/build.gradle
CHANGED
|
@@ -116,10 +116,13 @@ repositories {
|
|
|
116
116
|
mavenCentral()
|
|
117
117
|
google()
|
|
118
118
|
gradlePluginPortal()
|
|
119
|
+
maven {
|
|
120
|
+
url 'https://oss.sonatype.org/content/repositories/snapshots/'
|
|
121
|
+
}
|
|
119
122
|
}
|
|
120
123
|
|
|
121
124
|
def kotlin_version = rootProject.ext.has("kotlinVersion") ? rootProject.ext.get("kotlinVersion") : project.properties["SmileId_kotlinVersion"]
|
|
122
|
-
def smile_id_sdk_version = project.properties["SmileId_androidVersion"]
|
|
125
|
+
def smile_id_sdk_version = rootProject.ext.has("smileIdAndroidSdkVersion") ? rootProject.ext.get("smileIdAndroidSdkVersion") : project.properties["SmileId_androidVersion"]
|
|
123
126
|
|
|
124
127
|
dependencies {
|
|
125
128
|
implementation "com.facebook.react:react-native:0.72"
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
package com.smileidentity.react
|
|
2
2
|
|
|
3
|
+
import androidx.compose.animation.core.rememberTransition
|
|
3
4
|
import com.facebook.react.bridge.ReadableMap
|
|
4
5
|
import com.smileidentity.models.AuthenticationRequest
|
|
5
6
|
import com.smileidentity.models.Config
|
|
7
|
+
import com.smileidentity.models.ConsentInformation
|
|
6
8
|
import com.smileidentity.models.EnhancedKycRequest
|
|
7
9
|
import com.smileidentity.models.IdInfo
|
|
8
10
|
import com.smileidentity.models.ImageType
|
|
@@ -14,6 +16,7 @@ import com.smileidentity.models.ProductsConfigRequest
|
|
|
14
16
|
import com.smileidentity.models.UploadImageInfo
|
|
15
17
|
import com.smileidentity.models.UploadRequest
|
|
16
18
|
import com.smileidentity.react.utils.getBoolOrDefault
|
|
19
|
+
import com.smileidentity.react.utils.getCurrentIsoTimestamp
|
|
17
20
|
import com.smileidentity.react.utils.getIntOrDefault
|
|
18
21
|
import com.smileidentity.react.utils.getMapOrDefault
|
|
19
22
|
import com.smileidentity.react.utils.getStringOrDefault
|
|
@@ -23,11 +26,11 @@ import com.smileidentity.util.randomUserId
|
|
|
23
26
|
import java.io.File
|
|
24
27
|
|
|
25
28
|
fun ReadableMap.toConfig(): Config {
|
|
26
|
-
return
|
|
29
|
+
return Config(
|
|
27
30
|
partnerId = getStringOrDefault("partnerId") ?: run {
|
|
28
31
|
throw IllegalArgumentException("partnerId is required")
|
|
29
32
|
},
|
|
30
|
-
authToken = getStringOrDefault("authToken")
|
|
33
|
+
authToken = getStringOrDefault("authToken") ?: run {
|
|
31
34
|
throw IllegalArgumentException("authToken is required")
|
|
32
35
|
},
|
|
33
36
|
prodLambdaUrl = getStringOrDefault("prodLambdaUrl") ?: run {
|
|
@@ -149,6 +152,20 @@ fun ReadableMap.toEnhancedKycRequest(): EnhancedKycRequest {
|
|
|
149
152
|
signature = getStringOrDefault("signature") ?: run {
|
|
150
153
|
throw IllegalArgumentException("signature is required")
|
|
151
154
|
},
|
|
155
|
+
consentInformation = getMapOrDefault("consentInformation", null)?.toConsentInfo() ?: run {
|
|
156
|
+
throw IllegalArgumentException("consentInformation is required")
|
|
157
|
+
},
|
|
158
|
+
)
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
fun ReadableMap.toConsentInfo(): ConsentInformation {
|
|
162
|
+
return ConsentInformation(
|
|
163
|
+
consentGrantedDate = getStringOrDefault("consentGrantedDate", null) ?: run {
|
|
164
|
+
getCurrentIsoTimestamp()
|
|
165
|
+
},
|
|
166
|
+
personalDetailsConsentGranted = getBoolOrDefault("personalDetailsConsentGranted", false),
|
|
167
|
+
contactInfoConsentGranted = getBoolOrDefault("contactInfoConsentGranted", false),
|
|
168
|
+
documentInfoConsentGranted = getBoolOrDefault("contactInfoConsentGranted", false)
|
|
152
169
|
)
|
|
153
170
|
}
|
|
154
171
|
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
package com.smileidentity.react.fragments
|
|
2
|
+
|
|
3
|
+
import android.os.Bundle
|
|
4
|
+
import android.view.LayoutInflater
|
|
5
|
+
import android.view.View
|
|
6
|
+
import android.view.ViewGroup
|
|
7
|
+
import androidx.fragment.app.Fragment
|
|
8
|
+
import com.facebook.react.bridge.ReactContext
|
|
9
|
+
import com.facebook.react.bridge.ReadableMap
|
|
10
|
+
import com.facebook.react.bridge.WritableMap
|
|
11
|
+
import com.facebook.react.modules.core.DeviceEventManagerModule
|
|
12
|
+
import com.smileidentity.react.views.SmileIDView
|
|
13
|
+
import com.smileidentity.react.views.SmileViewListener
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class SmileCaptureFragment : Fragment(), SmileViewListener {
|
|
17
|
+
lateinit var smileIdView: SmileIDView
|
|
18
|
+
private var args: ReadableMap? = null
|
|
19
|
+
private var reactContext: ReactContext? = null
|
|
20
|
+
|
|
21
|
+
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
|
|
22
|
+
super.onCreateView(inflater, container, savedInstanceState)
|
|
23
|
+
return smileIdView
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
fun setSmileIDView(smileIDView: SmileIDView) {
|
|
27
|
+
smileIdView = smileIDView
|
|
28
|
+
smileIdView.smileViewListener = this
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
fun setReactContext(reactContext: ReactContext) {
|
|
32
|
+
this.reactContext = reactContext
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
fun updateViewWithParams(params: ReadableMap?) {
|
|
36
|
+
args = params
|
|
37
|
+
// Only update if view is created
|
|
38
|
+
if (view != null) {
|
|
39
|
+
params?.let {
|
|
40
|
+
smileIdView.renderContent()
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
|
46
|
+
super.onViewCreated(view, savedInstanceState)
|
|
47
|
+
args?.let {
|
|
48
|
+
smileIdView.renderContent()
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
override fun emitSuccess(map: WritableMap) {
|
|
53
|
+
reactContext?.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
|
|
54
|
+
?.emit("onSmileResult", map)
|
|
55
|
+
}
|
|
56
|
+
}
|
|
@@ -12,6 +12,10 @@ import kotlinx.collections.immutable.persistentMapOf
|
|
|
12
12
|
import kotlinx.collections.immutable.toImmutableMap
|
|
13
13
|
import kotlinx.collections.immutable.toPersistentMap
|
|
14
14
|
import timber.log.Timber
|
|
15
|
+
import java.text.SimpleDateFormat
|
|
16
|
+
import java.util.Date
|
|
17
|
+
import java.util.Locale
|
|
18
|
+
import java.util.TimeZone
|
|
15
19
|
|
|
16
20
|
fun ReadableMap.toMap(): Map<String, String> {
|
|
17
21
|
val map = mutableMapOf<String, String>()
|
|
@@ -79,3 +83,15 @@ fun ReadableMap.getImmutableMapOrDefault(
|
|
|
79
83
|
defaultValue
|
|
80
84
|
}
|
|
81
85
|
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Converts current time to ISO8601 string with milliseconds in UTC
|
|
89
|
+
* Format: yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
|
|
90
|
+
*/
|
|
91
|
+
internal fun getCurrentIsoTimestamp(): String {
|
|
92
|
+
val pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
|
|
93
|
+
val sdf = SimpleDateFormat(pattern, Locale.US)
|
|
94
|
+
sdf.timeZone = TimeZone.getTimeZone("UTC")
|
|
95
|
+
return sdf.format(Date())
|
|
96
|
+
}
|
|
97
|
+
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
package com.smileidentity.react.viewmanagers
|
|
2
|
+
|
|
3
|
+
import android.view.Choreographer
|
|
4
|
+
import android.view.View
|
|
5
|
+
import android.view.View.MeasureSpec
|
|
6
|
+
import android.view.ViewGroup
|
|
7
|
+
import android.widget.FrameLayout
|
|
8
|
+
import androidx.fragment.app.FragmentManager
|
|
9
|
+
import com.facebook.react.ReactActivity
|
|
10
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
11
|
+
import com.facebook.react.bridge.ReadableArray
|
|
12
|
+
import com.facebook.react.bridge.ReadableMap
|
|
13
|
+
import com.facebook.react.uimanager.SimpleViewManager
|
|
14
|
+
import com.facebook.react.uimanager.ThemedReactContext
|
|
15
|
+
import com.smileidentity.react.fragments.SmileCaptureFragment
|
|
16
|
+
import com.smileidentity.react.views.SmileIDView
|
|
17
|
+
|
|
18
|
+
abstract class BaseSmileIDViewManager<T : SmileIDView>(
|
|
19
|
+
private val reactApplicationContext: ReactApplicationContext
|
|
20
|
+
) : SimpleViewManager<FrameLayout>() {
|
|
21
|
+
private var smileCaptureFragment: SmileCaptureFragment? = null
|
|
22
|
+
protected var smileIDView: T? = null
|
|
23
|
+
|
|
24
|
+
override fun getExportedCustomBubblingEventTypeConstants(): Map<String, Any> {
|
|
25
|
+
return mapOf(
|
|
26
|
+
"onSmileResult" to mapOf(
|
|
27
|
+
"phasedRegistrationNames" to mapOf(
|
|
28
|
+
"bubbled" to "onResult"
|
|
29
|
+
)
|
|
30
|
+
)
|
|
31
|
+
)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
private fun createFragment(
|
|
35
|
+
root: FrameLayout,
|
|
36
|
+
reactNativeViewId: Int,
|
|
37
|
+
) {
|
|
38
|
+
val parentView = root.findViewById<ViewGroup>(reactNativeViewId)
|
|
39
|
+
setupLayout(parentView)
|
|
40
|
+
|
|
41
|
+
// Clean up existing view and fragment
|
|
42
|
+
smileIDView?.let { existingView ->
|
|
43
|
+
(existingView.parent as? ViewGroup)?.removeView(existingView)
|
|
44
|
+
}
|
|
45
|
+
smileCaptureFragment?.let { existingFragment ->
|
|
46
|
+
val activity = reactApplicationContext.currentActivity as ReactActivity
|
|
47
|
+
val manager = activity.supportFragmentManager
|
|
48
|
+
manager.beginTransaction().remove(existingFragment).commit()
|
|
49
|
+
manager.executePendingTransactions()
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Create new instances
|
|
53
|
+
smileIDView = createSmileView()
|
|
54
|
+
smileCaptureFragment = SmileCaptureFragment()
|
|
55
|
+
smileCaptureFragment?.setReactContext(reactApplicationContext)
|
|
56
|
+
smileIDView?.let { view ->
|
|
57
|
+
(view.parent as? ViewGroup)?.removeView(view) // Ensure view is detached
|
|
58
|
+
smileCaptureFragment?.setSmileIDView(view)
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// Add new fragment
|
|
62
|
+
smileCaptureFragment?.let {
|
|
63
|
+
val activity = reactApplicationContext.currentActivity as ReactActivity
|
|
64
|
+
val manager = activity.supportFragmentManager
|
|
65
|
+
manager.popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)
|
|
66
|
+
manager.beginTransaction()
|
|
67
|
+
.replace(reactNativeViewId, it, reactNativeViewId.toString())
|
|
68
|
+
.commit()
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
abstract fun createSmileView(): T
|
|
73
|
+
abstract fun applyArgs(view: T, args: ReadableMap?)
|
|
74
|
+
|
|
75
|
+
private fun setupLayout(view: View) {
|
|
76
|
+
Choreographer.getInstance().postFrameCallback(object : Choreographer.FrameCallback {
|
|
77
|
+
override fun doFrame(frameTimeNanos: Long) {
|
|
78
|
+
manuallyLayoutChildren(view)
|
|
79
|
+
view.viewTreeObserver.dispatchOnGlobalLayout()
|
|
80
|
+
Choreographer.getInstance().postFrameCallback(this)
|
|
81
|
+
}
|
|
82
|
+
})
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
private fun manuallyLayoutChildren(view: View) {
|
|
86
|
+
val width = view.measuredWidth
|
|
87
|
+
val height = view.measuredHeight
|
|
88
|
+
view.measure(
|
|
89
|
+
MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
|
|
90
|
+
MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)
|
|
91
|
+
)
|
|
92
|
+
view.layout(0, 0, width, height)
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
override fun createViewInstance(p0: ThemedReactContext): FrameLayout {
|
|
96
|
+
return FrameLayout(p0)
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
override fun getCommandsMap(): Map<String, Int> {
|
|
100
|
+
return mapOf("setParams" to COMMAND_SET_PARAMS, "create" to COMMAND_CREATE)
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
override fun receiveCommand(
|
|
104
|
+
view: FrameLayout,
|
|
105
|
+
commandId: String?,
|
|
106
|
+
args: ReadableArray?
|
|
107
|
+
) {
|
|
108
|
+
super.receiveCommand(view, commandId, args)
|
|
109
|
+
when (commandId?.toInt()) {
|
|
110
|
+
COMMAND_CREATE -> {
|
|
111
|
+
val reactNativeViewId = requireNotNull(args).getInt(0)
|
|
112
|
+
createFragment(view, reactNativeViewId)
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
COMMAND_SET_PARAMS -> {
|
|
116
|
+
val params = args?.getMap(1)
|
|
117
|
+
smileIDView?.let { view ->
|
|
118
|
+
applyArgs(view, params)
|
|
119
|
+
// Update the fragment with new params
|
|
120
|
+
smileCaptureFragment?.updateViewWithParams(params)
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
companion object {
|
|
127
|
+
const val COMMAND_SET_PARAMS = 1
|
|
128
|
+
const val COMMAND_CREATE = 2
|
|
129
|
+
}
|
|
130
|
+
}
|
package/android/src/main/java/com/smileidentity/react/viewmanagers/SmileIDBiometricKYCViewManager.kt
CHANGED
|
@@ -1,70 +1,46 @@
|
|
|
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.ReadableMap
|
|
5
5
|
import com.facebook.react.module.annotations.ReactModule
|
|
6
|
-
import com.
|
|
7
|
-
import com.facebook.react.uimanager.ThemedReactContext
|
|
6
|
+
import com.smileidentity.react.toConsentInfo
|
|
8
7
|
import com.smileidentity.react.toIdInfo
|
|
9
8
|
import com.smileidentity.react.utils.getBoolOrDefault
|
|
10
9
|
import com.smileidentity.react.utils.getImmutableMapOrDefault
|
|
10
|
+
import com.smileidentity.react.utils.getMapOrDefault
|
|
11
11
|
import com.smileidentity.react.utils.getStringOrDefault
|
|
12
12
|
import com.smileidentity.react.views.SmileIDBiometricKYCView
|
|
13
13
|
|
|
14
14
|
@ReactModule(name = SmileIDBiometricKYCViewManager.NAME)
|
|
15
15
|
class SmileIDBiometricKYCViewManager(
|
|
16
16
|
private val reactApplicationContext: ReactApplicationContext
|
|
17
|
-
) :
|
|
17
|
+
) : BaseSmileIDViewManager<SmileIDBiometricKYCView>(reactApplicationContext) {
|
|
18
18
|
|
|
19
19
|
override fun getName(): String = NAME
|
|
20
20
|
|
|
21
|
-
override fun
|
|
22
|
-
return
|
|
23
|
-
"onSmileResult" to mapOf(
|
|
24
|
-
"phasedRegistrationNames" to mapOf(
|
|
25
|
-
"bubbled" to "onResult"
|
|
26
|
-
)
|
|
27
|
-
)
|
|
28
|
-
)
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
override fun getCommandsMap(): Map<String, Int> {
|
|
32
|
-
return mapOf("setParams" to COMMAND_SET_PARAMS)
|
|
21
|
+
override fun createSmileView(): SmileIDBiometricKYCView {
|
|
22
|
+
return SmileIDBiometricKYCView(reactApplicationContext)
|
|
33
23
|
}
|
|
34
24
|
|
|
35
|
-
override fun
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
view.userId = params.getStringOrDefault("userId")
|
|
52
|
-
view.jobId = params.getStringOrDefault("jobId")
|
|
53
|
-
view.idInfo = idInfo
|
|
54
|
-
view.allowAgentMode = params.getBoolOrDefault("allowAgentMode", false)
|
|
55
|
-
view.showAttribution = params.getBoolOrDefault("showAttribution", true)
|
|
56
|
-
view.showInstructions = params.getBoolOrDefault("showInstructions", true)
|
|
57
|
-
view.allowNewEnroll = params.getBoolOrDefault("allowNewEnroll", false)
|
|
58
|
-
view.renderContent()
|
|
59
|
-
}
|
|
60
|
-
}
|
|
25
|
+
override fun applyArgs(view: SmileIDBiometricKYCView, args: ReadableMap?) {
|
|
26
|
+
args?.let {
|
|
27
|
+
val idInfoMap = it.getMap("idInfo")
|
|
28
|
+
?: return view.emitFailure(IllegalArgumentException("idInfo is required to run Biometric KYC"))
|
|
29
|
+
val consentInformationMap = it.getMap("consentInformation")
|
|
30
|
+
?: return view.emitFailure(IllegalArgumentException("consentInformation is required to run Biometric KYC"))
|
|
31
|
+
val idInfo = idInfoMap.toIdInfo()
|
|
32
|
+
view.consentInformation = consentInformationMap.toConsentInfo()
|
|
33
|
+
view.extraPartnerParams = it.getImmutableMapOrDefault("extraPartnerParams")
|
|
34
|
+
view.userId = it.getStringOrDefault("userId")
|
|
35
|
+
view.jobId = it.getStringOrDefault("jobId")
|
|
36
|
+
view.idInfo = idInfo
|
|
37
|
+
view.allowAgentMode = it.getBoolOrDefault("allowAgentMode", false)
|
|
38
|
+
view.showAttribution = it.getBoolOrDefault("showAttribution", true)
|
|
39
|
+
view.showInstructions = it.getBoolOrDefault("showInstructions", true)
|
|
40
|
+
view.allowNewEnroll = it.getBoolOrDefault("allowNewEnroll", false)
|
|
61
41
|
}
|
|
62
42
|
}
|
|
63
43
|
|
|
64
|
-
override fun createViewInstance(p0: ThemedReactContext): SmileIDBiometricKYCView {
|
|
65
|
-
return SmileIDBiometricKYCView(reactApplicationContext)
|
|
66
|
-
}
|
|
67
|
-
|
|
68
44
|
companion object {
|
|
69
45
|
const val NAME = "SmileIDBiometricKYCView"
|
|
70
46
|
const val COMMAND_SET_PARAMS = 6
|
package/android/src/main/java/com/smileidentity/react/viewmanagers/SmileIDConsentViewManager.kt
CHANGED
|
@@ -2,6 +2,7 @@ package com.smileidentity.react.viewmanagers
|
|
|
2
2
|
|
|
3
3
|
import com.facebook.react.bridge.ReactApplicationContext
|
|
4
4
|
import com.facebook.react.bridge.ReadableArray
|
|
5
|
+
import com.facebook.react.bridge.ReadableMap
|
|
5
6
|
import com.facebook.react.module.annotations.ReactModule
|
|
6
7
|
import com.facebook.react.uimanager.SimpleViewManager
|
|
7
8
|
import com.facebook.react.uimanager.ThemedReactContext
|
|
@@ -9,72 +10,46 @@ import com.smileidentity.react.utils.getBoolOrDefault
|
|
|
9
10
|
import com.smileidentity.react.utils.getImmutableMapOrDefault
|
|
10
11
|
import com.smileidentity.react.utils.getStringOrDefault
|
|
11
12
|
import com.smileidentity.react.views.SmileIDConsentView
|
|
13
|
+
import com.smileidentity.react.views.SmileIDDocumentCaptureView
|
|
12
14
|
|
|
13
15
|
@ReactModule(name = SmileIDConsentViewManager.NAME)
|
|
14
16
|
class SmileIDConsentViewManager(
|
|
15
17
|
private val reactApplicationContext: ReactApplicationContext
|
|
16
|
-
) :
|
|
18
|
+
) : BaseSmileIDViewManager<SmileIDConsentView>(reactApplicationContext) {
|
|
17
19
|
|
|
18
20
|
override fun getName(): String = NAME
|
|
19
21
|
|
|
20
|
-
override fun
|
|
21
|
-
return
|
|
22
|
-
"onSmileResult" to mapOf(
|
|
23
|
-
"phasedRegistrationNames" to mapOf(
|
|
24
|
-
"bubbled" to "onResult"
|
|
25
|
-
)
|
|
26
|
-
)
|
|
27
|
-
)
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
override fun getCommandsMap(): Map<String, Int> {
|
|
31
|
-
return mapOf("setParams" to COMMAND_SET_PARAMS)
|
|
22
|
+
override fun createSmileView(): SmileIDConsentView {
|
|
23
|
+
return SmileIDConsentView(reactApplicationContext)
|
|
32
24
|
}
|
|
33
25
|
|
|
34
|
-
override fun
|
|
35
|
-
|
|
36
|
-
commandId: String?,
|
|
37
|
-
args: ReadableArray?
|
|
38
|
-
) {
|
|
39
|
-
super.receiveCommand(view, commandId, args)
|
|
40
|
-
when (commandId?.toInt()) {
|
|
41
|
-
COMMAND_SET_PARAMS -> {
|
|
42
|
-
// Extract params from args and apply to view
|
|
43
|
-
val params = args?.getMap(0)
|
|
44
|
-
params?.let {
|
|
45
|
-
|
|
46
|
-
val partnerName = params.getString("partnerName")
|
|
47
|
-
?: return view.emitFailure(IllegalArgumentException("partnerName is required to show Consent Screen"))
|
|
48
|
-
val partnerPrivacyPolicy = params.getString("partnerPrivacyPolicy") ?: return view.emitFailure(
|
|
49
|
-
IllegalArgumentException("partnerPrivacyPolicy is required to show Consent Screen")
|
|
50
|
-
)
|
|
51
|
-
val logoResName = params.getString("partnerIcon")
|
|
52
|
-
?: return view.emitFailure(IllegalArgumentException("partnerIcon is required to show Consent Screen"))
|
|
53
|
-
val productName = params.getString("productName")
|
|
54
|
-
?: return view.emitFailure(IllegalArgumentException("productName is required to show Consent Screen"))
|
|
26
|
+
override fun applyArgs(view: SmileIDConsentView, args: ReadableMap?) {
|
|
27
|
+
args?.let {
|
|
55
28
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
29
|
+
val partnerName = it.getString("partnerName")
|
|
30
|
+
?: return view.emitFailure(IllegalArgumentException("partnerName is required to show Consent Screen"))
|
|
31
|
+
val partnerPrivacyPolicy = it.getString("partnerPrivacyPolicy") ?: return view.emitFailure(
|
|
32
|
+
IllegalArgumentException("partnerPrivacyPolicy is required to show Consent Screen")
|
|
33
|
+
)
|
|
34
|
+
val logoResName = it.getString("partnerIcon")
|
|
35
|
+
?: return view.emitFailure(IllegalArgumentException("partnerIcon is required to show Consent Screen"))
|
|
36
|
+
val productName = it.getString("productName")
|
|
37
|
+
?: return view.emitFailure(IllegalArgumentException("productName is required to show Consent Screen"))
|
|
38
|
+
|
|
39
|
+
view.extraPartnerParams = it.getImmutableMapOrDefault("extraPartnerParams")
|
|
40
|
+
view.userId = it.getStringOrDefault("userId")
|
|
41
|
+
view.jobId = it.getStringOrDefault("jobId")
|
|
42
|
+
view.partnerName = partnerName
|
|
43
|
+
view.partnerPrivacyPolicy = partnerPrivacyPolicy
|
|
44
|
+
view.logoResName = logoResName
|
|
45
|
+
view.productName = productName
|
|
46
|
+
view.allowAgentMode = it.getBoolOrDefault("allowAgentMode", false)
|
|
47
|
+
view.showAttribution = it.getBoolOrDefault("showAttribution", true)
|
|
48
|
+
view.showInstructions = it.getBoolOrDefault("showInstructions", true)
|
|
69
49
|
}
|
|
70
50
|
}
|
|
71
51
|
|
|
72
|
-
override fun createViewInstance(p0: ThemedReactContext): SmileIDConsentView {
|
|
73
|
-
return SmileIDConsentView(reactApplicationContext)
|
|
74
|
-
}
|
|
75
|
-
|
|
76
52
|
companion object {
|
|
77
53
|
const val NAME = "SmileIDConsentView"
|
|
78
|
-
const val COMMAND_SET_PARAMS = 5
|
|
79
54
|
}
|
|
80
55
|
}
|
|
@@ -2,64 +2,39 @@ package com.smileidentity.react.viewmanagers
|
|
|
2
2
|
|
|
3
3
|
import com.facebook.react.bridge.ReactApplicationContext
|
|
4
4
|
import com.facebook.react.bridge.ReadableArray
|
|
5
|
+
import com.facebook.react.bridge.ReadableMap
|
|
5
6
|
import com.facebook.react.module.annotations.ReactModule
|
|
6
7
|
import com.facebook.react.uimanager.SimpleViewManager
|
|
7
8
|
import com.facebook.react.uimanager.ThemedReactContext
|
|
8
9
|
import com.smileidentity.react.utils.getBoolOrDefault
|
|
9
10
|
import com.smileidentity.react.utils.getStringOrDefault
|
|
10
11
|
import com.smileidentity.react.views.SmileIDDocumentCaptureView
|
|
12
|
+
import com.smileidentity.react.views.SmileIDDocumentVerificationView
|
|
11
13
|
|
|
12
14
|
@ReactModule(name = SmileIDDocumentCaptureViewManager.NAME)
|
|
13
15
|
class SmileIDDocumentCaptureViewManager(
|
|
14
16
|
private val reactApplicationContext: ReactApplicationContext
|
|
15
|
-
) :
|
|
17
|
+
) : BaseSmileIDViewManager<SmileIDDocumentCaptureView>(reactApplicationContext) {
|
|
16
18
|
override fun getName(): String = NAME
|
|
17
19
|
|
|
18
|
-
override fun
|
|
19
|
-
return
|
|
20
|
-
"onSmileResult" to mapOf(
|
|
21
|
-
"phasedRegistrationNames" to mapOf(
|
|
22
|
-
"bubbled" to "onResult"
|
|
23
|
-
)
|
|
24
|
-
)
|
|
25
|
-
)
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
override fun getCommandsMap(): Map<String, Int> {
|
|
29
|
-
return mapOf("setParams" to COMMAND_SET_PARAMS)
|
|
20
|
+
override fun createSmileView(): SmileIDDocumentCaptureView {
|
|
21
|
+
return SmileIDDocumentCaptureView(reactApplicationContext)
|
|
30
22
|
}
|
|
31
23
|
|
|
32
|
-
override fun
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
params?.let {
|
|
43
|
-
view.userId = params.getStringOrDefault("userId")
|
|
44
|
-
view.jobId = params.getStringOrDefault("jobId")
|
|
45
|
-
view.allowAgentMode = params.getBoolOrDefault("allowAgentMode", true)
|
|
46
|
-
view.showAttribution = params.getBoolOrDefault("showAttribution", true)
|
|
47
|
-
view.showInstructions = params.getBoolOrDefault("showInstructions", true)
|
|
48
|
-
view.showConfirmation = params.getBoolOrDefault("showConfirmation", true)
|
|
49
|
-
view.allowGalleryUpload = params.getBoolOrDefault("allowGalleryUpload", false)
|
|
50
|
-
view.front = params.getBoolOrDefault("isDocumentFrontSide", true)
|
|
51
|
-
view.renderContent()
|
|
52
|
-
}
|
|
53
|
-
}
|
|
24
|
+
override fun applyArgs(view: SmileIDDocumentCaptureView, args: ReadableMap?) {
|
|
25
|
+
args?.let {
|
|
26
|
+
view.userId = it.getStringOrDefault("userId")
|
|
27
|
+
view.jobId = it.getStringOrDefault("jobId")
|
|
28
|
+
view.allowAgentMode = it.getBoolOrDefault("allowAgentMode", true)
|
|
29
|
+
view.showAttribution = it.getBoolOrDefault("showAttribution", true)
|
|
30
|
+
view.showInstructions = it.getBoolOrDefault("showInstructions", true)
|
|
31
|
+
view.showConfirmation = it.getBoolOrDefault("showConfirmation", true)
|
|
32
|
+
view.allowGalleryUpload = it.getBoolOrDefault("allowGalleryUpload", false)
|
|
33
|
+
view.front = it.getBoolOrDefault("isDocumentFrontSide", true)
|
|
54
34
|
}
|
|
55
35
|
}
|
|
56
36
|
|
|
57
|
-
override fun createViewInstance(p0: ThemedReactContext): SmileIDDocumentCaptureView {
|
|
58
|
-
return SmileIDDocumentCaptureView(reactApplicationContext)
|
|
59
|
-
}
|
|
60
|
-
|
|
61
37
|
companion object {
|
|
62
38
|
const val NAME = "SmileIDDocumentCaptureView"
|
|
63
|
-
const val COMMAND_SET_PARAMS = 1
|
|
64
39
|
}
|
|
65
40
|
}
|