@kwik-id/sdk-react-native 0.0.0-stage → 0.1.0-alpha.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/LICENSE +22 -0
- package/README.md +81 -2
- package/app.plugin.js +40 -0
- package/lib/commonjs/api/api-client.js +213 -0
- package/lib/commonjs/api/api-client.js.map +1 -0
- package/lib/commonjs/api/api-error.js +29 -0
- package/lib/commonjs/api/api-error.js.map +1 -0
- package/lib/commonjs/api/index.js +33 -0
- package/lib/commonjs/api/index.js.map +1 -0
- package/lib/commonjs/api/upload.js +74 -0
- package/lib/commonjs/api/upload.js.map +1 -0
- package/lib/commonjs/camera/camera-view.js +227 -0
- package/lib/commonjs/camera/camera-view.js.map +1 -0
- package/lib/commonjs/camera/index.js +20 -0
- package/lib/commonjs/camera/index.js.map +1 -0
- package/lib/commonjs/camera/photo-capture.js +50 -0
- package/lib/commonjs/camera/photo-capture.js.map +1 -0
- package/lib/commonjs/crypto/fingerprint.js +43 -0
- package/lib/commonjs/crypto/fingerprint.js.map +1 -0
- package/lib/commonjs/crypto/hmac.js +150 -0
- package/lib/commonjs/crypto/hmac.js.map +1 -0
- package/lib/commonjs/crypto/index.js +39 -0
- package/lib/commonjs/crypto/index.js.map +1 -0
- package/lib/commonjs/crypto/session-manager.js +173 -0
- package/lib/commonjs/crypto/session-manager.js.map +1 -0
- package/lib/commonjs/i18n/en.js +297 -0
- package/lib/commonjs/i18n/en.js.map +1 -0
- package/lib/commonjs/i18n/fr.js +294 -0
- package/lib/commonjs/i18n/fr.js.map +1 -0
- package/lib/commonjs/i18n/index.js +34 -0
- package/lib/commonjs/i18n/index.js.map +1 -0
- package/lib/commonjs/i18n/locale.js +20 -0
- package/lib/commonjs/i18n/locale.js.map +1 -0
- package/lib/commonjs/i18n/translator.js +37 -0
- package/lib/commonjs/i18n/translator.js.map +1 -0
- package/lib/commonjs/index.js +187 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/lib/device-detector.js +34 -0
- package/lib/commonjs/lib/device-detector.js.map +1 -0
- package/lib/commonjs/lib/event-emitter.js +85 -0
- package/lib/commonjs/lib/event-emitter.js.map +1 -0
- package/lib/commonjs/lib/index.js +63 -0
- package/lib/commonjs/lib/index.js.map +1 -0
- package/lib/commonjs/lib/kwik-id-rn-sdk.js +156 -0
- package/lib/commonjs/lib/kwik-id-rn-sdk.js.map +1 -0
- package/lib/commonjs/lib/verification-machine.js +276 -0
- package/lib/commonjs/lib/verification-machine.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/types/events.js +6 -0
- package/lib/commonjs/types/events.js.map +1 -0
- package/lib/commonjs/types/index.js +2 -0
- package/lib/commonjs/types/index.js.map +1 -0
- package/lib/commonjs/ui/components/KwikIDVerificationModal.js +407 -0
- package/lib/commonjs/ui/components/KwikIDVerificationModal.js.map +1 -0
- package/lib/commonjs/ui/components/screens.js +338 -0
- package/lib/commonjs/ui/components/screens.js.map +1 -0
- package/lib/commonjs/ui/context/kwik-id-provider.js +52 -0
- package/lib/commonjs/ui/context/kwik-id-provider.js.map +1 -0
- package/lib/commonjs/ui/hooks/use-kwik-verification.js +77 -0
- package/lib/commonjs/ui/hooks/use-kwik-verification.js.map +1 -0
- package/lib/commonjs/ui/index.js +33 -0
- package/lib/commonjs/ui/index.js.map +1 -0
- package/lib/module/api/api-client.js +208 -0
- package/lib/module/api/api-client.js.map +1 -0
- package/lib/module/api/api-error.js +24 -0
- package/lib/module/api/api-error.js.map +1 -0
- package/lib/module/api/index.js +6 -0
- package/lib/module/api/index.js.map +1 -0
- package/lib/module/api/upload.js +68 -0
- package/lib/module/api/upload.js.map +1 -0
- package/lib/module/camera/camera-view.js +222 -0
- package/lib/module/camera/camera-view.js.map +1 -0
- package/lib/module/camera/index.js +5 -0
- package/lib/module/camera/index.js.map +1 -0
- package/lib/module/camera/photo-capture.js +45 -0
- package/lib/module/camera/photo-capture.js.map +1 -0
- package/lib/module/crypto/fingerprint.js +37 -0
- package/lib/module/crypto/fingerprint.js.map +1 -0
- package/lib/module/crypto/hmac.js +143 -0
- package/lib/module/crypto/hmac.js.map +1 -0
- package/lib/module/crypto/index.js +6 -0
- package/lib/module/crypto/index.js.map +1 -0
- package/lib/module/crypto/session-manager.js +169 -0
- package/lib/module/crypto/session-manager.js.map +1 -0
- package/lib/module/i18n/en.js +293 -0
- package/lib/module/i18n/en.js.map +1 -0
- package/lib/module/i18n/fr.js +290 -0
- package/lib/module/i18n/fr.js.map +1 -0
- package/lib/module/i18n/index.js +11 -0
- package/lib/module/i18n/index.js.map +1 -0
- package/lib/module/i18n/locale.js +15 -0
- package/lib/module/i18n/locale.js.map +1 -0
- package/lib/module/i18n/translator.js +34 -0
- package/lib/module/i18n/translator.js.map +1 -0
- package/lib/module/index.js +30 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/lib/device-detector.js +26 -0
- package/lib/module/lib/device-detector.js.map +1 -0
- package/lib/module/lib/event-emitter.js +80 -0
- package/lib/module/lib/event-emitter.js.map +1 -0
- package/lib/module/lib/index.js +6 -0
- package/lib/module/lib/index.js.map +1 -0
- package/lib/module/lib/kwik-id-rn-sdk.js +150 -0
- package/lib/module/lib/kwik-id-rn-sdk.js.map +1 -0
- package/lib/module/lib/verification-machine.js +268 -0
- package/lib/module/lib/verification-machine.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/types/events.js +4 -0
- package/lib/module/types/events.js.map +1 -0
- package/lib/module/types/index.js +2 -0
- package/lib/module/types/index.js.map +1 -0
- package/lib/module/ui/components/KwikIDVerificationModal.js +402 -0
- package/lib/module/ui/components/KwikIDVerificationModal.js.map +1 -0
- package/lib/module/ui/components/screens.js +328 -0
- package/lib/module/ui/components/screens.js.map +1 -0
- package/lib/module/ui/context/kwik-id-provider.js +46 -0
- package/lib/module/ui/context/kwik-id-provider.js.map +1 -0
- package/lib/module/ui/hooks/use-kwik-verification.js +72 -0
- package/lib/module/ui/hooks/use-kwik-verification.js.map +1 -0
- package/lib/module/ui/index.js +6 -0
- package/lib/module/ui/index.js.map +1 -0
- package/lib/typescript/commonjs/api/api-client.d.ts +82 -0
- package/lib/typescript/commonjs/api/api-client.d.ts.map +1 -0
- package/lib/typescript/commonjs/api/api-error.d.ts +13 -0
- package/lib/typescript/commonjs/api/api-error.d.ts.map +1 -0
- package/lib/typescript/commonjs/api/index.d.ts +6 -0
- package/lib/typescript/commonjs/api/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/api/upload.d.ts +19 -0
- package/lib/typescript/commonjs/api/upload.d.ts.map +1 -0
- package/lib/typescript/commonjs/camera/camera-view.d.ts +25 -0
- package/lib/typescript/commonjs/camera/camera-view.d.ts.map +1 -0
- package/lib/typescript/commonjs/camera/index.d.ts +5 -0
- package/lib/typescript/commonjs/camera/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/camera/photo-capture.d.ts +9 -0
- package/lib/typescript/commonjs/camera/photo-capture.d.ts.map +1 -0
- package/lib/typescript/commonjs/crypto/fingerprint.d.ts +3 -0
- package/lib/typescript/commonjs/crypto/fingerprint.d.ts.map +1 -0
- package/lib/typescript/commonjs/crypto/hmac.d.ts +18 -0
- package/lib/typescript/commonjs/crypto/hmac.d.ts.map +1 -0
- package/lib/typescript/commonjs/crypto/index.d.ts +4 -0
- package/lib/typescript/commonjs/crypto/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/crypto/session-manager.d.ts +27 -0
- package/lib/typescript/commonjs/crypto/session-manager.d.ts.map +1 -0
- package/lib/typescript/commonjs/i18n/en.d.ts +291 -0
- package/lib/typescript/commonjs/i18n/en.d.ts.map +1 -0
- package/lib/typescript/commonjs/i18n/fr.d.ts +6 -0
- package/lib/typescript/commonjs/i18n/fr.d.ts.map +1 -0
- package/lib/typescript/commonjs/i18n/index.d.ts +10 -0
- package/lib/typescript/commonjs/i18n/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/i18n/locale.d.ts +4 -0
- package/lib/typescript/commonjs/i18n/locale.d.ts.map +1 -0
- package/lib/typescript/commonjs/i18n/translator.d.ts +15 -0
- package/lib/typescript/commonjs/i18n/translator.d.ts.map +1 -0
- package/lib/typescript/commonjs/index.d.ts +24 -0
- package/lib/typescript/commonjs/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/lib/device-detector.d.ts +5 -0
- package/lib/typescript/commonjs/lib/device-detector.d.ts.map +1 -0
- package/lib/typescript/commonjs/lib/event-emitter.d.ts +19 -0
- package/lib/typescript/commonjs/lib/event-emitter.d.ts.map +1 -0
- package/lib/typescript/commonjs/lib/index.d.ts +5 -0
- package/lib/typescript/commonjs/lib/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/lib/kwik-id-rn-sdk.d.ts +43 -0
- package/lib/typescript/commonjs/lib/kwik-id-rn-sdk.d.ts.map +1 -0
- package/lib/typescript/commonjs/lib/verification-machine.d.ts +78 -0
- package/lib/typescript/commonjs/lib/verification-machine.d.ts.map +1 -0
- package/lib/typescript/commonjs/package.json +1 -0
- package/lib/typescript/commonjs/types/events.d.ts +94 -0
- package/lib/typescript/commonjs/types/events.d.ts.map +1 -0
- package/lib/typescript/commonjs/types/index.d.ts +242 -0
- package/lib/typescript/commonjs/types/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/components/KwikIDVerificationModal.d.ts +21 -0
- package/lib/typescript/commonjs/ui/components/KwikIDVerificationModal.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/components/screens.d.ts +46 -0
- package/lib/typescript/commonjs/ui/components/screens.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/context/kwik-id-provider.d.ts +19 -0
- package/lib/typescript/commonjs/ui/context/kwik-id-provider.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/hooks/use-kwik-verification.d.ts +29 -0
- package/lib/typescript/commonjs/ui/hooks/use-kwik-verification.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/index.d.ts +7 -0
- package/lib/typescript/commonjs/ui/index.d.ts.map +1 -0
- package/lib/typescript/module/api/api-client.d.ts +82 -0
- package/lib/typescript/module/api/api-client.d.ts.map +1 -0
- package/lib/typescript/module/api/api-error.d.ts +13 -0
- package/lib/typescript/module/api/api-error.d.ts.map +1 -0
- package/lib/typescript/module/api/index.d.ts +6 -0
- package/lib/typescript/module/api/index.d.ts.map +1 -0
- package/lib/typescript/module/api/upload.d.ts +19 -0
- package/lib/typescript/module/api/upload.d.ts.map +1 -0
- package/lib/typescript/module/camera/camera-view.d.ts +25 -0
- package/lib/typescript/module/camera/camera-view.d.ts.map +1 -0
- package/lib/typescript/module/camera/index.d.ts +5 -0
- package/lib/typescript/module/camera/index.d.ts.map +1 -0
- package/lib/typescript/module/camera/photo-capture.d.ts +9 -0
- package/lib/typescript/module/camera/photo-capture.d.ts.map +1 -0
- package/lib/typescript/module/crypto/fingerprint.d.ts +3 -0
- package/lib/typescript/module/crypto/fingerprint.d.ts.map +1 -0
- package/lib/typescript/module/crypto/hmac.d.ts +18 -0
- package/lib/typescript/module/crypto/hmac.d.ts.map +1 -0
- package/lib/typescript/module/crypto/index.d.ts +4 -0
- package/lib/typescript/module/crypto/index.d.ts.map +1 -0
- package/lib/typescript/module/crypto/session-manager.d.ts +27 -0
- package/lib/typescript/module/crypto/session-manager.d.ts.map +1 -0
- package/lib/typescript/module/i18n/en.d.ts +291 -0
- package/lib/typescript/module/i18n/en.d.ts.map +1 -0
- package/lib/typescript/module/i18n/fr.d.ts +6 -0
- package/lib/typescript/module/i18n/fr.d.ts.map +1 -0
- package/lib/typescript/module/i18n/index.d.ts +10 -0
- package/lib/typescript/module/i18n/index.d.ts.map +1 -0
- package/lib/typescript/module/i18n/locale.d.ts +4 -0
- package/lib/typescript/module/i18n/locale.d.ts.map +1 -0
- package/lib/typescript/module/i18n/translator.d.ts +15 -0
- package/lib/typescript/module/i18n/translator.d.ts.map +1 -0
- package/lib/typescript/module/index.d.ts +24 -0
- package/lib/typescript/module/index.d.ts.map +1 -0
- package/lib/typescript/module/lib/device-detector.d.ts +5 -0
- package/lib/typescript/module/lib/device-detector.d.ts.map +1 -0
- package/lib/typescript/module/lib/event-emitter.d.ts +19 -0
- package/lib/typescript/module/lib/event-emitter.d.ts.map +1 -0
- package/lib/typescript/module/lib/index.d.ts +5 -0
- package/lib/typescript/module/lib/index.d.ts.map +1 -0
- package/lib/typescript/module/lib/kwik-id-rn-sdk.d.ts +43 -0
- package/lib/typescript/module/lib/kwik-id-rn-sdk.d.ts.map +1 -0
- package/lib/typescript/module/lib/verification-machine.d.ts +78 -0
- package/lib/typescript/module/lib/verification-machine.d.ts.map +1 -0
- package/lib/typescript/module/package.json +1 -0
- package/lib/typescript/module/types/events.d.ts +94 -0
- package/lib/typescript/module/types/events.d.ts.map +1 -0
- package/lib/typescript/module/types/index.d.ts +242 -0
- package/lib/typescript/module/types/index.d.ts.map +1 -0
- package/lib/typescript/module/ui/components/KwikIDVerificationModal.d.ts +21 -0
- package/lib/typescript/module/ui/components/KwikIDVerificationModal.d.ts.map +1 -0
- package/lib/typescript/module/ui/components/screens.d.ts +46 -0
- package/lib/typescript/module/ui/components/screens.d.ts.map +1 -0
- package/lib/typescript/module/ui/context/kwik-id-provider.d.ts +19 -0
- package/lib/typescript/module/ui/context/kwik-id-provider.d.ts.map +1 -0
- package/lib/typescript/module/ui/hooks/use-kwik-verification.d.ts +29 -0
- package/lib/typescript/module/ui/hooks/use-kwik-verification.d.ts.map +1 -0
- package/lib/typescript/module/ui/index.d.ts +7 -0
- package/lib/typescript/module/ui/index.d.ts.map +1 -0
- package/package.json +121 -3
- package/src/api/api-client.ts +319 -0
- package/src/api/api-error.ts +28 -0
- package/src/api/index.ts +12 -0
- package/src/api/upload.ts +87 -0
- package/src/camera/camera-view.tsx +217 -0
- package/src/camera/index.ts +4 -0
- package/src/camera/photo-capture.ts +58 -0
- package/src/crypto/fingerprint.ts +46 -0
- package/src/crypto/hmac.ts +172 -0
- package/src/crypto/index.ts +3 -0
- package/src/crypto/session-manager.ts +200 -0
- package/src/i18n/en.ts +315 -0
- package/src/i18n/fr.ts +325 -0
- package/src/i18n/index.ts +9 -0
- package/src/i18n/locale.ts +15 -0
- package/src/i18n/translator.ts +37 -0
- package/src/index.ts +102 -0
- package/src/lib/device-detector.ts +32 -0
- package/src/lib/event-emitter.ts +90 -0
- package/src/lib/index.ts +15 -0
- package/src/lib/kwik-id-rn-sdk.ts +160 -0
- package/src/lib/verification-machine.ts +273 -0
- package/src/types/events.ts +75 -0
- package/src/types/index.ts +309 -0
- package/src/ui/components/KwikIDVerificationModal.tsx +450 -0
- package/src/ui/components/screens.tsx +283 -0
- package/src/ui/context/kwik-id-provider.tsx +72 -0
- package/src/ui/hooks/use-kwik-verification.ts +121 -0
- package/src/ui/index.ts +9 -0
|
@@ -0,0 +1,407 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.KwikIDVerificationModal = KwikIDVerificationModal;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _apiError = require("../../api/api-error.js");
|
|
10
|
+
var _cameraView = require("../../camera/camera-view.js");
|
|
11
|
+
var _photoCapture = require("../../camera/photo-capture.js");
|
|
12
|
+
var _index = require("../../i18n/index.js");
|
|
13
|
+
var _kwikIdRnSdk = require("../../lib/kwik-id-rn-sdk.js");
|
|
14
|
+
var _verificationMachine = require("../../lib/verification-machine.js");
|
|
15
|
+
var _screens = require("./screens.js");
|
|
16
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
17
|
+
/**
|
|
18
|
+
* KwikIDVerificationModal — the full Phase 1 verification flow.
|
|
19
|
+
*
|
|
20
|
+
* Owns a KwikIdRNSDK, drives the verification-machine reducer, renders the step
|
|
21
|
+
* screens + camera capture, runs upload/submit on the processing step, and reports
|
|
22
|
+
* a terminal VerificationOutcome via onComplete.
|
|
23
|
+
*
|
|
24
|
+
* Phase 1 = capture-only (manual selfie, no on-device liveness). The `liveness`
|
|
25
|
+
* step is a plain front-camera capture; Phase 2 replaces it with align + challenges.
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
const DEFAULT_DOCS = ["passport", "id_card", "drivers_license"];
|
|
29
|
+
|
|
30
|
+
// Phase 1 has no handoff, so the reducer's options arg is unused — adapt to useReducer's 2-arg shape.
|
|
31
|
+
const machineReducer = (state, event) => (0, _verificationMachine.reducer)(state, event);
|
|
32
|
+
function resolveTheme(theme) {
|
|
33
|
+
return {
|
|
34
|
+
primary: theme?.primary ?? "#1E3A8A",
|
|
35
|
+
background: theme?.background ?? "#ffffff",
|
|
36
|
+
foreground: theme?.foreground ?? "#111111"
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function KwikIDVerificationModal(props) {
|
|
40
|
+
const {
|
|
41
|
+
visible,
|
|
42
|
+
clientSecret,
|
|
43
|
+
baseUrl,
|
|
44
|
+
appName,
|
|
45
|
+
documentTypes,
|
|
46
|
+
skipRuntimeCheck
|
|
47
|
+
} = props;
|
|
48
|
+
const theme = (0, _react.useMemo)(() => resolveTheme(props.theme), [props.theme]);
|
|
49
|
+
const t = (0, _react.useMemo)(() => (0, _index.createTranslator)(props.locale ?? (0, _index.getDeviceLocale)()), [props.locale]);
|
|
50
|
+
const sdk = (0, _react.useMemo)(() => new _kwikIdRnSdk.KwikIdRNSDK({
|
|
51
|
+
clientSecret,
|
|
52
|
+
baseUrl,
|
|
53
|
+
appName,
|
|
54
|
+
skipRuntimeCheck
|
|
55
|
+
}), [clientSecret, baseUrl, appName, skipRuntimeCheck]);
|
|
56
|
+
const [state, dispatch] = (0, _react.useReducer)(machineReducer, undefined, _verificationMachine.initialState);
|
|
57
|
+
const [sessionInfo, setSessionInfo] = (0, _react.useState)(null);
|
|
58
|
+
const [initializing, setInitializing] = (0, _react.useState)(false);
|
|
59
|
+
const startedRef = (0, _react.useRef)(false);
|
|
60
|
+
const submittingRef = (0, _react.useRef)(false);
|
|
61
|
+
const {
|
|
62
|
+
step,
|
|
63
|
+
context
|
|
64
|
+
} = state;
|
|
65
|
+
|
|
66
|
+
// Initialize the SDK when the modal opens.
|
|
67
|
+
(0, _react.useEffect)(() => {
|
|
68
|
+
if (!visible || startedRef.current) return;
|
|
69
|
+
startedRef.current = true;
|
|
70
|
+
setInitializing(true);
|
|
71
|
+
sdk.initialize().then(info => setSessionInfo(info)).catch(error => {
|
|
72
|
+
dispatch({
|
|
73
|
+
t: "FAILED",
|
|
74
|
+
error: describeError(error, t)
|
|
75
|
+
});
|
|
76
|
+
}).finally(() => setInitializing(false));
|
|
77
|
+
}, [visible, sdk]);
|
|
78
|
+
|
|
79
|
+
// Reset internal state when the modal closes, so the next open starts a fresh run
|
|
80
|
+
// (the useKwikVerification host keeps this component mounted between runs).
|
|
81
|
+
(0, _react.useEffect)(() => {
|
|
82
|
+
if (!visible) {
|
|
83
|
+
startedRef.current = false;
|
|
84
|
+
submittingRef.current = false;
|
|
85
|
+
dispatch({
|
|
86
|
+
t: "RESET"
|
|
87
|
+
});
|
|
88
|
+
setSessionInfo(null);
|
|
89
|
+
}
|
|
90
|
+
}, [visible]);
|
|
91
|
+
const allowedDocs = (0, _react.useMemo)(() => {
|
|
92
|
+
const fromSession = sessionInfo?.config.documentTypes?.length ? sessionInfo.config.documentTypes : DEFAULT_DOCS;
|
|
93
|
+
return documentTypes?.length ? fromSession.filter(d => documentTypes.includes(d)) : fromSession;
|
|
94
|
+
}, [sessionInfo, documentTypes]);
|
|
95
|
+
|
|
96
|
+
// Upload + submit when entering the processing step.
|
|
97
|
+
(0, _react.useEffect)(() => {
|
|
98
|
+
if (step !== "processing" || submittingRef.current) return;
|
|
99
|
+
submittingRef.current = true;
|
|
100
|
+
(async () => {
|
|
101
|
+
try {
|
|
102
|
+
const upload = async (type, asset) => {
|
|
103
|
+
if (!asset) return;
|
|
104
|
+
dispatch({
|
|
105
|
+
t: "PROGRESS",
|
|
106
|
+
stage: type === "document_front" ? "document_front" : type === "document_back" ? "document_back" : "selfie",
|
|
107
|
+
value: 0
|
|
108
|
+
});
|
|
109
|
+
await sdk.uploadCapture(type, asset, p => dispatch({
|
|
110
|
+
t: "PROGRESS",
|
|
111
|
+
stage: type === "document_front" ? "document_front" : type === "document_back" ? "document_back" : "selfie",
|
|
112
|
+
value: p
|
|
113
|
+
}));
|
|
114
|
+
};
|
|
115
|
+
await upload("document_front", context.front);
|
|
116
|
+
await upload("document_back", context.back);
|
|
117
|
+
await upload("selfie", context.selfie);
|
|
118
|
+
dispatch({
|
|
119
|
+
t: "PROGRESS",
|
|
120
|
+
stage: "submitting",
|
|
121
|
+
value: 80
|
|
122
|
+
});
|
|
123
|
+
const {
|
|
124
|
+
jobId
|
|
125
|
+
} = await sdk.submit(context.documentType, {
|
|
126
|
+
liveness: context.livenessResult
|
|
127
|
+
});
|
|
128
|
+
props.onSubmitted?.({
|
|
129
|
+
jobId
|
|
130
|
+
});
|
|
131
|
+
dispatch({
|
|
132
|
+
t: "SUBMITTED",
|
|
133
|
+
jobId
|
|
134
|
+
});
|
|
135
|
+
} catch (error) {
|
|
136
|
+
dispatch({
|
|
137
|
+
t: "FAILED",
|
|
138
|
+
error: describeError(error, t)
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
})();
|
|
142
|
+
}, [step]);
|
|
143
|
+
|
|
144
|
+
// Report the terminal outcome (after the user taps Done on the result screen).
|
|
145
|
+
const finish = (0, _react.useCallback)(() => {
|
|
146
|
+
const outcome = context.outcome ?? {
|
|
147
|
+
status: "cancelled"
|
|
148
|
+
};
|
|
149
|
+
sdk.destroy();
|
|
150
|
+
props.onComplete(outcome);
|
|
151
|
+
}, [context.outcome, sdk, props]);
|
|
152
|
+
const handleClose = (0, _react.useCallback)(() => {
|
|
153
|
+
if (step === "processing") return; // don't allow closing mid-submit
|
|
154
|
+
sdk.destroy();
|
|
155
|
+
props.onClose?.();
|
|
156
|
+
props.onComplete({
|
|
157
|
+
status: "cancelled"
|
|
158
|
+
});
|
|
159
|
+
}, [step, sdk, props]);
|
|
160
|
+
const onCaptured = (0, _react.useCallback)(async (type, raw) => {
|
|
161
|
+
// Errors propagate to CameraView, which shows them and lets the user retry.
|
|
162
|
+
const asset = await (0, _photoCapture.compressCapture)(type, raw, Date.now());
|
|
163
|
+
if (type === "document_front") dispatch({
|
|
164
|
+
t: "CAPTURED",
|
|
165
|
+
slot: "front",
|
|
166
|
+
asset
|
|
167
|
+
});else if (type === "document_back") dispatch({
|
|
168
|
+
t: "CAPTURED",
|
|
169
|
+
slot: "back",
|
|
170
|
+
asset
|
|
171
|
+
});
|
|
172
|
+
// No on-device liveness yet (Phase 2), so no liveness result is claimed.
|
|
173
|
+
else dispatch({
|
|
174
|
+
t: "LIVENESS_DONE",
|
|
175
|
+
selfie: asset
|
|
176
|
+
});
|
|
177
|
+
}, []);
|
|
178
|
+
const canGoBack = !["intro", "processing", "result", "liveness"].includes(step) && step !== "document-type";
|
|
179
|
+
const showProgress = !["intro", "processing", "result"].includes(step);
|
|
180
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Modal, {
|
|
181
|
+
visible: visible,
|
|
182
|
+
animationType: "slide",
|
|
183
|
+
onRequestClose: handleClose,
|
|
184
|
+
statusBarTranslucent: true,
|
|
185
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
186
|
+
style: [styles.container, {
|
|
187
|
+
backgroundColor: theme.background
|
|
188
|
+
}],
|
|
189
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
190
|
+
style: styles.header,
|
|
191
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
|
|
192
|
+
style: styles.headerBtn,
|
|
193
|
+
onPress: canGoBack ? () => dispatch({
|
|
194
|
+
t: "BACK"
|
|
195
|
+
}) : undefined,
|
|
196
|
+
hitSlop: 8,
|
|
197
|
+
children: canGoBack ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
198
|
+
style: [styles.headerIcon, {
|
|
199
|
+
color: theme.foreground
|
|
200
|
+
}],
|
|
201
|
+
children: "\u2039"
|
|
202
|
+
}) : null
|
|
203
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
204
|
+
style: [styles.headerTitle, {
|
|
205
|
+
color: theme.foreground
|
|
206
|
+
}],
|
|
207
|
+
numberOfLines: 1,
|
|
208
|
+
children: appName ?? sessionInfo?.orgName ?? t("common.identityVerification")
|
|
209
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
|
|
210
|
+
style: styles.headerBtn,
|
|
211
|
+
onPress: step === "processing" ? undefined : handleClose,
|
|
212
|
+
hitSlop: 8,
|
|
213
|
+
children: step !== "processing" ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
214
|
+
style: [styles.headerIcon, {
|
|
215
|
+
color: theme.foreground
|
|
216
|
+
}],
|
|
217
|
+
children: "\u2715"
|
|
218
|
+
}) : null
|
|
219
|
+
})]
|
|
220
|
+
}), showProgress ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
221
|
+
style: styles.progressTrack,
|
|
222
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
223
|
+
style: [styles.progressFill, {
|
|
224
|
+
width: `${(0, _verificationMachine.getStepProgress)(state)}%`,
|
|
225
|
+
backgroundColor: theme.primary
|
|
226
|
+
}]
|
|
227
|
+
})
|
|
228
|
+
}) : null, /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
229
|
+
style: styles.body,
|
|
230
|
+
children: [initializing && step === "intro" ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
231
|
+
style: styles.center,
|
|
232
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
|
|
233
|
+
size: "large",
|
|
234
|
+
color: theme.primary
|
|
235
|
+
})
|
|
236
|
+
}) : null, step === "intro" && !initializing && /*#__PURE__*/(0, _jsxRuntime.jsx)(_screens.IntroScreen, {
|
|
237
|
+
orgName: sessionInfo?.orgName,
|
|
238
|
+
onNext: () => dispatch({
|
|
239
|
+
t: "NEXT"
|
|
240
|
+
}),
|
|
241
|
+
theme: theme,
|
|
242
|
+
t: t
|
|
243
|
+
}), step === "document-type" && /*#__PURE__*/(0, _jsxRuntime.jsx)(_screens.DocumentTypeScreen, {
|
|
244
|
+
allowed: allowedDocs,
|
|
245
|
+
onSelect: doc => dispatch({
|
|
246
|
+
t: "SELECT_DOC",
|
|
247
|
+
doc
|
|
248
|
+
}),
|
|
249
|
+
theme: theme,
|
|
250
|
+
t: t
|
|
251
|
+
}), step === "prepare-front" && /*#__PURE__*/(0, _jsxRuntime.jsx)(_screens.PrepareScreen, {
|
|
252
|
+
kind: "front",
|
|
253
|
+
onNext: () => dispatch({
|
|
254
|
+
t: "NEXT"
|
|
255
|
+
}),
|
|
256
|
+
theme: theme,
|
|
257
|
+
t: t
|
|
258
|
+
}), step === "prepare-back" && /*#__PURE__*/(0, _jsxRuntime.jsx)(_screens.PrepareScreen, {
|
|
259
|
+
kind: "back",
|
|
260
|
+
onNext: () => dispatch({
|
|
261
|
+
t: "NEXT"
|
|
262
|
+
}),
|
|
263
|
+
theme: theme,
|
|
264
|
+
t: t
|
|
265
|
+
}), step === "prepare-selfie" && /*#__PURE__*/(0, _jsxRuntime.jsx)(_screens.PrepareScreen, {
|
|
266
|
+
kind: "selfie",
|
|
267
|
+
onNext: () => dispatch({
|
|
268
|
+
t: "NEXT"
|
|
269
|
+
}),
|
|
270
|
+
theme: theme,
|
|
271
|
+
t: t
|
|
272
|
+
}), step === "camera-front" && /*#__PURE__*/(0, _jsxRuntime.jsx)(_cameraView.CameraView, {
|
|
273
|
+
facing: "back",
|
|
274
|
+
active: visible,
|
|
275
|
+
primaryColor: theme.primary,
|
|
276
|
+
captureErrorText: t("camera.captureFailedMobile"),
|
|
277
|
+
permissionTitle: t("camera.permissionTitleMobile"),
|
|
278
|
+
permissionBody: t("camera.permissionBodyMobile"),
|
|
279
|
+
openSettingsLabel: t("camera.openSettingsMobile"),
|
|
280
|
+
captureLabel: t("common.capturePhoto"),
|
|
281
|
+
instruction: t("camera.instructionFrontMobile"),
|
|
282
|
+
onCapture: raw => onCaptured("document_front", raw)
|
|
283
|
+
}), step === "camera-back" && /*#__PURE__*/(0, _jsxRuntime.jsx)(_cameraView.CameraView, {
|
|
284
|
+
facing: "back",
|
|
285
|
+
active: visible,
|
|
286
|
+
primaryColor: theme.primary,
|
|
287
|
+
captureErrorText: t("camera.captureFailedMobile"),
|
|
288
|
+
permissionTitle: t("camera.permissionTitleMobile"),
|
|
289
|
+
permissionBody: t("camera.permissionBodyMobile"),
|
|
290
|
+
openSettingsLabel: t("camera.openSettingsMobile"),
|
|
291
|
+
captureLabel: t("common.capturePhoto"),
|
|
292
|
+
instruction: t("camera.instructionBackMobile"),
|
|
293
|
+
onCapture: raw => onCaptured("document_back", raw)
|
|
294
|
+
}), step === "liveness" && /*#__PURE__*/(0, _jsxRuntime.jsx)(_cameraView.CameraView, {
|
|
295
|
+
facing: "front",
|
|
296
|
+
active: visible,
|
|
297
|
+
primaryColor: theme.primary,
|
|
298
|
+
captureErrorText: t("camera.captureFailedMobile"),
|
|
299
|
+
permissionTitle: t("camera.permissionTitleMobile"),
|
|
300
|
+
permissionBody: t("camera.permissionBodyMobile"),
|
|
301
|
+
openSettingsLabel: t("camera.openSettingsMobile"),
|
|
302
|
+
captureLabel: t("common.capturePhoto"),
|
|
303
|
+
instruction: t("camera.instructionSelfieMobile"),
|
|
304
|
+
onCapture: raw => onCaptured("selfie", raw)
|
|
305
|
+
}), step === "confirm-front" && context.front && /*#__PURE__*/(0, _jsxRuntime.jsx)(_screens.ConfirmScreen, {
|
|
306
|
+
asset: context.front,
|
|
307
|
+
onConfirm: () => dispatch({
|
|
308
|
+
t: "NEXT"
|
|
309
|
+
}),
|
|
310
|
+
onRetake: () => dispatch({
|
|
311
|
+
t: "RETAKE",
|
|
312
|
+
slot: "front"
|
|
313
|
+
}),
|
|
314
|
+
theme: theme,
|
|
315
|
+
t: t
|
|
316
|
+
}), step === "confirm-back" && context.back && /*#__PURE__*/(0, _jsxRuntime.jsx)(_screens.ConfirmScreen, {
|
|
317
|
+
asset: context.back,
|
|
318
|
+
onConfirm: () => dispatch({
|
|
319
|
+
t: "NEXT"
|
|
320
|
+
}),
|
|
321
|
+
onRetake: () => dispatch({
|
|
322
|
+
t: "RETAKE",
|
|
323
|
+
slot: "back"
|
|
324
|
+
}),
|
|
325
|
+
theme: theme,
|
|
326
|
+
t: t
|
|
327
|
+
}), step === "confirm-selfie" && context.selfie && /*#__PURE__*/(0, _jsxRuntime.jsx)(_screens.ConfirmScreen, {
|
|
328
|
+
asset: context.selfie,
|
|
329
|
+
onConfirm: () => dispatch({
|
|
330
|
+
t: "NEXT"
|
|
331
|
+
}),
|
|
332
|
+
onRetake: () => dispatch({
|
|
333
|
+
t: "RETAKE",
|
|
334
|
+
slot: "selfie"
|
|
335
|
+
}),
|
|
336
|
+
theme: theme,
|
|
337
|
+
t: t
|
|
338
|
+
}), step === "processing" && /*#__PURE__*/(0, _jsxRuntime.jsx)(_screens.ProcessingScreen, {
|
|
339
|
+
progress: context.uploadProgress,
|
|
340
|
+
stage: context.uploadStage,
|
|
341
|
+
theme: theme,
|
|
342
|
+
t: t
|
|
343
|
+
}), step === "result" && /*#__PURE__*/(0, _jsxRuntime.jsx)(_screens.ResultScreen, {
|
|
344
|
+
success: context.outcome?.status === "submitted",
|
|
345
|
+
message: context.outcome?.status === "submitted" ? t("result.submittedMessageMobile") : context.error ?? t("result.couldNotComplete"),
|
|
346
|
+
onDone: finish,
|
|
347
|
+
theme: theme,
|
|
348
|
+
t: t
|
|
349
|
+
})]
|
|
350
|
+
})]
|
|
351
|
+
})
|
|
352
|
+
});
|
|
353
|
+
}
|
|
354
|
+
function describeError(error, t) {
|
|
355
|
+
if (error instanceof _apiError.ApiError && error.isAuthError()) {
|
|
356
|
+
return t("errors.sessionExpiredShort");
|
|
357
|
+
}
|
|
358
|
+
return error instanceof Error ? error.message : t("errors.unexpected");
|
|
359
|
+
}
|
|
360
|
+
const styles = _reactNative.StyleSheet.create({
|
|
361
|
+
container: {
|
|
362
|
+
flex: 1
|
|
363
|
+
},
|
|
364
|
+
header: {
|
|
365
|
+
flexDirection: "row",
|
|
366
|
+
alignItems: "center",
|
|
367
|
+
justifyContent: "space-between",
|
|
368
|
+
paddingHorizontal: 12,
|
|
369
|
+
paddingTop: 52,
|
|
370
|
+
paddingBottom: 8
|
|
371
|
+
},
|
|
372
|
+
headerBtn: {
|
|
373
|
+
width: 40,
|
|
374
|
+
height: 40,
|
|
375
|
+
alignItems: "center",
|
|
376
|
+
justifyContent: "center"
|
|
377
|
+
},
|
|
378
|
+
headerIcon: {
|
|
379
|
+
fontSize: 24,
|
|
380
|
+
fontWeight: "500"
|
|
381
|
+
},
|
|
382
|
+
headerTitle: {
|
|
383
|
+
flex: 1,
|
|
384
|
+
textAlign: "center",
|
|
385
|
+
fontSize: 16,
|
|
386
|
+
fontWeight: "600"
|
|
387
|
+
},
|
|
388
|
+
progressTrack: {
|
|
389
|
+
height: 3,
|
|
390
|
+
backgroundColor: "#e5e7eb",
|
|
391
|
+
marginHorizontal: 12,
|
|
392
|
+
borderRadius: 2,
|
|
393
|
+
overflow: "hidden"
|
|
394
|
+
},
|
|
395
|
+
progressFill: {
|
|
396
|
+
height: 3
|
|
397
|
+
},
|
|
398
|
+
body: {
|
|
399
|
+
flex: 1
|
|
400
|
+
},
|
|
401
|
+
center: {
|
|
402
|
+
flex: 1,
|
|
403
|
+
alignItems: "center",
|
|
404
|
+
justifyContent: "center"
|
|
405
|
+
}
|
|
406
|
+
});
|
|
407
|
+
//# sourceMappingURL=KwikIDVerificationModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNative","_apiError","_cameraView","_photoCapture","_index","_kwikIdRnSdk","_verificationMachine","_screens","_jsxRuntime","DEFAULT_DOCS","machineReducer","state","event","reducer","resolveTheme","theme","primary","background","foreground","KwikIDVerificationModal","props","visible","clientSecret","baseUrl","appName","documentTypes","skipRuntimeCheck","useMemo","t","createTranslator","locale","getDeviceLocale","sdk","KwikIdRNSDK","dispatch","useReducer","undefined","initialState","sessionInfo","setSessionInfo","useState","initializing","setInitializing","startedRef","useRef","submittingRef","step","context","useEffect","current","initialize","then","info","catch","error","describeError","finally","allowedDocs","fromSession","config","length","filter","d","includes","upload","type","asset","stage","value","uploadCapture","p","front","back","selfie","jobId","submit","documentType","liveness","livenessResult","onSubmitted","finish","useCallback","outcome","status","destroy","onComplete","handleClose","onClose","onCaptured","raw","compressCapture","Date","now","slot","canGoBack","showProgress","jsx","Modal","animationType","onRequestClose","statusBarTranslucent","children","jsxs","View","style","styles","container","backgroundColor","header","Pressable","headerBtn","onPress","hitSlop","Text","headerIcon","color","headerTitle","numberOfLines","orgName","progressTrack","progressFill","width","getStepProgress","body","center","ActivityIndicator","size","IntroScreen","onNext","DocumentTypeScreen","allowed","onSelect","doc","PrepareScreen","kind","CameraView","facing","active","primaryColor","captureErrorText","permissionTitle","permissionBody","openSettingsLabel","captureLabel","instruction","onCapture","ConfirmScreen","onConfirm","onRetake","ProcessingScreen","progress","uploadProgress","uploadStage","ResultScreen","success","message","onDone","ApiError","isAuthError","Error","StyleSheet","create","flex","flexDirection","alignItems","justifyContent","paddingHorizontal","paddingTop","paddingBottom","height","fontSize","fontWeight","textAlign","marginHorizontal","borderRadius","overflow"],"sourceRoot":"../../../../src","sources":["ui/components/KwikIDVerificationModal.tsx"],"mappings":"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","ignoreList":[]}
|