@smile_identity/react-native 10.3.2 → 11.0.0
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 +12 -8
- package/android/gradle.properties +1 -3
- package/android/src/main/java/com/smileidentity/react/Mapper.kt +35 -10
- package/android/src/main/java/com/smileidentity/react/SmileIdModule.kt +169 -93
- package/android/src/main/java/com/smileidentity/react/viewmanagers/SmileIDBiometricKYCViewManager.kt +8 -5
- package/android/src/main/java/com/smileidentity/react/viewmanagers/SmileIDEnhancedDocumentVerificationViewManager.kt +7 -4
- package/android/src/main/java/com/smileidentity/react/views/SmileIDDocumentCaptureView.kt +13 -11
- package/android/src/main/java/com/smileidentity/react/views/SmileIDSmartSelfieCaptureView.kt +149 -32
- package/ios/RNSmileID.swift +18 -10
- package/ios/SmileId.xcodeproj/xcuserdata/japhetndhlovu.xcuserdatad/xcschemes/SmileId.xcscheme +23 -0
- package/ios/SmileId.xcodeproj/xcuserdata/japhetndhlovu.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
- package/ios/Utils/SmileIDDictExt.swift +35 -11
- package/ios/View/SmileIDDocumentCaptureView.swift +1 -2
- package/ios/View/SmileIDSmartSelfieCaptureView.swift +38 -10
- package/ios/ViewManagers/SmileIDBiometricKYCViewManager.swift +6 -4
- package/ios/ViewManagers/SmileIDEnhancedDocumentVerificationViewManager.swift +6 -4
- package/ios/ViewManagers/SmileIDSmartSelfieCaptureViewManager.swift +1 -2
- package/ios/ViewModels/SmileIDProductModel.swift +6 -4
- package/lib/commonjs/index.js +6 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/types.js +28 -8
- package/lib/commonjs/types.js.map +1 -1
- package/lib/module/index.js +2 -2
- package/lib/module/index.js.map +1 -1
- package/lib/module/types.js +28 -8
- package/lib/module/types.js.map +1 -1
- package/lib/typescript/index.d.ts +2 -2
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +22 -4
- package/lib/typescript/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/react-native-smile-id.podspec +10 -5
- package/src/index.tsx +2 -0
- package/src/types.ts +41 -13
|
@@ -7,6 +7,8 @@ import androidx.compose.foundation.layout.consumeWindowInsets
|
|
|
7
7
|
import androidx.compose.foundation.layout.fillMaxSize
|
|
8
8
|
import androidx.compose.foundation.layout.statusBars
|
|
9
9
|
import androidx.compose.foundation.layout.windowInsetsPadding
|
|
10
|
+
import androidx.compose.material3.MaterialTheme
|
|
11
|
+
import androidx.compose.material3.Surface
|
|
10
12
|
import androidx.compose.runtime.Composable
|
|
11
13
|
import androidx.compose.runtime.CompositionLocalProvider
|
|
12
14
|
import androidx.compose.runtime.saveable.rememberSaveable
|
|
@@ -17,9 +19,12 @@ import androidx.lifecycle.viewmodel.compose.LocalViewModelStoreOwner
|
|
|
17
19
|
import com.facebook.react.bridge.ReactApplicationContext
|
|
18
20
|
import com.smileidentity.R
|
|
19
21
|
import com.smileidentity.SmileID
|
|
22
|
+
import com.smileidentity.compose.SmartSelfieEnrollmentEnhanced
|
|
20
23
|
import com.smileidentity.compose.document.DocumentCaptureScreen
|
|
21
24
|
import com.smileidentity.compose.document.DocumentCaptureSide
|
|
22
25
|
import com.smileidentity.compose.theme.colorScheme
|
|
26
|
+
import com.smileidentity.compose.theme.typography
|
|
27
|
+
import com.smileidentity.metadata.LocalMetadataProvider
|
|
23
28
|
import com.smileidentity.react.results.DocumentCaptureResult
|
|
24
29
|
import com.smileidentity.react.utils.DocumentCaptureResultAdapter
|
|
25
30
|
import com.smileidentity.util.randomJobId
|
|
@@ -36,16 +41,13 @@ class SmileIDDocumentCaptureView(context: ReactApplicationContext) : SmileIDView
|
|
|
36
41
|
composeView.apply {
|
|
37
42
|
val customViewModelStoreOwner = CustomViewModelStoreOwner()
|
|
38
43
|
setContent {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
.fillMaxSize()
|
|
47
|
-
) {
|
|
48
|
-
RenderDocumentCaptureScreen()
|
|
44
|
+
LocalMetadataProvider.MetadataProvider {
|
|
45
|
+
CompositionLocalProvider(LocalViewModelStoreOwner provides customViewModelStoreOwner) {
|
|
46
|
+
MaterialTheme(colorScheme = SmileID.colorScheme, typography = SmileID.typography) {
|
|
47
|
+
Surface(content = {
|
|
48
|
+
RenderDocumentCaptureScreen()
|
|
49
|
+
})
|
|
50
|
+
}
|
|
49
51
|
}
|
|
50
52
|
}
|
|
51
53
|
}
|
|
@@ -87,7 +89,7 @@ class SmileIDDocumentCaptureView(context: ReactApplicationContext) : SmileIDView
|
|
|
87
89
|
.build()
|
|
88
90
|
val result = DocumentCaptureResult(
|
|
89
91
|
documentFrontFile = if (front) file else null,
|
|
90
|
-
documentBackFile =
|
|
92
|
+
documentBackFile = if (!front) file else null,
|
|
91
93
|
)
|
|
92
94
|
val json = try {
|
|
93
95
|
newMoshi
|
package/android/src/main/java/com/smileidentity/react/views/SmileIDSmartSelfieCaptureView.kt
CHANGED
|
@@ -1,22 +1,45 @@
|
|
|
1
1
|
package com.smileidentity.react.views
|
|
2
2
|
|
|
3
|
+
import android.graphics.BitmapFactory
|
|
4
|
+
import androidx.compose.foundation.background
|
|
5
|
+
import androidx.compose.foundation.layout.Box
|
|
6
|
+
import androidx.compose.foundation.layout.WindowInsets
|
|
7
|
+
import androidx.compose.foundation.layout.consumeWindowInsets
|
|
8
|
+
import androidx.compose.foundation.layout.fillMaxSize
|
|
9
|
+
import androidx.compose.foundation.layout.statusBars
|
|
10
|
+
import androidx.compose.foundation.layout.windowInsetsPadding
|
|
3
11
|
import androidx.compose.material3.MaterialTheme
|
|
4
12
|
import androidx.compose.material3.Surface
|
|
13
|
+
import androidx.compose.runtime.Composable
|
|
5
14
|
import androidx.compose.runtime.CompositionLocalProvider
|
|
15
|
+
import androidx.compose.runtime.getValue
|
|
16
|
+
import androidx.compose.runtime.mutableStateOf
|
|
17
|
+
import androidx.compose.runtime.saveable.rememberSaveable
|
|
18
|
+
import androidx.compose.runtime.setValue
|
|
19
|
+
import androidx.compose.ui.Modifier
|
|
20
|
+
import androidx.compose.ui.graphics.Color
|
|
21
|
+
import androidx.compose.ui.graphics.asImageBitmap
|
|
22
|
+
import androidx.compose.ui.graphics.painter.BitmapPainter
|
|
23
|
+
import androidx.compose.ui.res.stringResource
|
|
24
|
+
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
|
6
25
|
import androidx.lifecycle.viewmodel.compose.LocalViewModelStoreOwner
|
|
26
|
+
import androidx.lifecycle.viewmodel.compose.viewModel
|
|
7
27
|
import com.facebook.react.bridge.ReactApplicationContext
|
|
28
|
+
import com.smileidentity.R
|
|
8
29
|
import com.smileidentity.SmileID
|
|
9
30
|
import com.smileidentity.SmileIDOptIn
|
|
10
|
-
import com.smileidentity.compose.SmartSelfieEnrollment
|
|
11
31
|
import com.smileidentity.compose.SmartSelfieEnrollmentEnhanced
|
|
32
|
+
import com.smileidentity.compose.components.ImageCaptureConfirmationDialog
|
|
33
|
+
import com.smileidentity.compose.selfie.SelfieCaptureScreen
|
|
34
|
+
import com.smileidentity.compose.selfie.SmartSelfieInstructionsScreen
|
|
12
35
|
import com.smileidentity.compose.theme.colorScheme
|
|
13
36
|
import com.smileidentity.compose.theme.typography
|
|
14
|
-
import com.smileidentity.
|
|
15
|
-
import com.smileidentity.react.utils.SelfieCaptureResultAdapter
|
|
16
|
-
import com.smileidentity.results.SmartSelfieResult
|
|
17
|
-
import com.smileidentity.results.SmileIDResult
|
|
37
|
+
import com.smileidentity.metadata.LocalMetadataProvider
|
|
18
38
|
import com.smileidentity.util.randomJobId
|
|
19
39
|
import com.smileidentity.util.randomUserId
|
|
40
|
+
import com.smileidentity.viewmodel.SelfieUiState
|
|
41
|
+
import com.smileidentity.viewmodel.SelfieViewModel
|
|
42
|
+
import com.smileidentity.viewmodel.viewModelFactory
|
|
20
43
|
|
|
21
44
|
|
|
22
45
|
@OptIn(SmileIDOptIn::class)
|
|
@@ -28,36 +51,130 @@ class SmileIDSmartSelfieCaptureView(context: ReactApplicationContext) : SmileIDS
|
|
|
28
51
|
composeView.apply {
|
|
29
52
|
val customViewModelStoreOwner = CustomViewModelStoreOwner()
|
|
30
53
|
setContent {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
showInstructions = showInstructions,
|
|
52
|
-
skipApiSubmission = true,
|
|
53
|
-
extraPartnerParams = extraPartnerParams,
|
|
54
|
-
onResult = { res -> handleResultCallback(res) },
|
|
55
|
-
)
|
|
56
|
-
}
|
|
57
|
-
})
|
|
54
|
+
LocalMetadataProvider.MetadataProvider {
|
|
55
|
+
CompositionLocalProvider(LocalViewModelStoreOwner provides customViewModelStoreOwner) {
|
|
56
|
+
val userId = randomUserId()
|
|
57
|
+
MaterialTheme(colorScheme = SmileID.colorScheme, typography = SmileID.typography) {
|
|
58
|
+
Surface(content = {
|
|
59
|
+
if (useStrictMode) {
|
|
60
|
+
SmileID.SmartSelfieEnrollmentEnhanced(
|
|
61
|
+
userId = userId,
|
|
62
|
+
showAttribution = showAttribution,
|
|
63
|
+
showInstructions = showInstructions,
|
|
64
|
+
skipApiSubmission = true,
|
|
65
|
+
extraPartnerParams = extraPartnerParams,
|
|
66
|
+
onResult = { res -> handleResultCallback(res) },
|
|
67
|
+
)
|
|
68
|
+
} else {
|
|
69
|
+
RenderSmartSelfieCaptureContent()
|
|
70
|
+
}
|
|
71
|
+
})
|
|
72
|
+
}
|
|
73
|
+
|
|
58
74
|
}
|
|
59
75
|
}
|
|
60
76
|
}
|
|
61
77
|
}
|
|
62
78
|
}
|
|
79
|
+
|
|
80
|
+
@Composable
|
|
81
|
+
private fun RenderSmartSelfieCaptureContent() {
|
|
82
|
+
val userId = randomUserId()
|
|
83
|
+
val jobId = randomJobId()
|
|
84
|
+
val viewModel: SelfieViewModel = viewModel(
|
|
85
|
+
factory = viewModelFactory {
|
|
86
|
+
SelfieViewModel(
|
|
87
|
+
isEnroll = false,
|
|
88
|
+
userId = userId,
|
|
89
|
+
jobId = jobId,
|
|
90
|
+
allowNewEnroll = false,
|
|
91
|
+
skipApiSubmission = true,
|
|
92
|
+
metadata = mutableListOf(),
|
|
93
|
+
)
|
|
94
|
+
},
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
val uiState = viewModel.uiState.collectAsStateWithLifecycle().value
|
|
98
|
+
var acknowledgedInstructions by rememberSaveable { mutableStateOf(false) }
|
|
99
|
+
|
|
100
|
+
when {
|
|
101
|
+
showInstructions && !acknowledgedInstructions -> SmartSelfieInstructionsScreen(
|
|
102
|
+
showAttribution = showAttribution,
|
|
103
|
+
) {
|
|
104
|
+
acknowledgedInstructions = true
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
uiState.processingState != null -> HandleProcessingState(viewModel)
|
|
108
|
+
uiState.selfieToConfirm != null -> HandleSelfieConfirmation(
|
|
109
|
+
showConfirmation,
|
|
110
|
+
uiState,
|
|
111
|
+
viewModel,
|
|
112
|
+
)
|
|
113
|
+
|
|
114
|
+
else -> RenderSelfieCaptureScreen(userId, jobId, allowAgentMode ?: true, viewModel)
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
@Composable
|
|
119
|
+
private fun RenderSelfieCaptureScreen(
|
|
120
|
+
userId: String,
|
|
121
|
+
jobId: String,
|
|
122
|
+
allowAgentMode: Boolean,
|
|
123
|
+
viewModel: SelfieViewModel,
|
|
124
|
+
) {
|
|
125
|
+
Box(
|
|
126
|
+
modifier = Modifier
|
|
127
|
+
.background(color = Color.White)
|
|
128
|
+
.windowInsetsPadding(WindowInsets.statusBars)
|
|
129
|
+
.consumeWindowInsets(WindowInsets.statusBars)
|
|
130
|
+
.fillMaxSize(),
|
|
131
|
+
) {
|
|
132
|
+
SelfieCaptureScreen(
|
|
133
|
+
userId = userId,
|
|
134
|
+
jobId = jobId,
|
|
135
|
+
allowAgentMode = allowAgentMode,
|
|
136
|
+
allowNewEnroll = false,
|
|
137
|
+
skipApiSubmission = true,
|
|
138
|
+
viewModel = viewModel,
|
|
139
|
+
)
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
@Composable
|
|
144
|
+
private fun HandleSelfieConfirmation(
|
|
145
|
+
showConfirmation: Boolean,
|
|
146
|
+
uiState: SelfieUiState,
|
|
147
|
+
viewModel: SelfieViewModel,
|
|
148
|
+
) {
|
|
149
|
+
if (showConfirmation) {
|
|
150
|
+
ImageCaptureConfirmationDialog(
|
|
151
|
+
titleText = stringResource(R.string.si_smart_selfie_confirmation_dialog_title),
|
|
152
|
+
subtitleText = stringResource(R.string.si_smart_selfie_confirmation_dialog_subtitle),
|
|
153
|
+
painter = BitmapPainter(
|
|
154
|
+
BitmapFactory
|
|
155
|
+
.decodeFile(uiState.selfieToConfirm!!.absolutePath)
|
|
156
|
+
.asImageBitmap()
|
|
157
|
+
),
|
|
158
|
+
confirmButtonText = stringResource(R.string.si_smart_selfie_confirmation_dialog_confirm_button),
|
|
159
|
+
onConfirm = {
|
|
160
|
+
viewModel.submitJob()
|
|
161
|
+
},
|
|
162
|
+
retakeButtonText = stringResource(R.string.si_smart_selfie_confirmation_dialog_retake_button),
|
|
163
|
+
onRetake = viewModel::onSelfieRejected,
|
|
164
|
+
scaleFactor = 1.25f,
|
|
165
|
+
)
|
|
166
|
+
} else {
|
|
167
|
+
// If confirmation is disabled, automatically confirm
|
|
168
|
+
viewModel.submitJob()
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
@Composable
|
|
173
|
+
private fun HandleProcessingState(viewModel: SelfieViewModel) {
|
|
174
|
+
try {
|
|
175
|
+
viewModel.onFinished { res -> handleResultCallback(res) }
|
|
176
|
+
} catch (e: Exception) {
|
|
177
|
+
emitFailure(e)
|
|
178
|
+
}
|
|
179
|
+
}
|
|
63
180
|
}
|
package/ios/RNSmileID.swift
CHANGED
|
@@ -11,6 +11,15 @@ class RNSmileID: NSObject {
|
|
|
11
11
|
resolve: @escaping RCTPromiseResolveBlock,
|
|
12
12
|
reject _: @escaping RCTPromiseRejectBlock
|
|
13
13
|
) {
|
|
14
|
+
// Set wrapper info for React Native SDK using compile-time constant
|
|
15
|
+
#if SMILE_ID_VERSION
|
|
16
|
+
let sdkVersion = SMILE_ID_VERSION
|
|
17
|
+
#else
|
|
18
|
+
let sdkVersion = "unknown" // Fallback version
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
SmileID.setWrapperInfo(name: .reactNative, version: sdkVersion)
|
|
22
|
+
|
|
14
23
|
// Handle different initialization scenarios based on provided parameters
|
|
15
24
|
if let apiKey = apiKey, let config = config {
|
|
16
25
|
// Initialize with API key and config
|
|
@@ -172,15 +181,14 @@ class RNSmileID: NSObject {
|
|
|
172
181
|
}
|
|
173
182
|
|
|
174
183
|
let consentInfo: ConsentInformation
|
|
175
|
-
if let consentInformation = request["consentInformation"] as? NSDictionary{
|
|
176
|
-
|
|
177
|
-
} else
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
)
|
|
184
|
+
if let consentInformation = request["consentInformation"] as? NSDictionary {
|
|
185
|
+
consentInfo = consentInformation.toConsentInfo()
|
|
186
|
+
} else {
|
|
187
|
+
consentInfo = ConsentInformation(consented: ConsentedInformation(consentGrantedDate: getCurrentIsoTimestamp(),
|
|
188
|
+
personalDetails: false,
|
|
189
|
+
contactInformation: false,
|
|
190
|
+
documentInformation: false)
|
|
191
|
+
)
|
|
184
192
|
}
|
|
185
193
|
|
|
186
194
|
let request = EnhancedKycRequest(
|
|
@@ -493,7 +501,7 @@ class RNSmileID: NSObject {
|
|
|
493
501
|
Task {
|
|
494
502
|
do {
|
|
495
503
|
let pollStream = try await apiCall(request, timeInterval, numAttemptsInt)
|
|
496
|
-
var result: JobStatusResponse<T>?
|
|
504
|
+
var result: JobStatusResponse<T>?
|
|
497
505
|
|
|
498
506
|
for try await res in pollStream {
|
|
499
507
|
result = res
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<Scheme
|
|
3
|
+
version = "1.3">
|
|
4
|
+
<BuildAction>
|
|
5
|
+
<BuildActionEntries>
|
|
6
|
+
<BuildActionEntry
|
|
7
|
+
buildForRunning = "YES">
|
|
8
|
+
<BuildableReference
|
|
9
|
+
BuildableIdentifier = "primary"
|
|
10
|
+
BlueprintIdentifier = "58B511DA1A9E6C8500147676"
|
|
11
|
+
BuildableName = "libSmileId.a"
|
|
12
|
+
BlueprintName = "SmileId"
|
|
13
|
+
ReferencedContainer = "container:SmileId.xcodeproj">
|
|
14
|
+
</BuildableReference>
|
|
15
|
+
</BuildActionEntry>
|
|
16
|
+
</BuildActionEntries>
|
|
17
|
+
</BuildAction>
|
|
18
|
+
<LaunchAction
|
|
19
|
+
useCustomWorkingDirectory = "NO"
|
|
20
|
+
buildConfiguration = "Debug"
|
|
21
|
+
allowLocationSimulation = "YES">
|
|
22
|
+
</LaunchAction>
|
|
23
|
+
</Scheme>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
+
<plist version="1.0">
|
|
4
|
+
<dict>
|
|
5
|
+
<key>SchemeUserState</key>
|
|
6
|
+
<dict>
|
|
7
|
+
<key>SmileId.xcscheme</key>
|
|
8
|
+
<dict>
|
|
9
|
+
<key>orderHint</key>
|
|
10
|
+
<integer>0</integer>
|
|
11
|
+
</dict>
|
|
12
|
+
</dict>
|
|
13
|
+
</dict>
|
|
14
|
+
</plist>
|
|
@@ -113,14 +113,36 @@ extension NSDictionary {
|
|
|
113
113
|
|
|
114
114
|
func toConsentInfo() -> ConsentInformation {
|
|
115
115
|
let consentGrantedDate = self["consentGrantedDate"] as? String ?? getCurrentIsoTimestamp()
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
let
|
|
116
|
+
|
|
117
|
+
// Try the new property names first, fall back to old property names if new ones aren't present
|
|
118
|
+
let personalDetailsConsentGranted: Bool
|
|
119
|
+
if let newValue = self["personalDetails"] as? Bool {
|
|
120
|
+
personalDetailsConsentGranted = newValue
|
|
121
|
+
} else {
|
|
122
|
+
personalDetailsConsentGranted = self["personalDetailsConsentGranted"] as? Bool ?? false
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
let contactInfoConsentGranted: Bool
|
|
126
|
+
if let newValue = self["contactInformation"] as? Bool {
|
|
127
|
+
contactInfoConsentGranted = newValue
|
|
128
|
+
} else {
|
|
129
|
+
contactInfoConsentGranted = self["contactInfoConsentGranted"] as? Bool ?? false
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
let documentInfoConsentGranted: Bool
|
|
133
|
+
if let newValue = self["documentInformation"] as? Bool {
|
|
134
|
+
documentInfoConsentGranted = newValue
|
|
135
|
+
} else {
|
|
136
|
+
documentInfoConsentGranted = self["documentInfoConsentGranted"] as? Bool ?? false
|
|
137
|
+
}
|
|
138
|
+
|
|
119
139
|
return ConsentInformation(
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
140
|
+
consented: ConsentedInformation(
|
|
141
|
+
consentGrantedDate: consentGrantedDate,
|
|
142
|
+
personalDetails: personalDetailsConsentGranted,
|
|
143
|
+
contactInformation: contactInfoConsentGranted,
|
|
144
|
+
documentInformation: documentInfoConsentGranted
|
|
145
|
+
)
|
|
124
146
|
)
|
|
125
147
|
}
|
|
126
148
|
|
|
@@ -148,10 +170,12 @@ extension NSDictionary {
|
|
|
148
170
|
consentInfo = consentInformation.toConsentInfo()
|
|
149
171
|
} else {
|
|
150
172
|
consentInfo = ConsentInformation(
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
173
|
+
consented: ConsentedInformation(
|
|
174
|
+
consentGrantedDate: getCurrentIsoTimestamp(),
|
|
175
|
+
personalDetails: false,
|
|
176
|
+
contactInformation: false,
|
|
177
|
+
documentInformation: false
|
|
178
|
+
)
|
|
155
179
|
)
|
|
156
180
|
}
|
|
157
181
|
|
|
@@ -12,7 +12,6 @@ struct DocumentCaptureResult {
|
|
|
12
12
|
|
|
13
13
|
struct SmileIDDocumentCaptureView: View {
|
|
14
14
|
@ObservedObject var product: SmileIDProductModel
|
|
15
|
-
@State private var localMetadata = LocalMetadata()
|
|
16
15
|
var smileIDUIViewDelegate: SmileIDUIViewDelegate
|
|
17
16
|
var body: some View {
|
|
18
17
|
NavigationView {
|
|
@@ -36,7 +35,7 @@ struct SmileIDDocumentCaptureView: View {
|
|
|
36
35
|
onError: onError,
|
|
37
36
|
onSkip: onSkip
|
|
38
37
|
)
|
|
39
|
-
}.navigationViewStyle(StackNavigationViewStyle())
|
|
38
|
+
}.navigationViewStyle(StackNavigationViewStyle())
|
|
40
39
|
}
|
|
41
40
|
|
|
42
41
|
func onConfirmed(data: Data) {
|
|
@@ -28,19 +28,47 @@ struct SmileIDSmartSelfieCaptureView: View, SmileIDFileUtilsProtocol {
|
|
|
28
28
|
delegate: self
|
|
29
29
|
)
|
|
30
30
|
} else {
|
|
31
|
-
|
|
32
|
-
userId: product.userId ?? generateUserId(),
|
|
33
|
-
jobId: product.jobId ?? generateJobId(),
|
|
34
|
-
allowAgentMode: product.allowAgentMode,
|
|
35
|
-
showAttribution: product.showAttribution,
|
|
36
|
-
showInstructions: product.showInstructions,
|
|
37
|
-
skipApiSubmission: true,
|
|
38
|
-
extraPartnerParams: product.extraPartnerParams,
|
|
39
|
-
delegate: self
|
|
40
|
-
)
|
|
31
|
+
legacySelfieCaptureScreen
|
|
41
32
|
}
|
|
42
33
|
}
|
|
43
34
|
}
|
|
35
|
+
|
|
36
|
+
private var legacySelfieCaptureScreen: some View {
|
|
37
|
+
ZStack {
|
|
38
|
+
if product.showInstructions, !acknowledgedInstructions {
|
|
39
|
+
SmartSelfieInstructionsScreen(
|
|
40
|
+
showAttribution: product.showAttribution) {
|
|
41
|
+
acknowledgedInstructions = true
|
|
42
|
+
}
|
|
43
|
+
} else if viewModel.processingState != nil {
|
|
44
|
+
Color.clear.onAppear {
|
|
45
|
+
self.viewModel.onFinished(callback: self)
|
|
46
|
+
}
|
|
47
|
+
} else if let selfieToConfirm = viewModel.selfieToConfirm {
|
|
48
|
+
if self.product.showConfirmation {
|
|
49
|
+
ImageCaptureConfirmationDialog(
|
|
50
|
+
title: SmileIDResourcesHelper.localizedString(for: "Confirmation.GoodSelfie"),
|
|
51
|
+
subtitle: SmileIDResourcesHelper.localizedString(for: "Confirmation.FaceClear"),
|
|
52
|
+
image: UIImage(data: selfieToConfirm)!,
|
|
53
|
+
confirmationButtonText: SmileIDResourcesHelper.localizedString(for: "Confirmation.YesUse"),
|
|
54
|
+
onConfirm: viewModel.submitJob,
|
|
55
|
+
retakeButtonText: SmileIDResourcesHelper.localizedString(for: "Confirmation.Retake"),
|
|
56
|
+
onRetake: viewModel.onSelfieRejected,
|
|
57
|
+
scaleFactor: 1.25
|
|
58
|
+
).preferredColorScheme(.light)
|
|
59
|
+
} else {
|
|
60
|
+
Color.clear.onAppear {
|
|
61
|
+
self.viewModel.submitJob()
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
} else {
|
|
65
|
+
SelfieCaptureScreen(
|
|
66
|
+
viewModel: viewModel,
|
|
67
|
+
allowAgentMode: self.product.allowAgentMode
|
|
68
|
+
).preferredColorScheme(.light)
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
44
72
|
}
|
|
45
73
|
|
|
46
74
|
extension SmileIDSmartSelfieCaptureView: SmartSelfieResultDelegate {
|
|
@@ -23,10 +23,12 @@ class SmileIDBiometricKYCViewManager: SmileIDBaseViewManager {
|
|
|
23
23
|
self.product.consentInformation = consentInformation.toConsentInfo()
|
|
24
24
|
} else {
|
|
25
25
|
self.product.consentInformation = ConsentInformation(
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
consented: ConsentedInformation(
|
|
27
|
+
consentGrantedDate: getCurrentIsoTimestamp(),
|
|
28
|
+
personalDetails: false,
|
|
29
|
+
contactInformation: false,
|
|
30
|
+
documentInformation: false
|
|
31
|
+
)
|
|
30
32
|
)
|
|
31
33
|
}
|
|
32
34
|
self.product.extraPartnerParams = params["extraPartnerParams"] as? [String: String] ?? [:]
|
|
@@ -33,10 +33,12 @@ class SmileIDEnhancedDocumentVerificationViewManager: SmileIDBaseViewManager {
|
|
|
33
33
|
self.product.consentInformation = consentInformation.toConsentInfo()
|
|
34
34
|
} else {
|
|
35
35
|
self.product.consentInformation = ConsentInformation(
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
consented: ConsentedInformation(
|
|
37
|
+
consentGrantedDate: getCurrentIsoTimestamp(),
|
|
38
|
+
personalDetails: false,
|
|
39
|
+
contactInformation: false,
|
|
40
|
+
documentInformation: false
|
|
41
|
+
)
|
|
40
42
|
)
|
|
41
43
|
}
|
|
42
44
|
|
|
@@ -13,8 +13,7 @@ class SmileIDSmartSelfieCaptureViewManager: SmileIDBaseViewManager {
|
|
|
13
13
|
jobId: product.jobId ?? generateJobId(),
|
|
14
14
|
allowNewEnroll: false,
|
|
15
15
|
skipApiSubmission: true,
|
|
16
|
-
extraPartnerParams: [:],
|
|
17
|
-
localMetadata: LocalMetadata()), product: product, smileIDUIViewDelegate: self
|
|
16
|
+
extraPartnerParams: [:]), product: product, smileIDUIViewDelegate: self
|
|
18
17
|
)),
|
|
19
18
|
product: product)
|
|
20
19
|
}
|
|
@@ -30,10 +30,12 @@ class SmileIDProductModel: ObservableObject {
|
|
|
30
30
|
@Published var useStrictMode: Bool = false
|
|
31
31
|
@Published var idInfo: IdInfo?
|
|
32
32
|
@Published var consentInformation: ConsentInformation = ConsentInformation(
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
consented: ConsentedInformation(
|
|
34
|
+
consentGrantedDate: getCurrentIsoTimestamp(),
|
|
35
|
+
personalDetails: false,
|
|
36
|
+
contactInformation: false,
|
|
37
|
+
documentInformation: false
|
|
38
|
+
)
|
|
37
39
|
)
|
|
38
40
|
@Published var bypassSelfieCaptureWithFilePath: URL?
|
|
39
41
|
@Published var onResult: RCTBubblingEventBlock?
|
package/lib/commonjs/index.js
CHANGED
|
@@ -15,6 +15,12 @@ Object.defineProperty(exports, "Config", {
|
|
|
15
15
|
return _types.Config;
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
|
+
Object.defineProperty(exports, "ConsentInformation", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () {
|
|
21
|
+
return _types.ConsentInformation;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
18
24
|
Object.defineProperty(exports, "EnhancedKycRequest", {
|
|
19
25
|
enumerable: true,
|
|
20
26
|
get: function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_SmileIDSmartSelfieEnrollmentView","_interopRequireDefault","_SmileIDSmartSelfieAuthenticationView","_SmileIDSmartSelfieEnrollmentEnhancedView","_SmileIDSmartSelfieAuthenticationEnhancedView","_SmileIDDocumentVerificationView","_SmileIDBiometricKYCView","_SmileIDEnhancedDocumentVerificationView","_SmileIDSmartSelfieCaptureView","_SmileIDDocumentCaptureView","_SmileIDConsentView","_types","e","__esModule","default","LINKING_ERROR","Platform","select","ios","isTurboModuleEnabled","global","__turboModuleProxy","SmileIdModule","NativeModules","RNSmileID","_SmileID","Proxy","get","Error","SmileID","exports","initialize","useSandBox","enableCrashReporting","config","apiKey","setAllowOfflineMode","allowOfflineMode","submitJob","jobId","getUnsubmittedJobs","getSubmittedJobs","cleanup","disableCrashReporting","OS","authenticate","request","prepUpload","upload","url","doEnhancedKyc","doEnhancedKycAsync","getSmartSelfieJobStatus","getDocumentVerificationJobStatus","getBiometricKycJobStatus","getEnhancedDocumentVerificationJobStatus","getProductsConfig","getValidDocuments","getServices","pollSmartSelfieJobStatus","interval","numAttempts","Number","isInteger","pollDocumentVerificationJobStatus","pollBiometricKycJobStatus","pollEnhancedDocumentVerificationJobStatus","setCallbackUrl","callbackUrl"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_SmileIDSmartSelfieEnrollmentView","_interopRequireDefault","_SmileIDSmartSelfieAuthenticationView","_SmileIDSmartSelfieEnrollmentEnhancedView","_SmileIDSmartSelfieAuthenticationEnhancedView","_SmileIDDocumentVerificationView","_SmileIDBiometricKYCView","_SmileIDEnhancedDocumentVerificationView","_SmileIDSmartSelfieCaptureView","_SmileIDDocumentCaptureView","_SmileIDConsentView","_types","e","__esModule","default","LINKING_ERROR","Platform","select","ios","isTurboModuleEnabled","global","__turboModuleProxy","SmileIdModule","NativeModules","RNSmileID","_SmileID","Proxy","get","Error","SmileID","exports","initialize","useSandBox","enableCrashReporting","config","apiKey","setAllowOfflineMode","allowOfflineMode","submitJob","jobId","getUnsubmittedJobs","getSubmittedJobs","cleanup","disableCrashReporting","OS","authenticate","request","prepUpload","upload","url","doEnhancedKyc","doEnhancedKycAsync","getSmartSelfieJobStatus","getDocumentVerificationJobStatus","getBiometricKycJobStatus","getEnhancedDocumentVerificationJobStatus","getProductsConfig","getValidDocuments","getServices","pollSmartSelfieJobStatus","interval","numAttempts","Number","isInteger","pollDocumentVerificationJobStatus","pollBiometricKycJobStatus","pollEnhancedDocumentVerificationJobStatus","setCallbackUrl","callbackUrl"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
|
package/lib/commonjs/types.js
CHANGED
|
@@ -119,27 +119,47 @@ class PrepUploadResponse {
|
|
|
119
119
|
*/
|
|
120
120
|
exports.PrepUploadResponse = PrepUploadResponse;
|
|
121
121
|
class ConsentInformation {
|
|
122
|
-
|
|
122
|
+
/**
|
|
123
123
|
* The date the user granted consent
|
|
124
124
|
*/
|
|
125
125
|
|
|
126
|
-
|
|
126
|
+
/**
|
|
127
127
|
* Whether the user has granted consent for personal details
|
|
128
128
|
*/
|
|
129
129
|
|
|
130
|
-
|
|
130
|
+
/**
|
|
131
131
|
* Whether the user has granted consent for contact information
|
|
132
132
|
*/
|
|
133
133
|
|
|
134
|
-
|
|
134
|
+
/**
|
|
135
135
|
* Whether the user has granted consent for document information
|
|
136
136
|
*/
|
|
137
137
|
|
|
138
|
-
constructor(consentGrantedDate,
|
|
138
|
+
constructor(consentGrantedDate, personalDetails, contactInformation, documentInformation) {
|
|
139
139
|
this.consentGrantedDate = consentGrantedDate;
|
|
140
|
-
this.
|
|
141
|
-
this.
|
|
142
|
-
this.
|
|
140
|
+
this.personalDetails = personalDetails;
|
|
141
|
+
this.contactInformation = contactInformation;
|
|
142
|
+
this.documentInformation = documentInformation;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// Alias properties for backward compatibility
|
|
146
|
+
get personalDetailsConsentGranted() {
|
|
147
|
+
return this.personalDetails;
|
|
148
|
+
}
|
|
149
|
+
set personalDetailsConsentGranted(value) {
|
|
150
|
+
this.personalDetails = value;
|
|
151
|
+
}
|
|
152
|
+
get contactInfoConsentGranted() {
|
|
153
|
+
return this.contactInformation;
|
|
154
|
+
}
|
|
155
|
+
set contactInfoConsentGranted(value) {
|
|
156
|
+
this.contactInformation = value;
|
|
157
|
+
}
|
|
158
|
+
get documentInfoConsentGranted() {
|
|
159
|
+
return this.documentInformation;
|
|
160
|
+
}
|
|
161
|
+
set documentInfoConsentGranted(value) {
|
|
162
|
+
this.documentInformation = value;
|
|
143
163
|
}
|
|
144
164
|
}
|
|
145
165
|
exports.ConsentInformation = ConsentInformation;
|