Form/Documents: show http error after upload document

This commit is contained in:
vchikalkin 2024-02-02 16:28:17 +03:00
parent 54df128e56
commit 4733f2bb61
2 changed files with 36 additions and 11 deletions

View File

@ -86,7 +86,7 @@ export async function getDocuments({ pageUrlParams }: Input) {
.then((res) => res); .then((res) => res);
} }
export async function uploadDocument({ export function uploadDocument({
pageUrlParams, pageUrlParams,
document, document,
formData, formData,
@ -100,5 +100,15 @@ export async function uploadDocument({
return fetch(urls.URL_IUS + url, { return fetch(urls.URL_IUS + url, {
body: formData, body: formData,
method: 'POST', method: 'POST',
}); })
.then((res) => {
if (res.ok) {
return true;
}
return res.json();
})
.catch((error) => {
throw error as t.HttpError;
});
} }

View File

@ -9,6 +9,7 @@ import { pick } from 'radash';
import { useCallback, useContext } from 'react'; import { useCallback, useContext } from 'react';
const ERROR_UPLOAD_DOCUMENT = 'Произошла ошибка при загрузке документов'; const ERROR_UPLOAD_DOCUMENT = 'Произошла ошибка при загрузке документов';
const SUCCESS_UPLOAD_DOCUMENTS = 'Файлы успешно загружены';
export function Buttons() { export function Buttons() {
const { resetValidation } = useFormStore(); const { resetValidation } = useFormStore();
@ -30,17 +31,31 @@ export function Buttons() {
}); });
return Promise.all(uploadFiles) return Promise.all(uploadFiles)
.then(() => { .then(async (res) => {
setFormState({ status: 'success' }); const errors = res.filter((x) => typeof x !== 'boolean') as HttpError[];
setTimeout(() => {
window.location.reload(); if (!errors.length) {
}, 500); setFormState({
status: 'success',
text: SUCCESS_UPLOAD_DOCUMENTS,
});
setTimeout(() => {
window.location.reload();
}, 500);
return;
}
const error = errors.find((x) => x.errors.length)?.errors.at(0) || ERROR_UPLOAD_DOCUMENT;
setFormState({ status: 'error', text: error });
}) })
.catch((error) => { .catch((error) => {
const _error = error as HttpError; setFormState({
const text = _error?.errors?.at(0) || _error.title || ERROR_UPLOAD_DOCUMENT; status: 'error',
text: error ? JSON.stringify(error) : ERROR_UPLOAD_DOCUMENT,
setFormState({ status: 'error', text }); });
}); });
}, [formFiles, pageUrlParams, resetValidation, setFormState]); }, [formFiles, pageUrlParams, resetValidation, setFormState]);