react-native-persona 2.29.0 → 2.30.1
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/RNPersonaInquiry2.podspec +1 -1
- package/android/build.gradle +1 -1
- package/ios/PersonaInquiryBridge.m +1 -0
- package/ios/PersonaInquiryViewManager.swift +48 -3
- package/lib/commonjs/InquiryEvent.js +2 -2
- package/lib/commonjs/InquiryEvent.js.map +1 -1
- package/lib/commonjs/PersonaInquiryView.js +4 -0
- package/lib/commonjs/PersonaInquiryView.js.map +1 -1
- package/lib/commonjs/util.js +10 -0
- package/lib/commonjs/util.js.map +1 -1
- package/lib/module/InquiryEvent.js +2 -2
- package/lib/module/InquiryEvent.js.map +1 -1
- package/lib/module/PersonaInquiryView.js +5 -1
- package/lib/module/PersonaInquiryView.js.map +1 -1
- package/lib/module/util.js +9 -0
- package/lib/module/util.js.map +1 -1
- package/lib/typescript/PersonaInquiryView.d.ts +1 -0
- package/lib/typescript/util.d.ts +4 -1
- package/package.json +1 -1
- package/src/InquiryEvent.ts +4 -0
- package/src/PersonaInquiryView.tsx +10 -0
- package/src/util.ts +14 -0
package/android/build.gradle
CHANGED
|
@@ -65,6 +65,6 @@ dependencies {
|
|
|
65
65
|
implementation("com.facebook.react:react-android:+")
|
|
66
66
|
|
|
67
67
|
// NB: be sure to bump `nfc-impl` in example/android/app/build.gradle as well
|
|
68
|
-
implementation 'com.withpersona.sdk2:inquiry:2.30.
|
|
68
|
+
implementation 'com.withpersona.sdk2:inquiry:2.30.4'
|
|
69
69
|
implementation("androidx.fragment:fragment:1.8.6")
|
|
70
70
|
}
|
|
@@ -14,6 +14,7 @@ RCT_EXPORT_VIEW_PROPERTY(inquiry, NSDictionary)
|
|
|
14
14
|
RCT_EXPORT_VIEW_PROPERTY(onComplete, RCTDirectEventBlock)
|
|
15
15
|
RCT_EXPORT_VIEW_PROPERTY(onCanceled, RCTDirectEventBlock)
|
|
16
16
|
RCT_EXPORT_VIEW_PROPERTY(onError, RCTDirectEventBlock)
|
|
17
|
+
RCT_EXPORT_VIEW_PROPERTY(onEvent, RCTDirectEventBlock)
|
|
17
18
|
RCT_EXPORT_VIEW_PROPERTY(onReady, RCTDirectEventBlock)
|
|
18
19
|
|
|
19
20
|
RCT_EXTERN_METHOD(create:(nonnull NSNumber *)reactTag withViewId:(nonnull NSNumber *)viewId)
|
|
@@ -28,8 +28,9 @@ final class PersonaInquiryView: UIView {
|
|
|
28
28
|
@objc var onComplete: RCTDirectEventBlock?
|
|
29
29
|
@objc var onCanceled: RCTDirectEventBlock?
|
|
30
30
|
@objc var onError: RCTDirectEventBlock?
|
|
31
|
+
@objc var onEvent: RCTDirectEventBlock?
|
|
31
32
|
@objc var onReady: RCTDirectEventBlock?
|
|
32
|
-
|
|
33
|
+
|
|
33
34
|
weak var manager: PersonaInquiryViewManager?
|
|
34
35
|
}
|
|
35
36
|
|
|
@@ -229,6 +230,21 @@ extension PersonaInquiryViewManager: InquiryDelegate {
|
|
|
229
230
|
"debugMessage": error.localizedDescription
|
|
230
231
|
])
|
|
231
232
|
}
|
|
233
|
+
|
|
234
|
+
func inquiryEventOccurred(event: InquiryEvent) {
|
|
235
|
+
let canProcessEvent = switch event {
|
|
236
|
+
case .start, .pageChange:
|
|
237
|
+
true
|
|
238
|
+
@unknown default:
|
|
239
|
+
false
|
|
240
|
+
}
|
|
241
|
+
guard canProcessEvent else { return }
|
|
242
|
+
guard let inquiryView else { return }
|
|
243
|
+
|
|
244
|
+
inquiryView.onEvent?([
|
|
245
|
+
"event": inquiryEventToDictionary(event: event)
|
|
246
|
+
])
|
|
247
|
+
}
|
|
232
248
|
}
|
|
233
249
|
|
|
234
250
|
// MARK: - InquiryCollectionDelegate
|
|
@@ -241,14 +257,43 @@ extension PersonaInquiryViewManager: InquiryCollectionDelegate {
|
|
|
241
257
|
}
|
|
242
258
|
|
|
243
259
|
extension PersonaInquiryViewManager: PersonaInlineDelegate {
|
|
244
|
-
|
|
260
|
+
|
|
245
261
|
func navigationStateDidUpdate(navigationState: PersonaInlineNavigationState) {
|
|
246
262
|
// TODO: add custom navigation support
|
|
247
263
|
}
|
|
248
|
-
|
|
264
|
+
|
|
249
265
|
func onReady() {
|
|
250
266
|
guard let inquiryView else { return }
|
|
251
267
|
|
|
252
268
|
inquiryView.onReady?([:])
|
|
253
269
|
}
|
|
254
270
|
}
|
|
271
|
+
|
|
272
|
+
// MARK: - Event Helpers
|
|
273
|
+
|
|
274
|
+
extension PersonaInquiryViewManager {
|
|
275
|
+
/// Converts an InquiryEvent like
|
|
276
|
+
/// `.pageChange(name: "start", path: "inquriy/start")]` to
|
|
277
|
+
/// `["name": "start", "path": "inquriy/start"]`
|
|
278
|
+
private func inquiryEventToDictionary(event: InquiryEvent) -> [String: String] {
|
|
279
|
+
switch event {
|
|
280
|
+
case .start(let value):
|
|
281
|
+
return [
|
|
282
|
+
"type": "start",
|
|
283
|
+
"inquiryId": value.inquiryId,
|
|
284
|
+
"sessionToken": value.sessionToken,
|
|
285
|
+
]
|
|
286
|
+
case .pageChange(let value):
|
|
287
|
+
return [
|
|
288
|
+
"type": "page_change",
|
|
289
|
+
"name": value.name,
|
|
290
|
+
"path": value.path,
|
|
291
|
+
]
|
|
292
|
+
@unknown default:
|
|
293
|
+
return [
|
|
294
|
+
"type": "unknown",
|
|
295
|
+
"value": "unknown"
|
|
296
|
+
]
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
@@ -30,10 +30,10 @@ let InquiryEvent = exports.InquiryEvent = void 0;
|
|
|
30
30
|
}
|
|
31
31
|
_InquiryEvent.PageChange = PageChange;
|
|
32
32
|
const isStart = event => {
|
|
33
|
-
return event.type === 'start' && event.inquiryId !== undefined && event.sessionToken !== undefined;
|
|
33
|
+
return event != null && typeof event === 'object' && event.type === 'start' && event.inquiryId !== undefined && event.sessionToken !== undefined;
|
|
34
34
|
};
|
|
35
35
|
const isPageChange = event => {
|
|
36
|
-
return event.type === 'page_change' && event.name !== undefined && event.path !== undefined;
|
|
36
|
+
return event != null && typeof event === 'object' && event.type === 'page_change' && event.name !== undefined && event.path !== undefined;
|
|
37
37
|
};
|
|
38
38
|
const fromJson = _InquiryEvent.fromJson = eventJson => {
|
|
39
39
|
let event;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["InquiryEvent","exports","_InquiryEvent","Start","constructor","inquiryId","sessionToken","_defineProperty","PageChange","name","path","isStart","event","type","undefined","isPageChange","fromJson","eventJson"],"sources":["InquiryEvent.ts"],"sourcesContent":["export interface InquiryEvent {\n readonly type: string;\n}\n\nexport namespace InquiryEvent {\n /**\n * Triggered when an Inquiry session has been created in the client.\n *\n * Dynamic Flow Templates will send this event at the same time as 'ready', and it will not\n * indicate user interaction.\n */\n export class Start implements InquiryEvent {\n readonly type: string = 'start';\n readonly inquiryId: string;\n readonly sessionToken: string;\n\n constructor(inquiryId: string, sessionToken: string) {\n this.inquiryId = inquiryId;\n this.sessionToken = sessionToken;\n }\n }\n\n /**\n * The current page in the Inquiry flow changed. This is primarily used with the Inlined React\n * flow to dynamically resize the widget based on the contents of the current page.\n *\n * page-change events receive a metadata object containing the following fields:\n *\n * @param name name of the next step as configured in the Inquiry Template\n * @param path string representing the step type\n */\n export class PageChange implements InquiryEvent {\n readonly type: string = 'page_change';\n readonly name: string;\n readonly path: string;\n\n constructor(name: string, path: string) {\n this.name = name;\n this.path = path;\n }\n }\n\n const isStart = (event: any): event is Start => {\n return (\n event.type === 'start' &&\n event.inquiryId !== undefined &&\n event.sessionToken !== undefined\n );\n };\n\n const isPageChange = (event: any): event is PageChange => {\n return (\n event.type === 'page_change' &&\n event.name !== undefined &&\n event.path !== undefined\n );\n };\n\n export const fromJson = (eventJson: any): InquiryEvent | null => {\n let event: InquiryEvent | null;\n\n if (isStart(eventJson)) {\n event = new Start(eventJson.inquiryId, eventJson.sessionToken);\n } else if (isPageChange(eventJson)) {\n event = new PageChange(eventJson.name, eventJson.path);\n } else {\n event = null;\n }\n\n return event;\n };\n}\n"],"mappings":";;;;;;;;;IAIiBA,YAAY,GAAAC,OAAA,CAAAD,YAAA;AAAA,WAAAE,aAAA;EAOpB,MAAMC,KAAK,CAAyB;IAKzCC,WAAWA,CAACC,SAAiB,EAAEC,YAAoB,EAAE;MAAAC,eAAA,eAJ7B,OAAO;MAAAA,eAAA;MAAAA,eAAA;MAK7B,IAAI,CAACF,SAAS,GAAGA,SAAS;MAC1B,IAAI,CAACC,YAAY,GAAGA,YAAY;IAClC;EACF;EAACJ,aAAA,CAAAC,KAAA,GAAAA,KAAA;EAWM,MAAMK,UAAU,CAAyB;IAK9CJ,WAAWA,CAACK,IAAY,EAAEC,IAAY,EAAE;MAAAH,eAAA,eAJhB,aAAa;MAAAA,eAAA;MAAAA,eAAA;MAKnC,IAAI,CAACE,IAAI,GAAGA,IAAI;MAChB,IAAI,CAACC,IAAI,GAAGA,IAAI;IAClB;EACF;EAACR,aAAA,CAAAM,UAAA,GAAAA,UAAA;EAED,MAAMG,OAAO,GAAIC,KAAU,IAAqB;IAC9C,OACEA,KAAK,CAACC,IAAI,KAAK,OAAO,IACtBD,KAAK,CAACP,SAAS,KAAKS,SAAS,IAC7BF,KAAK,CAACN,YAAY,KAAKQ,SAAS;EAEpC,CAAC;EAED,MAAMC,YAAY,GAAIH,KAAU,IAA0B;IACxD,OACEA,KAAK,CAACC,IAAI,KAAK,aAAa,IAC5BD,KAAK,CAACH,IAAI,KAAKK,SAAS,IACxBF,KAAK,CAACF,IAAI,KAAKI,SAAS;EAE5B,CAAC;EAEM,MAAME,QAAQ,GAAAd,aAAA,CAAAc,QAAA,GAAIC,SAAc,IAA0B;IAC/D,IAAIL,KAA0B;IAE9B,IAAID,OAAO,CAACM,SAAS,CAAC,EAAE;MACtBL,KAAK,GAAG,IAAIT,KAAK,CAACc,SAAS,CAACZ,SAAS,EAAEY,SAAS,CAACX,YAAY,CAAC;IAChE,CAAC,MAAM,IAAIS,YAAY,CAACE,SAAS,CAAC,EAAE;MAClCL,KAAK,GAAG,IAAIJ,UAAU,CAACS,SAAS,CAACR,IAAI,EAAEQ,SAAS,CAACP,IAAI,CAAC;IACxD,CAAC,MAAM;MACLE,KAAK,GAAG,IAAI;IACd;IAEA,OAAOA,KAAK;EACd,CAAC;AAAC,
|
|
1
|
+
{"version":3,"names":["InquiryEvent","exports","_InquiryEvent","Start","constructor","inquiryId","sessionToken","_defineProperty","PageChange","name","path","isStart","event","type","undefined","isPageChange","fromJson","eventJson"],"sources":["InquiryEvent.ts"],"sourcesContent":["export interface InquiryEvent {\n readonly type: string;\n}\n\nexport namespace InquiryEvent {\n /**\n * Triggered when an Inquiry session has been created in the client.\n *\n * Dynamic Flow Templates will send this event at the same time as 'ready', and it will not\n * indicate user interaction.\n */\n export class Start implements InquiryEvent {\n readonly type: string = 'start';\n readonly inquiryId: string;\n readonly sessionToken: string;\n\n constructor(inquiryId: string, sessionToken: string) {\n this.inquiryId = inquiryId;\n this.sessionToken = sessionToken;\n }\n }\n\n /**\n * The current page in the Inquiry flow changed. This is primarily used with the Inlined React\n * flow to dynamically resize the widget based on the contents of the current page.\n *\n * page-change events receive a metadata object containing the following fields:\n *\n * @param name name of the next step as configured in the Inquiry Template\n * @param path string representing the step type\n */\n export class PageChange implements InquiryEvent {\n readonly type: string = 'page_change';\n readonly name: string;\n readonly path: string;\n\n constructor(name: string, path: string) {\n this.name = name;\n this.path = path;\n }\n }\n\n const isStart = (event: any): event is Start => {\n return (\n event != null &&\n typeof event === 'object' &&\n event.type === 'start' &&\n event.inquiryId !== undefined &&\n event.sessionToken !== undefined\n );\n };\n\n const isPageChange = (event: any): event is PageChange => {\n return (\n event != null &&\n typeof event === 'object' &&\n event.type === 'page_change' &&\n event.name !== undefined &&\n event.path !== undefined\n );\n };\n\n export const fromJson = (eventJson: any): InquiryEvent | null => {\n let event: InquiryEvent | null;\n\n if (isStart(eventJson)) {\n event = new Start(eventJson.inquiryId, eventJson.sessionToken);\n } else if (isPageChange(eventJson)) {\n event = new PageChange(eventJson.name, eventJson.path);\n } else {\n event = null;\n }\n\n return event;\n };\n}\n"],"mappings":";;;;;;;;;IAIiBA,YAAY,GAAAC,OAAA,CAAAD,YAAA;AAAA,WAAAE,aAAA;EAOpB,MAAMC,KAAK,CAAyB;IAKzCC,WAAWA,CAACC,SAAiB,EAAEC,YAAoB,EAAE;MAAAC,eAAA,eAJ7B,OAAO;MAAAA,eAAA;MAAAA,eAAA;MAK7B,IAAI,CAACF,SAAS,GAAGA,SAAS;MAC1B,IAAI,CAACC,YAAY,GAAGA,YAAY;IAClC;EACF;EAACJ,aAAA,CAAAC,KAAA,GAAAA,KAAA;EAWM,MAAMK,UAAU,CAAyB;IAK9CJ,WAAWA,CAACK,IAAY,EAAEC,IAAY,EAAE;MAAAH,eAAA,eAJhB,aAAa;MAAAA,eAAA;MAAAA,eAAA;MAKnC,IAAI,CAACE,IAAI,GAAGA,IAAI;MAChB,IAAI,CAACC,IAAI,GAAGA,IAAI;IAClB;EACF;EAACR,aAAA,CAAAM,UAAA,GAAAA,UAAA;EAED,MAAMG,OAAO,GAAIC,KAAU,IAAqB;IAC9C,OACEA,KAAK,IAAI,IAAI,IACb,OAAOA,KAAK,KAAK,QAAQ,IACzBA,KAAK,CAACC,IAAI,KAAK,OAAO,IACtBD,KAAK,CAACP,SAAS,KAAKS,SAAS,IAC7BF,KAAK,CAACN,YAAY,KAAKQ,SAAS;EAEpC,CAAC;EAED,MAAMC,YAAY,GAAIH,KAAU,IAA0B;IACxD,OACEA,KAAK,IAAI,IAAI,IACb,OAAOA,KAAK,KAAK,QAAQ,IACzBA,KAAK,CAACC,IAAI,KAAK,aAAa,IAC5BD,KAAK,CAACH,IAAI,KAAKK,SAAS,IACxBF,KAAK,CAACF,IAAI,KAAKI,SAAS;EAE5B,CAAC;EAEM,MAAME,QAAQ,GAAAd,aAAA,CAAAc,QAAA,GAAIC,SAAc,IAA0B;IAC/D,IAAIL,KAA0B;IAE9B,IAAID,OAAO,CAACM,SAAS,CAAC,EAAE;MACtBL,KAAK,GAAG,IAAIT,KAAK,CAACc,SAAS,CAACZ,SAAS,EAAEY,SAAS,CAACX,YAAY,CAAC;IAChE,CAAC,MAAM,IAAIS,YAAY,CAACE,SAAS,CAAC,EAAE;MAClCL,KAAK,GAAG,IAAIJ,UAAU,CAACS,SAAS,CAACR,IAAI,EAAEQ,SAAS,CAACP,IAAI,CAAC;IACxD,CAAC,MAAM;MACLE,KAAK,GAAG,IAAI;IACd;IAEA,OAAOA,KAAK;EACd,CAAC;AAAC,GAtEaZ,YAAY,KAAAC,OAAA,CAAAD,YAAA,GAAZA,YAAY","ignoreList":[]}
|
|
@@ -53,6 +53,9 @@ function PersonaInquiryView(props) {
|
|
|
53
53
|
const _onError = (0, _react.useCallback)(event => {
|
|
54
54
|
(0, _util.callOnErrorCallback)(event.nativeEvent, props.onError);
|
|
55
55
|
}, [props.onError]);
|
|
56
|
+
const _onEvent = (0, _react.useCallback)(event => {
|
|
57
|
+
(0, _util.callOnEventCallback)(event.nativeEvent, props.onEvent);
|
|
58
|
+
}, [props.onEvent]);
|
|
56
59
|
const _onReady = (0, _react.useCallback)(() => {
|
|
57
60
|
(0, _util.callOnReadyCallback)(props.onReady);
|
|
58
61
|
}, [props.onReady]);
|
|
@@ -62,6 +65,7 @@ function PersonaInquiryView(props) {
|
|
|
62
65
|
onComplete: _onComplete,
|
|
63
66
|
onCanceled: _onCanceled,
|
|
64
67
|
onError: _onError,
|
|
68
|
+
onEvent: _onEvent,
|
|
65
69
|
onReady: _onReady,
|
|
66
70
|
ref: ref
|
|
67
71
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_PersonaInquiryViewManager","_util","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","create","viewId","viewManagerConfig","UIManager","getViewManagerConfig","Commands","console","error","dispatchViewManagerCommand","onReadyCalled","onReadyCallback","onPersonaInquiryViewEvent","event","type","setTimeout","exports","PersonaInquiryView","props","ref","useRef","useEffect","findNodeHandle","current","onReady","_onComplete","useCallback","callOnCompleteCallback","nativeEvent","onComplete","_onCanceled","callOnCanceledCallback","onCanceled","_onError","callOnErrorCallback","onError","_onReady","callOnReadyCallback","createElement","PersonaInquiryViewManager","style","inquiry","toOptionsJson"],"sources":["PersonaInquiryView.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef } from 'react';\nimport { findNodeHandle, UIManager } from 'react-native';\nimport { PersonaInquiryViewManager } from './PersonaInquiryViewManager';\nimport {\n callOnCanceledCallback,\n callOnCompleteCallback,\n callOnErrorCallback,\n callOnReadyCallback,\n} from './util';\nimport type {\n OnReadyCallback,\n OnCanceledCallback,\n OnCompleteCallback,\n OnErrorCallback,\n OnEventCallback,\n} from './callbacks';\nimport type { InquiryEvent } from './InquiryEvent';\n\nconst create = (viewId: number | null) => {\n try {\n const viewManagerConfig =\n UIManager.getViewManagerConfig('PersonaInquiryView');\n if (!viewManagerConfig || !viewManagerConfig.Commands) {\n console.error('PersonaInquiryView config not found');\n return;\n }\n UIManager.dispatchViewManagerCommand(\n viewId,\n viewManagerConfig.Commands.create,\n [viewId]\n );\n } catch (error) {\n console.error('Error dispatching create command:', error);\n }\n};\n\nlet onReadyCalled = false;\nlet onReadyCallback = () => {};\nexport const onPersonaInquiryViewEvent: OnEventCallback = (\n event: InquiryEvent\n) => {\n if (event.type == 'start') {\n onReadyCalled = false;\n } else if (event.type == 'page_change' && !onReadyCalled) {\n onReadyCalled = true;\n\n setTimeout(function () {\n onReadyCallback();\n }, 400);\n }\n};\n\nexport default function PersonaInquiryView(props: {\n style: any;\n inquiry: any;\n onComplete: OnCompleteCallback;\n onCanceled: OnCanceledCallback;\n onError: OnErrorCallback;\n onReady: OnReadyCallback;\n}) {\n const ref = useRef(null);\n\n useEffect(() => {\n const viewId = findNodeHandle(ref.current);\n\n onReadyCallback = () => {\n props.onReady();\n };\n\n create(viewId);\n }, []);\n\n const _onComplete = useCallback(\n (event: any) => {\n callOnCompleteCallback(event.nativeEvent, props.onComplete);\n },\n [props.onComplete]\n );\n\n const _onCanceled = useCallback(\n (event: any) => {\n callOnCanceledCallback(event.nativeEvent, props.onCanceled);\n },\n [props.onCanceled]\n );\n\n const _onError = useCallback(\n (event: any) => {\n callOnErrorCallback(event.nativeEvent, props.onError);\n },\n [props.onError]\n );\n\n const _onReady = useCallback(() => {\n callOnReadyCallback(props.onReady);\n }, [props.onReady]);\n\n return (\n <PersonaInquiryViewManager\n style={props.style}\n inquiry={props.inquiry.toOptionsJson()}\n onComplete={_onComplete}\n onCanceled={_onCanceled}\n onError={_onError}\n onReady={_onReady}\n ref={ref}\n />\n );\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,0BAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_PersonaInquiryViewManager","_util","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","create","viewId","viewManagerConfig","UIManager","getViewManagerConfig","Commands","console","error","dispatchViewManagerCommand","onReadyCalled","onReadyCallback","onPersonaInquiryViewEvent","event","type","setTimeout","exports","PersonaInquiryView","props","ref","useRef","useEffect","findNodeHandle","current","onReady","_onComplete","useCallback","callOnCompleteCallback","nativeEvent","onComplete","_onCanceled","callOnCanceledCallback","onCanceled","_onError","callOnErrorCallback","onError","_onEvent","callOnEventCallback","onEvent","_onReady","callOnReadyCallback","createElement","PersonaInquiryViewManager","style","inquiry","toOptionsJson"],"sources":["PersonaInquiryView.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef } from 'react';\nimport { findNodeHandle, UIManager } from 'react-native';\nimport { PersonaInquiryViewManager } from './PersonaInquiryViewManager';\nimport {\n callOnCanceledCallback,\n callOnCompleteCallback,\n callOnErrorCallback,\n callOnEventCallback,\n callOnReadyCallback,\n} from './util';\nimport type {\n OnReadyCallback,\n OnCanceledCallback,\n OnCompleteCallback,\n OnErrorCallback,\n OnEventCallback,\n} from './callbacks';\nimport type { InquiryEvent } from './InquiryEvent';\n\nconst create = (viewId: number | null) => {\n try {\n const viewManagerConfig =\n UIManager.getViewManagerConfig('PersonaInquiryView');\n if (!viewManagerConfig || !viewManagerConfig.Commands) {\n console.error('PersonaInquiryView config not found');\n return;\n }\n UIManager.dispatchViewManagerCommand(\n viewId,\n viewManagerConfig.Commands.create,\n [viewId]\n );\n } catch (error) {\n console.error('Error dispatching create command:', error);\n }\n};\n\nlet onReadyCalled = false;\nlet onReadyCallback = () => {};\nexport const onPersonaInquiryViewEvent: OnEventCallback = (\n event: InquiryEvent\n) => {\n if (event.type == 'start') {\n onReadyCalled = false;\n } else if (event.type == 'page_change' && !onReadyCalled) {\n onReadyCalled = true;\n\n setTimeout(function () {\n onReadyCallback();\n }, 400);\n }\n};\n\nexport default function PersonaInquiryView(props: {\n style: any;\n inquiry: any;\n onComplete: OnCompleteCallback;\n onCanceled: OnCanceledCallback;\n onError: OnErrorCallback;\n onEvent?: OnEventCallback;\n onReady: OnReadyCallback;\n}) {\n const ref = useRef(null);\n\n useEffect(() => {\n const viewId = findNodeHandle(ref.current);\n\n onReadyCallback = () => {\n props.onReady();\n };\n\n create(viewId);\n }, []);\n\n const _onComplete = useCallback(\n (event: any) => {\n callOnCompleteCallback(event.nativeEvent, props.onComplete);\n },\n [props.onComplete]\n );\n\n const _onCanceled = useCallback(\n (event: any) => {\n callOnCanceledCallback(event.nativeEvent, props.onCanceled);\n },\n [props.onCanceled]\n );\n\n const _onError = useCallback(\n (event: any) => {\n callOnErrorCallback(event.nativeEvent, props.onError);\n },\n [props.onError]\n );\n\n const _onEvent = useCallback(\n (event: any) => {\n callOnEventCallback(event.nativeEvent, props.onEvent);\n },\n [props.onEvent]\n );\n\n const _onReady = useCallback(() => {\n callOnReadyCallback(props.onReady);\n }, [props.onReady]);\n\n return (\n <PersonaInquiryViewManager\n style={props.style}\n inquiry={props.inquiry.toOptionsJson()}\n onComplete={_onComplete}\n onCanceled={_onCanceled}\n onError={_onError}\n onEvent={_onEvent}\n onReady={_onReady}\n ref={ref}\n />\n );\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,0BAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AAMgB,SAAAD,wBAAAK,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAP,uBAAA,YAAAA,CAAAK,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAUhB,MAAMkB,MAAM,GAAIC,MAAqB,IAAK;EACxC,IAAI;IACF,MAAMC,iBAAiB,GACrBC,sBAAS,CAACC,oBAAoB,CAAC,oBAAoB,CAAC;IACtD,IAAI,CAACF,iBAAiB,IAAI,CAACA,iBAAiB,CAACG,QAAQ,EAAE;MACrDC,OAAO,CAACC,KAAK,CAAC,qCAAqC,CAAC;MACpD;IACF;IACAJ,sBAAS,CAACK,0BAA0B,CAClCP,MAAM,EACNC,iBAAiB,CAACG,QAAQ,CAACL,MAAM,EACjC,CAACC,MAAM,CACT,CAAC;EACH,CAAC,CAAC,OAAOM,KAAK,EAAE;IACdD,OAAO,CAACC,KAAK,CAAC,mCAAmC,EAAEA,KAAK,CAAC;EAC3D;AACF,CAAC;AAED,IAAIE,aAAa,GAAG,KAAK;AACzB,IAAIC,eAAe,GAAGA,CAAA,KAAM,CAAC,CAAC;AACvB,MAAMC,yBAA0C,GACrDC,KAAmB,IAChB;EACH,IAAIA,KAAK,CAACC,IAAI,IAAI,OAAO,EAAE;IACzBJ,aAAa,GAAG,KAAK;EACvB,CAAC,MAAM,IAAIG,KAAK,CAACC,IAAI,IAAI,aAAa,IAAI,CAACJ,aAAa,EAAE;IACxDA,aAAa,GAAG,IAAI;IAEpBK,UAAU,CAAC,YAAY;MACrBJ,eAAe,CAAC,CAAC;IACnB,CAAC,EAAE,GAAG,CAAC;EACT;AACF,CAAC;AAACK,OAAA,CAAAJ,yBAAA,GAAAA,yBAAA;AAEa,SAASK,kBAAkBA,CAACC,KAQ1C,EAAE;EACD,MAAMC,GAAG,GAAG,IAAAC,aAAM,EAAC,IAAI,CAAC;EAExB,IAAAC,gBAAS,EAAC,MAAM;IACd,MAAMnB,MAAM,GAAG,IAAAoB,2BAAc,EAACH,GAAG,CAACI,OAAO,CAAC;IAE1CZ,eAAe,GAAGA,CAAA,KAAM;MACtBO,KAAK,CAACM,OAAO,CAAC,CAAC;IACjB,CAAC;IAEDvB,MAAM,CAACC,MAAM,CAAC;EAChB,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMuB,WAAW,GAAG,IAAAC,kBAAW,EAC5Bb,KAAU,IAAK;IACd,IAAAc,4BAAsB,EAACd,KAAK,CAACe,WAAW,EAAEV,KAAK,CAACW,UAAU,CAAC;EAC7D,CAAC,EACD,CAACX,KAAK,CAACW,UAAU,CACnB,CAAC;EAED,MAAMC,WAAW,GAAG,IAAAJ,kBAAW,EAC5Bb,KAAU,IAAK;IACd,IAAAkB,4BAAsB,EAAClB,KAAK,CAACe,WAAW,EAAEV,KAAK,CAACc,UAAU,CAAC;EAC7D,CAAC,EACD,CAACd,KAAK,CAACc,UAAU,CACnB,CAAC;EAED,MAAMC,QAAQ,GAAG,IAAAP,kBAAW,EACzBb,KAAU,IAAK;IACd,IAAAqB,yBAAmB,EAACrB,KAAK,CAACe,WAAW,EAAEV,KAAK,CAACiB,OAAO,CAAC;EACvD,CAAC,EACD,CAACjB,KAAK,CAACiB,OAAO,CAChB,CAAC;EAED,MAAMC,QAAQ,GAAG,IAAAV,kBAAW,EACzBb,KAAU,IAAK;IACd,IAAAwB,yBAAmB,EAACxB,KAAK,CAACe,WAAW,EAAEV,KAAK,CAACoB,OAAO,CAAC;EACvD,CAAC,EACD,CAACpB,KAAK,CAACoB,OAAO,CAChB,CAAC;EAED,MAAMC,QAAQ,GAAG,IAAAb,kBAAW,EAAC,MAAM;IACjC,IAAAc,yBAAmB,EAACtB,KAAK,CAACM,OAAO,CAAC;EACpC,CAAC,EAAE,CAACN,KAAK,CAACM,OAAO,CAAC,CAAC;EAEnB,oBACEhD,MAAA,CAAAgB,OAAA,CAAAiD,aAAA,CAAC7D,0BAAA,CAAA8D,yBAAyB;IACxBC,KAAK,EAAEzB,KAAK,CAACyB,KAAM;IACnBC,OAAO,EAAE1B,KAAK,CAAC0B,OAAO,CAACC,aAAa,CAAC,CAAE;IACvChB,UAAU,EAAEJ,WAAY;IACxBO,UAAU,EAAEF,WAAY;IACxBK,OAAO,EAAEF,QAAS;IAClBK,OAAO,EAAEF,QAAS;IAClBZ,OAAO,EAAEe,QAAS;IAClBpB,GAAG,EAAEA;EAAI,CACV,CAAC;AAEN","ignoreList":[]}
|
package/lib/commonjs/util.js
CHANGED
|
@@ -6,9 +6,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.callOnCanceledCallback = callOnCanceledCallback;
|
|
7
7
|
exports.callOnCompleteCallback = callOnCompleteCallback;
|
|
8
8
|
exports.callOnErrorCallback = callOnErrorCallback;
|
|
9
|
+
exports.callOnEventCallback = callOnEventCallback;
|
|
9
10
|
exports.callOnReadyCallback = callOnReadyCallback;
|
|
10
11
|
exports.processThemeValues = processThemeValues;
|
|
11
12
|
var _fields = require("./fields");
|
|
13
|
+
var _InquiryEvent = require("./InquiryEvent");
|
|
12
14
|
var _StepData = require("./StepData");
|
|
13
15
|
const HEX_REGEX = /^[a-fA-F0-9]{6}$/;
|
|
14
16
|
function processThemeValues(themeObject) {
|
|
@@ -98,4 +100,12 @@ function callOnErrorCallback(event, callback) {
|
|
|
98
100
|
function callOnReadyCallback(callback) {
|
|
99
101
|
if (callback) callback();
|
|
100
102
|
}
|
|
103
|
+
function callOnEventCallback(event, callback) {
|
|
104
|
+
if (callback) {
|
|
105
|
+
const parsedEvent = _InquiryEvent.InquiryEvent.fromJson(event.event);
|
|
106
|
+
if (parsedEvent) {
|
|
107
|
+
callback(parsedEvent);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
101
111
|
//# sourceMappingURL=util.js.map
|
package/lib/commonjs/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_fields","require","_StepData","HEX_REGEX","processThemeValues","themeObject","result","key","value","Object","entries","includes","colorValue","slice","test","toString","callOnCompleteCallback","event","callback","_event$collectedData","fields","keys","field","undefined","InquiryField","Unknown","type","Integer","Number","parseInt","Boolean","String","collectedData","stepData","translatedStepData","stepDatum","push","assign","DocumentStepData","GovernmentIdStepData","SelfieStepData","UiStepData","extraData","inquiryId","status","callOnCanceledCallback","sessionToken","callOnErrorCallback","Error","debugMessage","errorCode","callOnReadyCallback"],"sources":["util.ts"],"sourcesContent":["import type {\n CollectedData,\n ExternalCollectedData,\n ExtraData,\n OnCanceledCallback,\n OnCompleteCallback,\n OnErrorCallback,\n OnReadyCallback,\n} from './callbacks';\nimport { Fields, InquiryField, RawInquiryField } from './fields';\nimport {\n DocumentStepData,\n GovernmentIdStepData,\n SelfieStepData,\n UiStepData,\n} from './StepData';\n\nconst HEX_REGEX = /^[a-fA-F0-9]{6}$/;\nexport function processThemeValues(themeObject: Object) {\n const result: { [key: string]: string } = {};\n for (const [key, value] of Object.entries(themeObject)) {\n if (value === null) {\n continue;\n }\n\n if (key.includes('Color')) {\n let colorValue = value;\n if (value[0] === '#') {\n colorValue = value.slice(1);\n }\n\n if (HEX_REGEX.test(colorValue)) {\n result[key] = `#${colorValue}`;\n } else {\n continue;\n }\n } else {\n result[key] = value.toString();\n }\n }\n\n return result;\n}\n\nexport function callOnCompleteCallback(\n event: {\n inquiryId: string;\n status: string;\n fields: Record<string, RawInquiryField>;\n collectedData: ExternalCollectedData | null;\n },\n callback: OnCompleteCallback | undefined\n) {\n if (callback) {\n let fields: Fields = {};\n for (let key of Object.keys(event.fields || {})) {\n let field = event.fields[key];\n if (field == undefined) {\n fields[key] = new InquiryField.Unknown('null');\n continue;\n }\n switch (field.type) {\n case 'integer':\n fields[key] = new InquiryField.Integer(Number.parseInt(field.value));\n break;\n case 'boolean':\n fields[key] = new InquiryField.Boolean(field.value);\n break;\n case 'string':\n fields[key] = new InquiryField.String(field.value);\n break;\n default:\n fields[key] = new InquiryField.Unknown(field.type);\n break;\n }\n }\n\n let collectedData: CollectedData | null = null;\n\n let stepData = event.collectedData?.stepData;\n if (stepData != null) {\n // Translate the step data from JSON to actual class objects\n let translatedStepData = [];\n\n for (let stepDatum of stepData) {\n switch (stepDatum.type) {\n case 'DocumentStepData':\n translatedStepData.push(\n Object.assign(new DocumentStepData(), stepDatum)\n );\n break;\n case 'GovernmentIdStepData':\n translatedStepData.push(\n Object.assign(new GovernmentIdStepData(), stepDatum)\n );\n break;\n case 'SelfieStepData':\n translatedStepData.push(\n Object.assign(new SelfieStepData(), stepDatum)\n );\n break;\n case 'UiStepData':\n translatedStepData.push(Object.assign(new UiStepData(), stepDatum));\n break;\n }\n }\n\n collectedData = {\n stepData: translatedStepData,\n };\n }\n\n let extraData: ExtraData = {\n collectedData: collectedData,\n };\n\n callback(event.inquiryId, event.status, fields, extraData);\n }\n}\n\nexport function callOnCanceledCallback(\n event: { inquiryId?: string; sessionToken?: string },\n callback: OnCanceledCallback | undefined\n) {\n if (callback) callback(event.inquiryId, event.sessionToken);\n}\n\nexport function callOnErrorCallback(\n event: { debugMessage: string; errorCode?: string },\n callback: OnErrorCallback | undefined\n) {\n if (callback) callback(new Error(event.debugMessage), event.errorCode);\n}\n\nexport function callOnReadyCallback(callback: OnReadyCallback | undefined) {\n if (callback) callback();\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":["_fields","require","_InquiryEvent","_StepData","HEX_REGEX","processThemeValues","themeObject","result","key","value","Object","entries","includes","colorValue","slice","test","toString","callOnCompleteCallback","event","callback","_event$collectedData","fields","keys","field","undefined","InquiryField","Unknown","type","Integer","Number","parseInt","Boolean","String","collectedData","stepData","translatedStepData","stepDatum","push","assign","DocumentStepData","GovernmentIdStepData","SelfieStepData","UiStepData","extraData","inquiryId","status","callOnCanceledCallback","sessionToken","callOnErrorCallback","Error","debugMessage","errorCode","callOnReadyCallback","callOnEventCallback","parsedEvent","InquiryEvent","fromJson"],"sources":["util.ts"],"sourcesContent":["import type {\n CollectedData,\n ExternalCollectedData,\n ExtraData,\n OnCanceledCallback,\n OnCompleteCallback,\n OnErrorCallback,\n OnEventCallback,\n OnReadyCallback,\n} from './callbacks';\nimport { Fields, InquiryField, RawInquiryField } from './fields';\nimport { InquiryEvent } from './InquiryEvent';\nimport {\n DocumentStepData,\n GovernmentIdStepData,\n SelfieStepData,\n UiStepData,\n} from './StepData';\n\nconst HEX_REGEX = /^[a-fA-F0-9]{6}$/;\nexport function processThemeValues(themeObject: Object) {\n const result: { [key: string]: string } = {};\n for (const [key, value] of Object.entries(themeObject)) {\n if (value === null) {\n continue;\n }\n\n if (key.includes('Color')) {\n let colorValue = value;\n if (value[0] === '#') {\n colorValue = value.slice(1);\n }\n\n if (HEX_REGEX.test(colorValue)) {\n result[key] = `#${colorValue}`;\n } else {\n continue;\n }\n } else {\n result[key] = value.toString();\n }\n }\n\n return result;\n}\n\nexport function callOnCompleteCallback(\n event: {\n inquiryId: string;\n status: string;\n fields: Record<string, RawInquiryField>;\n collectedData: ExternalCollectedData | null;\n },\n callback: OnCompleteCallback | undefined\n) {\n if (callback) {\n let fields: Fields = {};\n for (let key of Object.keys(event.fields || {})) {\n let field = event.fields[key];\n if (field == undefined) {\n fields[key] = new InquiryField.Unknown('null');\n continue;\n }\n switch (field.type) {\n case 'integer':\n fields[key] = new InquiryField.Integer(Number.parseInt(field.value));\n break;\n case 'boolean':\n fields[key] = new InquiryField.Boolean(field.value);\n break;\n case 'string':\n fields[key] = new InquiryField.String(field.value);\n break;\n default:\n fields[key] = new InquiryField.Unknown(field.type);\n break;\n }\n }\n\n let collectedData: CollectedData | null = null;\n\n let stepData = event.collectedData?.stepData;\n if (stepData != null) {\n // Translate the step data from JSON to actual class objects\n let translatedStepData = [];\n\n for (let stepDatum of stepData) {\n switch (stepDatum.type) {\n case 'DocumentStepData':\n translatedStepData.push(\n Object.assign(new DocumentStepData(), stepDatum)\n );\n break;\n case 'GovernmentIdStepData':\n translatedStepData.push(\n Object.assign(new GovernmentIdStepData(), stepDatum)\n );\n break;\n case 'SelfieStepData':\n translatedStepData.push(\n Object.assign(new SelfieStepData(), stepDatum)\n );\n break;\n case 'UiStepData':\n translatedStepData.push(Object.assign(new UiStepData(), stepDatum));\n break;\n }\n }\n\n collectedData = {\n stepData: translatedStepData,\n };\n }\n\n let extraData: ExtraData = {\n collectedData: collectedData,\n };\n\n callback(event.inquiryId, event.status, fields, extraData);\n }\n}\n\nexport function callOnCanceledCallback(\n event: { inquiryId?: string; sessionToken?: string },\n callback: OnCanceledCallback | undefined\n) {\n if (callback) callback(event.inquiryId, event.sessionToken);\n}\n\nexport function callOnErrorCallback(\n event: { debugMessage: string; errorCode?: string },\n callback: OnErrorCallback | undefined\n) {\n if (callback) callback(new Error(event.debugMessage), event.errorCode);\n}\n\nexport function callOnReadyCallback(callback: OnReadyCallback | undefined) {\n if (callback) callback();\n}\n\nexport function callOnEventCallback(\n event: { event: any },\n callback: OnEventCallback | undefined\n) {\n if (callback) {\n const parsedEvent = InquiryEvent.fromJson(event.event);\n if (parsedEvent) {\n callback(parsedEvent);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -24,10 +24,10 @@ export let InquiryEvent;
|
|
|
24
24
|
}
|
|
25
25
|
_InquiryEvent.PageChange = PageChange;
|
|
26
26
|
const isStart = event => {
|
|
27
|
-
return event.type === 'start' && event.inquiryId !== undefined && event.sessionToken !== undefined;
|
|
27
|
+
return event != null && typeof event === 'object' && event.type === 'start' && event.inquiryId !== undefined && event.sessionToken !== undefined;
|
|
28
28
|
};
|
|
29
29
|
const isPageChange = event => {
|
|
30
|
-
return event.type === 'page_change' && event.name !== undefined && event.path !== undefined;
|
|
30
|
+
return event != null && typeof event === 'object' && event.type === 'page_change' && event.name !== undefined && event.path !== undefined;
|
|
31
31
|
};
|
|
32
32
|
const fromJson = _InquiryEvent.fromJson = eventJson => {
|
|
33
33
|
let event;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["InquiryEvent","_InquiryEvent","Start","constructor","inquiryId","sessionToken","_defineProperty","PageChange","name","path","isStart","event","type","undefined","isPageChange","fromJson","eventJson"],"sources":["InquiryEvent.ts"],"sourcesContent":["export interface InquiryEvent {\n readonly type: string;\n}\n\nexport namespace InquiryEvent {\n /**\n * Triggered when an Inquiry session has been created in the client.\n *\n * Dynamic Flow Templates will send this event at the same time as 'ready', and it will not\n * indicate user interaction.\n */\n export class Start implements InquiryEvent {\n readonly type: string = 'start';\n readonly inquiryId: string;\n readonly sessionToken: string;\n\n constructor(inquiryId: string, sessionToken: string) {\n this.inquiryId = inquiryId;\n this.sessionToken = sessionToken;\n }\n }\n\n /**\n * The current page in the Inquiry flow changed. This is primarily used with the Inlined React\n * flow to dynamically resize the widget based on the contents of the current page.\n *\n * page-change events receive a metadata object containing the following fields:\n *\n * @param name name of the next step as configured in the Inquiry Template\n * @param path string representing the step type\n */\n export class PageChange implements InquiryEvent {\n readonly type: string = 'page_change';\n readonly name: string;\n readonly path: string;\n\n constructor(name: string, path: string) {\n this.name = name;\n this.path = path;\n }\n }\n\n const isStart = (event: any): event is Start => {\n return (\n event.type === 'start' &&\n event.inquiryId !== undefined &&\n event.sessionToken !== undefined\n );\n };\n\n const isPageChange = (event: any): event is PageChange => {\n return (\n event.type === 'page_change' &&\n event.name !== undefined &&\n event.path !== undefined\n );\n };\n\n export const fromJson = (eventJson: any): InquiryEvent | null => {\n let event: InquiryEvent | null;\n\n if (isStart(eventJson)) {\n event = new Start(eventJson.inquiryId, eventJson.sessionToken);\n } else if (isPageChange(eventJson)) {\n event = new PageChange(eventJson.name, eventJson.path);\n } else {\n event = null;\n }\n\n return event;\n };\n}\n"],"mappings":";;;WAIiBA,YAAY;AAAA,WAAAC,aAAA;EAOpB,MAAMC,KAAK,CAAyB;IAKzCC,WAAWA,CAACC,SAAiB,EAAEC,YAAoB,EAAE;MAAAC,eAAA,eAJ7B,OAAO;MAAAA,eAAA;MAAAA,eAAA;MAK7B,IAAI,CAACF,SAAS,GAAGA,SAAS;MAC1B,IAAI,CAACC,YAAY,GAAGA,YAAY;IAClC;EACF;EAACJ,aAAA,CAAAC,KAAA,GAAAA,KAAA;EAWM,MAAMK,UAAU,CAAyB;IAK9CJ,WAAWA,CAACK,IAAY,EAAEC,IAAY,EAAE;MAAAH,eAAA,eAJhB,aAAa;MAAAA,eAAA;MAAAA,eAAA;MAKnC,IAAI,CAACE,IAAI,GAAGA,IAAI;MAChB,IAAI,CAACC,IAAI,GAAGA,IAAI;IAClB;EACF;EAACR,aAAA,CAAAM,UAAA,GAAAA,UAAA;EAED,MAAMG,OAAO,GAAIC,KAAU,IAAqB;IAC9C,OACEA,KAAK,CAACC,IAAI,KAAK,OAAO,IACtBD,KAAK,CAACP,SAAS,KAAKS,SAAS,IAC7BF,KAAK,CAACN,YAAY,KAAKQ,SAAS;EAEpC,CAAC;EAED,MAAMC,YAAY,GAAIH,KAAU,IAA0B;IACxD,OACEA,KAAK,CAACC,IAAI,KAAK,aAAa,IAC5BD,KAAK,CAACH,IAAI,KAAKK,SAAS,IACxBF,KAAK,CAACF,IAAI,KAAKI,SAAS;EAE5B,CAAC;EAEM,MAAME,QAAQ,GAAAd,aAAA,CAAAc,QAAA,GAAIC,SAAc,IAA0B;IAC/D,IAAIL,KAA0B;IAE9B,IAAID,OAAO,CAACM,SAAS,CAAC,EAAE;MACtBL,KAAK,GAAG,IAAIT,KAAK,CAACc,SAAS,CAACZ,SAAS,EAAEY,SAAS,CAACX,YAAY,CAAC;IAChE,CAAC,MAAM,IAAIS,YAAY,CAACE,SAAS,CAAC,EAAE;MAClCL,KAAK,GAAG,IAAIJ,UAAU,CAACS,SAAS,CAACR,IAAI,EAAEQ,SAAS,CAACP,IAAI,CAAC;IACxD,CAAC,MAAM;MACLE,KAAK,GAAG,IAAI;IACd;IAEA,OAAOA,KAAK;EACd,CAAC;AAAC,
|
|
1
|
+
{"version":3,"names":["InquiryEvent","_InquiryEvent","Start","constructor","inquiryId","sessionToken","_defineProperty","PageChange","name","path","isStart","event","type","undefined","isPageChange","fromJson","eventJson"],"sources":["InquiryEvent.ts"],"sourcesContent":["export interface InquiryEvent {\n readonly type: string;\n}\n\nexport namespace InquiryEvent {\n /**\n * Triggered when an Inquiry session has been created in the client.\n *\n * Dynamic Flow Templates will send this event at the same time as 'ready', and it will not\n * indicate user interaction.\n */\n export class Start implements InquiryEvent {\n readonly type: string = 'start';\n readonly inquiryId: string;\n readonly sessionToken: string;\n\n constructor(inquiryId: string, sessionToken: string) {\n this.inquiryId = inquiryId;\n this.sessionToken = sessionToken;\n }\n }\n\n /**\n * The current page in the Inquiry flow changed. This is primarily used with the Inlined React\n * flow to dynamically resize the widget based on the contents of the current page.\n *\n * page-change events receive a metadata object containing the following fields:\n *\n * @param name name of the next step as configured in the Inquiry Template\n * @param path string representing the step type\n */\n export class PageChange implements InquiryEvent {\n readonly type: string = 'page_change';\n readonly name: string;\n readonly path: string;\n\n constructor(name: string, path: string) {\n this.name = name;\n this.path = path;\n }\n }\n\n const isStart = (event: any): event is Start => {\n return (\n event != null &&\n typeof event === 'object' &&\n event.type === 'start' &&\n event.inquiryId !== undefined &&\n event.sessionToken !== undefined\n );\n };\n\n const isPageChange = (event: any): event is PageChange => {\n return (\n event != null &&\n typeof event === 'object' &&\n event.type === 'page_change' &&\n event.name !== undefined &&\n event.path !== undefined\n );\n };\n\n export const fromJson = (eventJson: any): InquiryEvent | null => {\n let event: InquiryEvent | null;\n\n if (isStart(eventJson)) {\n event = new Start(eventJson.inquiryId, eventJson.sessionToken);\n } else if (isPageChange(eventJson)) {\n event = new PageChange(eventJson.name, eventJson.path);\n } else {\n event = null;\n }\n\n return event;\n };\n}\n"],"mappings":";;;WAIiBA,YAAY;AAAA,WAAAC,aAAA;EAOpB,MAAMC,KAAK,CAAyB;IAKzCC,WAAWA,CAACC,SAAiB,EAAEC,YAAoB,EAAE;MAAAC,eAAA,eAJ7B,OAAO;MAAAA,eAAA;MAAAA,eAAA;MAK7B,IAAI,CAACF,SAAS,GAAGA,SAAS;MAC1B,IAAI,CAACC,YAAY,GAAGA,YAAY;IAClC;EACF;EAACJ,aAAA,CAAAC,KAAA,GAAAA,KAAA;EAWM,MAAMK,UAAU,CAAyB;IAK9CJ,WAAWA,CAACK,IAAY,EAAEC,IAAY,EAAE;MAAAH,eAAA,eAJhB,aAAa;MAAAA,eAAA;MAAAA,eAAA;MAKnC,IAAI,CAACE,IAAI,GAAGA,IAAI;MAChB,IAAI,CAACC,IAAI,GAAGA,IAAI;IAClB;EACF;EAACR,aAAA,CAAAM,UAAA,GAAAA,UAAA;EAED,MAAMG,OAAO,GAAIC,KAAU,IAAqB;IAC9C,OACEA,KAAK,IAAI,IAAI,IACb,OAAOA,KAAK,KAAK,QAAQ,IACzBA,KAAK,CAACC,IAAI,KAAK,OAAO,IACtBD,KAAK,CAACP,SAAS,KAAKS,SAAS,IAC7BF,KAAK,CAACN,YAAY,KAAKQ,SAAS;EAEpC,CAAC;EAED,MAAMC,YAAY,GAAIH,KAAU,IAA0B;IACxD,OACEA,KAAK,IAAI,IAAI,IACb,OAAOA,KAAK,KAAK,QAAQ,IACzBA,KAAK,CAACC,IAAI,KAAK,aAAa,IAC5BD,KAAK,CAACH,IAAI,KAAKK,SAAS,IACxBF,KAAK,CAACF,IAAI,KAAKI,SAAS;EAE5B,CAAC;EAEM,MAAME,QAAQ,GAAAd,aAAA,CAAAc,QAAA,GAAIC,SAAc,IAA0B;IAC/D,IAAIL,KAA0B;IAE9B,IAAID,OAAO,CAACM,SAAS,CAAC,EAAE;MACtBL,KAAK,GAAG,IAAIT,KAAK,CAACc,SAAS,CAACZ,SAAS,EAAEY,SAAS,CAACX,YAAY,CAAC;IAChE,CAAC,MAAM,IAAIS,YAAY,CAACE,SAAS,CAAC,EAAE;MAClCL,KAAK,GAAG,IAAIJ,UAAU,CAACS,SAAS,CAACR,IAAI,EAAEQ,SAAS,CAACP,IAAI,CAAC;IACxD,CAAC,MAAM;MACLE,KAAK,GAAG,IAAI;IACd;IAEA,OAAOA,KAAK;EACd,CAAC;AAAC,GAtEaX,YAAY,KAAZA,YAAY","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { useCallback, useEffect, useRef } from 'react';
|
|
2
2
|
import { findNodeHandle, UIManager } from 'react-native';
|
|
3
3
|
import { PersonaInquiryViewManager } from './PersonaInquiryViewManager';
|
|
4
|
-
import { callOnCanceledCallback, callOnCompleteCallback, callOnErrorCallback, callOnReadyCallback } from './util';
|
|
4
|
+
import { callOnCanceledCallback, callOnCompleteCallback, callOnErrorCallback, callOnEventCallback, callOnReadyCallback } from './util';
|
|
5
5
|
const create = viewId => {
|
|
6
6
|
try {
|
|
7
7
|
const viewManagerConfig = UIManager.getViewManagerConfig('PersonaInquiryView');
|
|
@@ -44,6 +44,9 @@ export default function PersonaInquiryView(props) {
|
|
|
44
44
|
const _onError = useCallback(event => {
|
|
45
45
|
callOnErrorCallback(event.nativeEvent, props.onError);
|
|
46
46
|
}, [props.onError]);
|
|
47
|
+
const _onEvent = useCallback(event => {
|
|
48
|
+
callOnEventCallback(event.nativeEvent, props.onEvent);
|
|
49
|
+
}, [props.onEvent]);
|
|
47
50
|
const _onReady = useCallback(() => {
|
|
48
51
|
callOnReadyCallback(props.onReady);
|
|
49
52
|
}, [props.onReady]);
|
|
@@ -53,6 +56,7 @@ export default function PersonaInquiryView(props) {
|
|
|
53
56
|
onComplete: _onComplete,
|
|
54
57
|
onCanceled: _onCanceled,
|
|
55
58
|
onError: _onError,
|
|
59
|
+
onEvent: _onEvent,
|
|
56
60
|
onReady: _onReady,
|
|
57
61
|
ref: ref
|
|
58
62
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useEffect","useRef","findNodeHandle","UIManager","PersonaInquiryViewManager","callOnCanceledCallback","callOnCompleteCallback","callOnErrorCallback","callOnReadyCallback","create","viewId","viewManagerConfig","getViewManagerConfig","Commands","console","error","dispatchViewManagerCommand","onReadyCalled","onReadyCallback","onPersonaInquiryViewEvent","event","type","setTimeout","PersonaInquiryView","props","ref","current","onReady","_onComplete","nativeEvent","onComplete","_onCanceled","onCanceled","_onError","onError","_onReady","createElement","style","inquiry","toOptionsJson"],"sources":["PersonaInquiryView.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef } from 'react';\nimport { findNodeHandle, UIManager } from 'react-native';\nimport { PersonaInquiryViewManager } from './PersonaInquiryViewManager';\nimport {\n callOnCanceledCallback,\n callOnCompleteCallback,\n callOnErrorCallback,\n callOnReadyCallback,\n} from './util';\nimport type {\n OnReadyCallback,\n OnCanceledCallback,\n OnCompleteCallback,\n OnErrorCallback,\n OnEventCallback,\n} from './callbacks';\nimport type { InquiryEvent } from './InquiryEvent';\n\nconst create = (viewId: number | null) => {\n try {\n const viewManagerConfig =\n UIManager.getViewManagerConfig('PersonaInquiryView');\n if (!viewManagerConfig || !viewManagerConfig.Commands) {\n console.error('PersonaInquiryView config not found');\n return;\n }\n UIManager.dispatchViewManagerCommand(\n viewId,\n viewManagerConfig.Commands.create,\n [viewId]\n );\n } catch (error) {\n console.error('Error dispatching create command:', error);\n }\n};\n\nlet onReadyCalled = false;\nlet onReadyCallback = () => {};\nexport const onPersonaInquiryViewEvent: OnEventCallback = (\n event: InquiryEvent\n) => {\n if (event.type == 'start') {\n onReadyCalled = false;\n } else if (event.type == 'page_change' && !onReadyCalled) {\n onReadyCalled = true;\n\n setTimeout(function () {\n onReadyCallback();\n }, 400);\n }\n};\n\nexport default function PersonaInquiryView(props: {\n style: any;\n inquiry: any;\n onComplete: OnCompleteCallback;\n onCanceled: OnCanceledCallback;\n onError: OnErrorCallback;\n onReady: OnReadyCallback;\n}) {\n const ref = useRef(null);\n\n useEffect(() => {\n const viewId = findNodeHandle(ref.current);\n\n onReadyCallback = () => {\n props.onReady();\n };\n\n create(viewId);\n }, []);\n\n const _onComplete = useCallback(\n (event: any) => {\n callOnCompleteCallback(event.nativeEvent, props.onComplete);\n },\n [props.onComplete]\n );\n\n const _onCanceled = useCallback(\n (event: any) => {\n callOnCanceledCallback(event.nativeEvent, props.onCanceled);\n },\n [props.onCanceled]\n );\n\n const _onError = useCallback(\n (event: any) => {\n callOnErrorCallback(event.nativeEvent, props.onError);\n },\n [props.onError]\n );\n\n const _onReady = useCallback(() => {\n callOnReadyCallback(props.onReady);\n }, [props.onReady]);\n\n return (\n <PersonaInquiryViewManager\n style={props.style}\n inquiry={props.inquiry.toOptionsJson()}\n onComplete={_onComplete}\n onCanceled={_onCanceled}\n onError={_onError}\n onReady={_onReady}\n ref={ref}\n />\n );\n}\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAC7D,SAASC,cAAc,EAAEC,SAAS,QAAQ,cAAc;AACxD,SAASC,yBAAyB,QAAQ,6BAA6B;AACvE,SACEC,sBAAsB,EACtBC,sBAAsB,EACtBC,mBAAmB,EACnBC,mBAAmB,QACd,QAAQ;AAUf,MAAMC,MAAM,GAAIC,MAAqB,IAAK;EACxC,IAAI;IACF,MAAMC,iBAAiB,
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","useRef","findNodeHandle","UIManager","PersonaInquiryViewManager","callOnCanceledCallback","callOnCompleteCallback","callOnErrorCallback","callOnEventCallback","callOnReadyCallback","create","viewId","viewManagerConfig","getViewManagerConfig","Commands","console","error","dispatchViewManagerCommand","onReadyCalled","onReadyCallback","onPersonaInquiryViewEvent","event","type","setTimeout","PersonaInquiryView","props","ref","current","onReady","_onComplete","nativeEvent","onComplete","_onCanceled","onCanceled","_onError","onError","_onEvent","onEvent","_onReady","createElement","style","inquiry","toOptionsJson"],"sources":["PersonaInquiryView.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef } from 'react';\nimport { findNodeHandle, UIManager } from 'react-native';\nimport { PersonaInquiryViewManager } from './PersonaInquiryViewManager';\nimport {\n callOnCanceledCallback,\n callOnCompleteCallback,\n callOnErrorCallback,\n callOnEventCallback,\n callOnReadyCallback,\n} from './util';\nimport type {\n OnReadyCallback,\n OnCanceledCallback,\n OnCompleteCallback,\n OnErrorCallback,\n OnEventCallback,\n} from './callbacks';\nimport type { InquiryEvent } from './InquiryEvent';\n\nconst create = (viewId: number | null) => {\n try {\n const viewManagerConfig =\n UIManager.getViewManagerConfig('PersonaInquiryView');\n if (!viewManagerConfig || !viewManagerConfig.Commands) {\n console.error('PersonaInquiryView config not found');\n return;\n }\n UIManager.dispatchViewManagerCommand(\n viewId,\n viewManagerConfig.Commands.create,\n [viewId]\n );\n } catch (error) {\n console.error('Error dispatching create command:', error);\n }\n};\n\nlet onReadyCalled = false;\nlet onReadyCallback = () => {};\nexport const onPersonaInquiryViewEvent: OnEventCallback = (\n event: InquiryEvent\n) => {\n if (event.type == 'start') {\n onReadyCalled = false;\n } else if (event.type == 'page_change' && !onReadyCalled) {\n onReadyCalled = true;\n\n setTimeout(function () {\n onReadyCallback();\n }, 400);\n }\n};\n\nexport default function PersonaInquiryView(props: {\n style: any;\n inquiry: any;\n onComplete: OnCompleteCallback;\n onCanceled: OnCanceledCallback;\n onError: OnErrorCallback;\n onEvent?: OnEventCallback;\n onReady: OnReadyCallback;\n}) {\n const ref = useRef(null);\n\n useEffect(() => {\n const viewId = findNodeHandle(ref.current);\n\n onReadyCallback = () => {\n props.onReady();\n };\n\n create(viewId);\n }, []);\n\n const _onComplete = useCallback(\n (event: any) => {\n callOnCompleteCallback(event.nativeEvent, props.onComplete);\n },\n [props.onComplete]\n );\n\n const _onCanceled = useCallback(\n (event: any) => {\n callOnCanceledCallback(event.nativeEvent, props.onCanceled);\n },\n [props.onCanceled]\n );\n\n const _onError = useCallback(\n (event: any) => {\n callOnErrorCallback(event.nativeEvent, props.onError);\n },\n [props.onError]\n );\n\n const _onEvent = useCallback(\n (event: any) => {\n callOnEventCallback(event.nativeEvent, props.onEvent);\n },\n [props.onEvent]\n );\n\n const _onReady = useCallback(() => {\n callOnReadyCallback(props.onReady);\n }, [props.onReady]);\n\n return (\n <PersonaInquiryViewManager\n style={props.style}\n inquiry={props.inquiry.toOptionsJson()}\n onComplete={_onComplete}\n onCanceled={_onCanceled}\n onError={_onError}\n onEvent={_onEvent}\n onReady={_onReady}\n ref={ref}\n />\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
package/lib/module/util.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { InquiryField } from './fields';
|
|
2
|
+
import { InquiryEvent } from './InquiryEvent';
|
|
2
3
|
import { DocumentStepData, GovernmentIdStepData, SelfieStepData, UiStepData } from './StepData';
|
|
3
4
|
const HEX_REGEX = /^[a-fA-F0-9]{6}$/;
|
|
4
5
|
export function processThemeValues(themeObject) {
|
|
@@ -88,4 +89,12 @@ export function callOnErrorCallback(event, callback) {
|
|
|
88
89
|
export function callOnReadyCallback(callback) {
|
|
89
90
|
if (callback) callback();
|
|
90
91
|
}
|
|
92
|
+
export function callOnEventCallback(event, callback) {
|
|
93
|
+
if (callback) {
|
|
94
|
+
const parsedEvent = InquiryEvent.fromJson(event.event);
|
|
95
|
+
if (parsedEvent) {
|
|
96
|
+
callback(parsedEvent);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
91
100
|
//# sourceMappingURL=util.js.map
|
package/lib/module/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["InquiryField","DocumentStepData","GovernmentIdStepData","SelfieStepData","UiStepData","HEX_REGEX","processThemeValues","themeObject","result","key","value","Object","entries","includes","colorValue","slice","test","toString","callOnCompleteCallback","event","callback","_event$collectedData","fields","keys","field","undefined","Unknown","type","Integer","Number","parseInt","Boolean","String","collectedData","stepData","translatedStepData","stepDatum","push","assign","extraData","inquiryId","status","callOnCanceledCallback","sessionToken","callOnErrorCallback","Error","debugMessage","errorCode","callOnReadyCallback"],"sources":["util.ts"],"sourcesContent":["import type {\n CollectedData,\n ExternalCollectedData,\n ExtraData,\n OnCanceledCallback,\n OnCompleteCallback,\n OnErrorCallback,\n OnReadyCallback,\n} from './callbacks';\nimport { Fields, InquiryField, RawInquiryField } from './fields';\nimport {\n DocumentStepData,\n GovernmentIdStepData,\n SelfieStepData,\n UiStepData,\n} from './StepData';\n\nconst HEX_REGEX = /^[a-fA-F0-9]{6}$/;\nexport function processThemeValues(themeObject: Object) {\n const result: { [key: string]: string } = {};\n for (const [key, value] of Object.entries(themeObject)) {\n if (value === null) {\n continue;\n }\n\n if (key.includes('Color')) {\n let colorValue = value;\n if (value[0] === '#') {\n colorValue = value.slice(1);\n }\n\n if (HEX_REGEX.test(colorValue)) {\n result[key] = `#${colorValue}`;\n } else {\n continue;\n }\n } else {\n result[key] = value.toString();\n }\n }\n\n return result;\n}\n\nexport function callOnCompleteCallback(\n event: {\n inquiryId: string;\n status: string;\n fields: Record<string, RawInquiryField>;\n collectedData: ExternalCollectedData | null;\n },\n callback: OnCompleteCallback | undefined\n) {\n if (callback) {\n let fields: Fields = {};\n for (let key of Object.keys(event.fields || {})) {\n let field = event.fields[key];\n if (field == undefined) {\n fields[key] = new InquiryField.Unknown('null');\n continue;\n }\n switch (field.type) {\n case 'integer':\n fields[key] = new InquiryField.Integer(Number.parseInt(field.value));\n break;\n case 'boolean':\n fields[key] = new InquiryField.Boolean(field.value);\n break;\n case 'string':\n fields[key] = new InquiryField.String(field.value);\n break;\n default:\n fields[key] = new InquiryField.Unknown(field.type);\n break;\n }\n }\n\n let collectedData: CollectedData | null = null;\n\n let stepData = event.collectedData?.stepData;\n if (stepData != null) {\n // Translate the step data from JSON to actual class objects\n let translatedStepData = [];\n\n for (let stepDatum of stepData) {\n switch (stepDatum.type) {\n case 'DocumentStepData':\n translatedStepData.push(\n Object.assign(new DocumentStepData(), stepDatum)\n );\n break;\n case 'GovernmentIdStepData':\n translatedStepData.push(\n Object.assign(new GovernmentIdStepData(), stepDatum)\n );\n break;\n case 'SelfieStepData':\n translatedStepData.push(\n Object.assign(new SelfieStepData(), stepDatum)\n );\n break;\n case 'UiStepData':\n translatedStepData.push(Object.assign(new UiStepData(), stepDatum));\n break;\n }\n }\n\n collectedData = {\n stepData: translatedStepData,\n };\n }\n\n let extraData: ExtraData = {\n collectedData: collectedData,\n };\n\n callback(event.inquiryId, event.status, fields, extraData);\n }\n}\n\nexport function callOnCanceledCallback(\n event: { inquiryId?: string; sessionToken?: string },\n callback: OnCanceledCallback | undefined\n) {\n if (callback) callback(event.inquiryId, event.sessionToken);\n}\n\nexport function callOnErrorCallback(\n event: { debugMessage: string; errorCode?: string },\n callback: OnErrorCallback | undefined\n) {\n if (callback) callback(new Error(event.debugMessage), event.errorCode);\n}\n\nexport function callOnReadyCallback(callback: OnReadyCallback | undefined) {\n if (callback) callback();\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"names":["InquiryField","InquiryEvent","DocumentStepData","GovernmentIdStepData","SelfieStepData","UiStepData","HEX_REGEX","processThemeValues","themeObject","result","key","value","Object","entries","includes","colorValue","slice","test","toString","callOnCompleteCallback","event","callback","_event$collectedData","fields","keys","field","undefined","Unknown","type","Integer","Number","parseInt","Boolean","String","collectedData","stepData","translatedStepData","stepDatum","push","assign","extraData","inquiryId","status","callOnCanceledCallback","sessionToken","callOnErrorCallback","Error","debugMessage","errorCode","callOnReadyCallback","callOnEventCallback","parsedEvent","fromJson"],"sources":["util.ts"],"sourcesContent":["import type {\n CollectedData,\n ExternalCollectedData,\n ExtraData,\n OnCanceledCallback,\n OnCompleteCallback,\n OnErrorCallback,\n OnEventCallback,\n OnReadyCallback,\n} from './callbacks';\nimport { Fields, InquiryField, RawInquiryField } from './fields';\nimport { InquiryEvent } from './InquiryEvent';\nimport {\n DocumentStepData,\n GovernmentIdStepData,\n SelfieStepData,\n UiStepData,\n} from './StepData';\n\nconst HEX_REGEX = /^[a-fA-F0-9]{6}$/;\nexport function processThemeValues(themeObject: Object) {\n const result: { [key: string]: string } = {};\n for (const [key, value] of Object.entries(themeObject)) {\n if (value === null) {\n continue;\n }\n\n if (key.includes('Color')) {\n let colorValue = value;\n if (value[0] === '#') {\n colorValue = value.slice(1);\n }\n\n if (HEX_REGEX.test(colorValue)) {\n result[key] = `#${colorValue}`;\n } else {\n continue;\n }\n } else {\n result[key] = value.toString();\n }\n }\n\n return result;\n}\n\nexport function callOnCompleteCallback(\n event: {\n inquiryId: string;\n status: string;\n fields: Record<string, RawInquiryField>;\n collectedData: ExternalCollectedData | null;\n },\n callback: OnCompleteCallback | undefined\n) {\n if (callback) {\n let fields: Fields = {};\n for (let key of Object.keys(event.fields || {})) {\n let field = event.fields[key];\n if (field == undefined) {\n fields[key] = new InquiryField.Unknown('null');\n continue;\n }\n switch (field.type) {\n case 'integer':\n fields[key] = new InquiryField.Integer(Number.parseInt(field.value));\n break;\n case 'boolean':\n fields[key] = new InquiryField.Boolean(field.value);\n break;\n case 'string':\n fields[key] = new InquiryField.String(field.value);\n break;\n default:\n fields[key] = new InquiryField.Unknown(field.type);\n break;\n }\n }\n\n let collectedData: CollectedData | null = null;\n\n let stepData = event.collectedData?.stepData;\n if (stepData != null) {\n // Translate the step data from JSON to actual class objects\n let translatedStepData = [];\n\n for (let stepDatum of stepData) {\n switch (stepDatum.type) {\n case 'DocumentStepData':\n translatedStepData.push(\n Object.assign(new DocumentStepData(), stepDatum)\n );\n break;\n case 'GovernmentIdStepData':\n translatedStepData.push(\n Object.assign(new GovernmentIdStepData(), stepDatum)\n );\n break;\n case 'SelfieStepData':\n translatedStepData.push(\n Object.assign(new SelfieStepData(), stepDatum)\n );\n break;\n case 'UiStepData':\n translatedStepData.push(Object.assign(new UiStepData(), stepDatum));\n break;\n }\n }\n\n collectedData = {\n stepData: translatedStepData,\n };\n }\n\n let extraData: ExtraData = {\n collectedData: collectedData,\n };\n\n callback(event.inquiryId, event.status, fields, extraData);\n }\n}\n\nexport function callOnCanceledCallback(\n event: { inquiryId?: string; sessionToken?: string },\n callback: OnCanceledCallback | undefined\n) {\n if (callback) callback(event.inquiryId, event.sessionToken);\n}\n\nexport function callOnErrorCallback(\n event: { debugMessage: string; errorCode?: string },\n callback: OnErrorCallback | undefined\n) {\n if (callback) callback(new Error(event.debugMessage), event.errorCode);\n}\n\nexport function callOnReadyCallback(callback: OnReadyCallback | undefined) {\n if (callback) callback();\n}\n\nexport function callOnEventCallback(\n event: { event: any },\n callback: OnEventCallback | undefined\n) {\n if (callback) {\n const parsedEvent = InquiryEvent.fromJson(event.event);\n if (parsedEvent) {\n callback(parsedEvent);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
package/lib/typescript/util.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ExternalCollectedData, OnCanceledCallback, OnCompleteCallback, OnErrorCallback, OnReadyCallback } from './callbacks';
|
|
1
|
+
import type { ExternalCollectedData, OnCanceledCallback, OnCompleteCallback, OnErrorCallback, OnEventCallback, OnReadyCallback } from './callbacks';
|
|
2
2
|
import { RawInquiryField } from './fields';
|
|
3
3
|
export declare function processThemeValues(themeObject: Object): {
|
|
4
4
|
[key: string]: string;
|
|
@@ -18,3 +18,6 @@ export declare function callOnErrorCallback(event: {
|
|
|
18
18
|
errorCode?: string;
|
|
19
19
|
}, callback: OnErrorCallback | undefined): void;
|
|
20
20
|
export declare function callOnReadyCallback(callback: OnReadyCallback | undefined): void;
|
|
21
|
+
export declare function callOnEventCallback(event: {
|
|
22
|
+
event: any;
|
|
23
|
+
}, callback: OnEventCallback | undefined): void;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-persona",
|
|
3
3
|
"title": "React Native Persona",
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.30.1",
|
|
5
5
|
"description": "Launch a mobile native implementation of the Persona inquiry flow from React Native.",
|
|
6
6
|
"homepage": "https://docs.withpersona.com/docs/react-native-sdk-integration",
|
|
7
7
|
"bugs": "https://github.com/persona-id/persona-inquiry-sdk-public",
|
package/src/InquiryEvent.ts
CHANGED
|
@@ -42,6 +42,8 @@ export namespace InquiryEvent {
|
|
|
42
42
|
|
|
43
43
|
const isStart = (event: any): event is Start => {
|
|
44
44
|
return (
|
|
45
|
+
event != null &&
|
|
46
|
+
typeof event === 'object' &&
|
|
45
47
|
event.type === 'start' &&
|
|
46
48
|
event.inquiryId !== undefined &&
|
|
47
49
|
event.sessionToken !== undefined
|
|
@@ -50,6 +52,8 @@ export namespace InquiryEvent {
|
|
|
50
52
|
|
|
51
53
|
const isPageChange = (event: any): event is PageChange => {
|
|
52
54
|
return (
|
|
55
|
+
event != null &&
|
|
56
|
+
typeof event === 'object' &&
|
|
53
57
|
event.type === 'page_change' &&
|
|
54
58
|
event.name !== undefined &&
|
|
55
59
|
event.path !== undefined
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
callOnCanceledCallback,
|
|
6
6
|
callOnCompleteCallback,
|
|
7
7
|
callOnErrorCallback,
|
|
8
|
+
callOnEventCallback,
|
|
8
9
|
callOnReadyCallback,
|
|
9
10
|
} from './util';
|
|
10
11
|
import type {
|
|
@@ -56,6 +57,7 @@ export default function PersonaInquiryView(props: {
|
|
|
56
57
|
onComplete: OnCompleteCallback;
|
|
57
58
|
onCanceled: OnCanceledCallback;
|
|
58
59
|
onError: OnErrorCallback;
|
|
60
|
+
onEvent?: OnEventCallback;
|
|
59
61
|
onReady: OnReadyCallback;
|
|
60
62
|
}) {
|
|
61
63
|
const ref = useRef(null);
|
|
@@ -91,6 +93,13 @@ export default function PersonaInquiryView(props: {
|
|
|
91
93
|
[props.onError]
|
|
92
94
|
);
|
|
93
95
|
|
|
96
|
+
const _onEvent = useCallback(
|
|
97
|
+
(event: any) => {
|
|
98
|
+
callOnEventCallback(event.nativeEvent, props.onEvent);
|
|
99
|
+
},
|
|
100
|
+
[props.onEvent]
|
|
101
|
+
);
|
|
102
|
+
|
|
94
103
|
const _onReady = useCallback(() => {
|
|
95
104
|
callOnReadyCallback(props.onReady);
|
|
96
105
|
}, [props.onReady]);
|
|
@@ -102,6 +111,7 @@ export default function PersonaInquiryView(props: {
|
|
|
102
111
|
onComplete={_onComplete}
|
|
103
112
|
onCanceled={_onCanceled}
|
|
104
113
|
onError={_onError}
|
|
114
|
+
onEvent={_onEvent}
|
|
105
115
|
onReady={_onReady}
|
|
106
116
|
ref={ref}
|
|
107
117
|
/>
|
package/src/util.ts
CHANGED
|
@@ -5,9 +5,11 @@ import type {
|
|
|
5
5
|
OnCanceledCallback,
|
|
6
6
|
OnCompleteCallback,
|
|
7
7
|
OnErrorCallback,
|
|
8
|
+
OnEventCallback,
|
|
8
9
|
OnReadyCallback,
|
|
9
10
|
} from './callbacks';
|
|
10
11
|
import { Fields, InquiryField, RawInquiryField } from './fields';
|
|
12
|
+
import { InquiryEvent } from './InquiryEvent';
|
|
11
13
|
import {
|
|
12
14
|
DocumentStepData,
|
|
13
15
|
GovernmentIdStepData,
|
|
@@ -135,3 +137,15 @@ export function callOnErrorCallback(
|
|
|
135
137
|
export function callOnReadyCallback(callback: OnReadyCallback | undefined) {
|
|
136
138
|
if (callback) callback();
|
|
137
139
|
}
|
|
140
|
+
|
|
141
|
+
export function callOnEventCallback(
|
|
142
|
+
event: { event: any },
|
|
143
|
+
callback: OnEventCallback | undefined
|
|
144
|
+
) {
|
|
145
|
+
if (callback) {
|
|
146
|
+
const parsedEvent = InquiryEvent.fromJson(event.event);
|
|
147
|
+
if (parsedEvent) {
|
|
148
|
+
callback(parsedEvent);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|