UNPKG

@appello/services

Version:

Services package with api / graphql

54 lines (53 loc) 2.05 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.handleApiRequestError = handleApiRequestError; const common_1 = require("@appello/common"); const axios_1 = __importDefault(require("axios")); const consts_1 = require("../../consts"); function handleApiRequestError({ error, onManualHandleError, handleDetailError, }) { if (!axios_1.default.isAxiosError(error)) { return { [consts_1.ApiErrorCodeEnum.GLOBAL_ERROR]: consts_1.ApiErrorMessagesEnum.UNKNOWN_ERROR, }; } if (onManualHandleError) { return onManualHandleError(error); } if (error.request && error.request.status === 0) { return { [consts_1.ApiErrorCodeEnum.GLOBAL_ERROR]: consts_1.ApiErrorMessagesEnum.NETWORK_ERROR, }; } if (error.response && error.response.status !== consts_1.ApiErrorStatusEnum.UNAUTHORIZED) { const data = error.response.data; if (!data || !('detail' in data)) { return { [consts_1.ApiErrorCodeEnum.GLOBAL_ERROR]: consts_1.ApiErrorMessagesEnum.SERVER_ERROR, }; } if (handleDetailError) { return handleDetailError(data.detail); } const errors = {}; (0, common_1.entries)(data.detail).forEach(([field, message]) => { if ((0, common_1.isObject)(message)) { (0, common_1.keys)(message).forEach(subField => { errors[`${field}.${subField}`] = getErrorMessage(message[subField]); }); } else { errors[field] = getErrorMessage(message); } }); return errors; } return { [consts_1.ApiErrorCodeEnum.GLOBAL_ERROR]: consts_1.ApiErrorMessagesEnum.UNKNOWN_ERROR, }; } function getErrorMessage(error) { return Array.isArray(error) ? error[0] : error; }