react-fblibrary
Version:
FBLibrary é uma biblioteca autoral que reúne componentes e bases fundamentais para desenvolvimento eficiente. Nosso objetivo é criar um ecossistema de componentes, desde elementos simples, como inputs e botões, até layouts completos, que podem ser reutili
69 lines (58 loc) • 2.22 kB
text/typescript
import { message } from 'antd';
/**
* Hook para lidar com mensagens de erro com base no código de status e no objeto de erro.
*
* @return {Function} - Retorna uma função para manipulação de mensagens de erro.
*/
export function useHandleErrorMessage() {
const handleErrorMessage = (status: number, error: Error | null): void => {
// Mapeamento de mensagens de erro por status HTTP
const statusMessages = new Map<number, string>([
// Códigos de status 1xx
[100, 'error.continue'],
[102, 'error.processing'],
[103, 'error.protocolInteraction'],
// Códigos de status 2xx
[200, 'error.successRequest'],
[201, 'error.createdRequest'],
[204, 'error.noContent'],
[206, 'error.partialContent'],
// Códigos de status 3xx
[301, 'error.movedPermanently'],
[302, 'error.movedTemporarily'],
[303, 'error.seeOther'],
[304, 'error.notModified'],
[307, 'error.redirect'],
[308, 'error.redirect'],
// Códigos de status 4xx
[401, 'error.unauthorized'],
[403, 'error.forbidden'],
[404, 'error.notFound'],
[406, 'error.contentValidation'],
[407, 'error.proxyAuthentication'],
[409, 'error.conflict'],
[410, 'error.gone'],
[412, 'error.preconditionFailed'],
[416, 'error.requestedRangeNotSatisfiable'],
[418, 'error.teapot'],
[425, 'error.tooManyRequests'],
[451, 'error.legalAccessDenied'],
// Códigos de status 5xx
[500, 'error.internalServerError'],
[501, 'error.notImplemented'],
[502, 'error.badGateway'],
[503, 'error.serviceUnavailable'],
[504, 'error.gatewayTimeout'],
]);
// Verifica se existe uma mensagem correspondente ao status
let errorMessage = statusMessages.get(status) || "error.defaultError";
// Verifica se há erro de rede
if (error?.message?.includes('Network Error')) {
errorMessage = 'error.networkError';
}
console.error(`Erro [Status: ${status}]:`, error);
// Exibe a mensagem de erro ao usuário
message.error(errorMessage);
};
return handleErrorMessage;
}