fix: бесконечный ретрай upload 400, скобки в именах файлов, тост batch-create

- useOfflineSync: tryUploadFile/trySendAttachmentMessage бросали ошибку без
  кода статуса — постоянная 400 не распознавалась regex \b400\b и вложение
  ретраилось бесконечно (спам POST /api/upload каждые ~30 сек).
- validateFilename: разрешены скобки () в именах (типично для фото с
  телефонов; сохраняемое имя всё равно генерируется), в текст 400 добавлено
  само имя файла для диагностики.
- BatchCreateDialog: тост ошибки показывает текст сервера (из BadRequestError
  или JSON в message 5xx) вместо общего «Ошибка создания задач».
This commit is contained in:
2026-08-03 15:25:11 +03:00
parent 1d5321ed0c
commit 9a387c5db0
3 changed files with 30 additions and 7 deletions

View File

@@ -229,7 +229,9 @@ async function tryUploadFile(
if (!res.ok) {
const err = await res.json().catch(() => ({}));
throw new Error(err.error || `Ошибка загрузки: ${file.name}`);
// Код статуса в сообщении обязателен: вызывающий код отличает постоянные
// ошибки (400/401/403 → не ретраить) от временных по паттерну `\b400\b` и т.п.
throw new Error(`${res.status}: ${err.error || `Ошибка загрузки: ${file.name}`}`);
}
const data = await res.json();
return {
@@ -293,7 +295,7 @@ async function trySendAttachmentMessage(
if (!res.ok) {
const err = await res.json().catch(() => ({}));
throw new Error(err.error || 'Ошибка отправки сообщения');
throw new Error(`${res.status}: ${err.error || 'Ошибка отправки сообщения'}`);
}
}