onfido-sdk-ui
Version:
JavaScript SDK view layer for Onfido identity verification
35 lines (27 loc) • 937 B
text/typescript
import type {
DocumentTypes,
StepTypes,
StepConfig,
StepConfigMap,
} from '~types/steps'
export type FindStepCallback = <T extends StepTypes>(
type: T
) => Partial<StepConfigMap>[T]
export const buildStepFinder = (steps: StepConfig[]): FindStepCallback => {
const mappedSteps = Object.fromEntries(
steps.map((step) => [step.type, step])
) as Partial<StepConfigMap>
return (type) => mappedSteps[type]
}
export const hasOnePreselectedDocument = (steps: StepConfig[]): boolean =>
getEnabledDocuments(steps).length === 1
export const getEnabledDocuments = (steps: StepConfig[]): DocumentTypes[] => {
const findStep = buildStepFinder(steps)
const documentStep = findStep('document')
const docTypes = documentStep?.options?.documentTypes
if (!docTypes) {
return []
}
const configuredDocTypes = Object.keys(docTypes) as DocumentTypes[]
return configuredDocTypes.filter((type) => docTypes[type])
}