diff --git a/src/widgets/FilesDrawer/UploadDocumentsModal.tsx b/src/widgets/FilesDrawer/UploadDocumentsModal.tsx
index 0be0398..a0bf0d5 100644
--- a/src/widgets/FilesDrawer/UploadDocumentsModal.tsx
+++ b/src/widgets/FilesDrawer/UploadDocumentsModal.tsx
@@ -71,8 +71,8 @@ export function UploadDocumentsModal({ legalEntityId, versionId, open, onClose,
message={`Отклонено: ${summary.rejected.length}`}
description={
- {summary.rejected.map((r) => (
- -
+ {summary.rejected.map((r, i) => (
+
-
{r.name} — {r.reason}
))}
diff --git a/src/widgets/FilesDrawer/useLegalEntityFiles.ts b/src/widgets/FilesDrawer/useLegalEntityFiles.ts
index e01de93..df6e399 100644
--- a/src/widgets/FilesDrawer/useLegalEntityFiles.ts
+++ b/src/widgets/FilesDrawer/useLegalEntityFiles.ts
@@ -12,6 +12,7 @@ export function useLegalEntityFiles(legalEntityId: string | null, open: boolean)
const [loading, setLoading] = useState(false);
const requestRef = useRef(0);
const inFlightRef = useRef(false);
+ const errorShownRef = useRef(false);
const reload = useCallback(async () => {
if (!legalEntityId) return;
@@ -20,9 +21,16 @@ export function useLegalEntityFiles(legalEntityId: string | null, open: boolean)
setLoading(true);
try {
const items = await listLegalEntityFiles(legalEntityId);
- if (requestId === requestRef.current) setFiles(items);
+ if (requestId === requestRef.current) {
+ setFiles(items);
+ errorShownRef.current = false;
+ }
} catch (e: unknown) {
- if (requestId === requestRef.current) message.error(e instanceof ApiError ? e.message : 'Не удалось получить файлы');
+ // при опросе показываем ошибку один раз на серию; флаг сбрасывается после первого успешного ответа
+ if (requestId === requestRef.current && !errorShownRef.current) {
+ errorShownRef.current = true;
+ message.error(e instanceof ApiError ? e.message : 'Не удалось получить файлы');
+ }
} finally {
if (requestId === requestRef.current) {
inFlightRef.current = false;
@@ -32,14 +40,13 @@ export function useLegalEntityFiles(legalEntityId: string | null, open: boolean)
}, [legalEntityId]);
useEffect(() => {
- if (open) {
- void reload();
- } else {
- requestRef.current++; // ответы после закрытия не применяем
- inFlightRef.current = false;
- setFiles([]);
- }
- }, [open, reload]);
+ // при смене ЮЛ / закрытии панели: старые ответы не применяем, файлы прежнего ЮЛ очищаем
+ requestRef.current++;
+ inFlightRef.current = false;
+ errorShownRef.current = false;
+ setFiles([]);
+ if (open && legalEntityId) void reload();
+ }, [open, legalEntityId, reload]);
const pending = hasPendingFiles(files);
useEffect(() => {