@brightlayer-ui/react-native-auth-workflow
Version:
Re-usable workflow components for Authentication and Registration within Eaton applications.
34 lines (33 loc) • 1.41 kB
JavaScript
import { useState } from 'react';
import { useErrorContext } from '.';
export const useErrorManager = () => {
const errorConfig = useErrorContext();
const [error, setError] = useState(new Error());
const isAuthError = (err) => err.cause !== undefined;
const getErrorDisplayConfig = (err) => {
if (isAuthError(err)) {
return Object.assign(Object.assign({}, errorConfig), { dialogConfig: Object.assign(Object.assign({}, errorConfig.dialogConfig), { title: err.cause.title }), error: err.cause.errorMessage, errorOptions: err.cause.errorOptions, titleOptions: err.cause.titleOptions, onClose: () => {
setError(new Error());
} });
}
return Object.assign(Object.assign({}, errorConfig), { error: err.message, onClose: () => {
setError(new Error());
} });
};
const triggerError = (err) => {
if (isAuthError(err)) {
setError({
cause: {
title: err.cause.title,
errorMessage: err.cause.errorMessage,
errorOptions: err.cause.errorOptions,
titleOptions: err.cause.titleOptions,
},
});
}
else {
setError(err);
}
};
return { triggerError: triggerError, errorManagerConfig: getErrorDisplayConfig(error) };
};