UNPKG

onfido-sdk-ui

Version:

JavaScript SDK view layer for Onfido identity verification

55 lines (46 loc) 1.23 kB
// @flow import * as React from 'react' import { h, Component } from 'preact' import CameraError from '../CameraError' type State = { hasError: boolean, } type Props = { onError: ?string => void, isUploadFallbackDisabled: ?boolean, } export default <WrappedProps: *>( WrappedCamera: React.ComponentType<WrappedProps> ): React.ComponentType<WrappedProps & Props> => class WithFailureHandling extends Component<WrappedProps, State> { static defaultProps = { onError: () => {}, } state = { hasError: false, } handleFailure = (error) => { this.setState({ hasError: true }) this.props.onError(error) } generalError = () => { const name = this.props.isUploadFallbackDisabled ? 'CAMERA_NOT_WORKING_NO_FALLBACK' : 'CAMERA_NOT_WORKING' return { name, type: 'error' } } render() { const { hasError } = this.state return ( <WrappedCamera {...this.props} {...(hasError ? { renderError: ( <CameraError {...this.props} error={this.generalError()} /> ) } : {}) } onFailure={this.handleFailure} /> ) } }