fix(materials): аннотация фото перезаписывает материал, а не плодит копии

Рисование поверх существующего материала (annotate) теперь обновляет ту же
запись (LS.updateMaterial url), а не создаёт новую. На бэкенде PATCH
/api/materials/:id разрешает менять поле url. Кнопка «Рисунок» (новый с нуля)
по-прежнему создаёт новый материал.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Maxim Dolgolyov
2026-06-04 14:45:01 +03:00
parent ed50cb49e5
commit 423c1001e4
2 changed files with 11 additions and 4 deletions
+9 -3
View File
@@ -412,8 +412,14 @@
if (!blob) throw new Error('Не удалось сохранить рисунок');
const fd = new FormData(); fd.append('file', blob, 'drawing.png');
const up = await LS.uploadMaterialFile(fd);
await LS.saveMaterial({ kind: 'image', title: o.title || 'Рисунок', url: up.url, sourceTitle: o.sourceTitle || null });
close(); load(); LS.toast('Сохранено в «Мои материалы»', 'success');
if (o.materialId) {
// Аннотация существующего материала — перезаписываем его, а не плодим копии
await LS.updateMaterial(o.materialId, { url: up.url });
close(); load(); LS.toast('Изменения сохранены', 'success');
} else {
await LS.saveMaterial({ kind: 'image', title: o.title || 'Рисунок', url: up.url, sourceTitle: o.sourceTitle || null });
close(); load(); LS.toast('Сохранено в «Мои материалы»', 'success');
}
} catch (e) { LS.toast(e.message || 'Ошибка', 'error'); btn.disabled = false; }
});
};
@@ -423,7 +429,7 @@
function annotate(id) {
const mt = _mats.find(x => x.id === id);
if (!mt) return;
openDrawModal({ bgImage: mt.url, title: (mt.title || 'Рисунок') + ' (разметка)', sourceTitle: mt.source_title });
openDrawModal({ materialId: mt.id, bgImage: mt.url, title: mt.title || 'Рисунок', sourceTitle: mt.source_title });
}
window.annotate = annotate;