react-native-persona
Version:
Launch a mobile native implementation of the Persona inquiry flow from React Native.
91 lines • 3.02 kB
JavaScript
import { InquiryField } from './fields';
import { DocumentStepData, GovernmentIdStepData, SelfieStepData, UiStepData } from './StepData';
const HEX_REGEX = /^[a-fA-F0-9]{6}$/;
export function processThemeValues(themeObject) {
const result = {};
for (const [key, value] of Object.entries(themeObject)) {
if (value === null) {
continue;
}
if (key.includes('Color')) {
let colorValue = value;
if (value[0] === '#') {
colorValue = value.slice(1);
}
if (HEX_REGEX.test(colorValue)) {
result[key] = `#${colorValue}`;
} else {
continue;
}
} else {
result[key] = value.toString();
}
}
return result;
}
export function callOnCompleteCallback(event, callback) {
if (callback) {
var _event$collectedData;
let fields = {};
for (let key of Object.keys(event.fields || {})) {
let field = event.fields[key];
if (field == undefined) {
fields[key] = new InquiryField.Unknown('null');
continue;
}
switch (field.type) {
case 'integer':
fields[key] = new InquiryField.Integer(Number.parseInt(field.value));
break;
case 'boolean':
fields[key] = new InquiryField.Boolean(field.value);
break;
case 'string':
fields[key] = new InquiryField.String(field.value);
break;
default:
fields[key] = new InquiryField.Unknown(field.type);
break;
}
}
let collectedData = null;
let stepData = (_event$collectedData = event.collectedData) === null || _event$collectedData === void 0 ? void 0 : _event$collectedData.stepData;
if (stepData != null) {
// Translate the step data from JSON to actual class objects
let translatedStepData = [];
for (let stepDatum of stepData) {
switch (stepDatum.type) {
case 'DocumentStepData':
translatedStepData.push(Object.assign(new DocumentStepData(), stepDatum));
break;
case 'GovernmentIdStepData':
translatedStepData.push(Object.assign(new GovernmentIdStepData(), stepDatum));
break;
case 'SelfieStepData':
translatedStepData.push(Object.assign(new SelfieStepData(), stepDatum));
break;
case 'UiStepData':
translatedStepData.push(Object.assign(new UiStepData(), stepDatum));
break;
}
}
collectedData = {
stepData: translatedStepData
};
}
let extraData = {
collectedData: collectedData
};
callback(event.inquiryId, event.status, fields, extraData);
}
}
export function callOnCanceledCallback(event, callback) {
if (callback) callback(event.inquiryId, event.sessionToken);
}
export function callOnErrorCallback(event, callback) {
if (callback) callback(new Error(event.debugMessage), event.errorCode);
}
export function callOnReadyCallback(callback) {
if (callback) callback();
}
//# sourceMappingURL=util.js.map