accounts-frontend/packages/app/components/auth/authError/AuthError.tsx

41 lines
1.1 KiB
TypeScript
Raw Normal View History

import React, { ComponentType, useEffect } from 'react';
import { resolve as resolveError } from 'app/services/errorsDict';
import { PanelBodyHeader } from 'app/components/ui/Panel';
import { ValidationError } from 'app/components/ui/form/FormModel';
interface Props {
2020-05-24 04:38:24 +05:30
error: ValidationError;
onClose?: () => void;
}
let autoHideTimer: number | null = null;
function resetTimeout(): void {
2020-05-24 04:38:24 +05:30
if (autoHideTimer) {
clearTimeout(autoHideTimer);
autoHideTimer = null;
}
}
const AuthError: ComponentType<Props> = ({ error, onClose }) => {
2020-05-24 04:38:24 +05:30
useEffect(() => {
resetTimeout();
if (onClose && typeof error !== 'string' && error.payload && error.payload.canRepeatIn) {
const msLeft = error.payload.canRepeatIn * 1000;
// 1500 to let the user see, that time is elapsed
setTimeout(onClose, msLeft - Date.now() + 1500);
}
return resetTimeout;
}, [error, onClose]);
return (
<PanelBodyHeader type="error" onClose={onClose} data-testid="auth-error">
2020-05-24 04:38:24 +05:30
{resolveError(error)}
</PanelBodyHeader>
);
};
export default AuthError;