import clsx from 'clsx'; import { ZodError } from 'zod'; import { type AxiosError, isAxiosError } from '@/backend/api-transport'; import { isResponseHtml } from '@/utils/utils'; import { PrettyJson } from './view'; export type ErrorData = string | Error | AxiosError | ZodError; interface InfoErrorProps { error: ErrorData; } export function DescribeError({ error }: { error: ErrorData }) { if (!error) { return

Ошибки отсутствуют

; } else if (typeof error === 'string') { return

{error}

; } else if (error instanceof ZodError) { return (

Ошибка валидации данных

;
); } else if (!isAxiosError(error)) { return (

Error: {error.name}

Message: {error.message}

{error.stack &&
{error.stack}
}
); } if (!error?.response) { return

Нет ответа от сервера

; } if (error.response.status === 404) { return (

{'Обращение к несуществующему API'}

); } if (error.response.status === 403 && error.message.includes('CSRF')) { return (

{'Соединение с сервером потеряно. Перезагрузите страницу'}

); } // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const isHtml = isResponseHtml(error.response); return (

Ошибка

{error.message}

{error.response.data && ( <>

Описание

{isHtml ?
: null} {!isHtml ? : null} )}
); } export function InfoError({ error }: InfoErrorProps) { return (

Пожалуйста сделайте скриншот и отправьте вместе с описанием ситуации на почту portal@acconcept.ru


Для продолжения работы перезагрузите страницу

); }