Fix: Modell-Ordner wird nicht mehr leer angelegt beim Bearbeiten

This commit is contained in:
2026-05-28 13:02:33 +02:00
parent 2256e37e75
commit a3cf805f0b
2 changed files with 28 additions and 7 deletions

View File

@@ -200,6 +200,18 @@ router.post('/', authenticate, (req, res) => {
// ── 3D-Modelle Hilfsendpoints ───────────────────────────────────────────────── // ── 3D-Modelle Hilfsendpoints ─────────────────────────────────────────────────
// Sucht einen Ordner ohne ihn anzulegen gibt null zurück wenn nicht gefunden
router.get('/find-folder', authenticate, (req, res) => {
const uid = req.user.id;
const { name, parent_id } = req.query;
if (!name?.trim()) return res.json(null);
const parentId = parent_id ? parseInt(parent_id) : null;
const folder = parentId
? db.prepare('SELECT * FROM folders WHERE user_id=? AND name=? AND parent_id=?').get(uid, name.trim(), parentId)
: db.prepare('SELECT * FROM folders WHERE user_id=? AND name=? AND parent_id IS NULL').get(uid, name.trim());
res.json(folder ? enrichFolder(folder) : null);
});
// Stellt sicher dass ein Ordner existiert (Name + optionaler parent), gibt ihn zurück // Stellt sicher dass ein Ordner existiert (Name + optionaler parent), gibt ihn zurück
router.post('/ensure-folder', authenticate, (req, res) => { router.post('/ensure-folder', authenticate, (req, res) => {
const uid = req.user.id; const uid = req.user.id;

View File

@@ -147,13 +147,15 @@ export default function Kalkulator3D({ toast, editData, onEditDone, mobile, setA
const modelFileRef = useRef(null); const modelFileRef = useRef(null);
const sv = (k, v) => setVars(p => ({ ...p, [k]: v })); const sv = (k, v) => setVars(p => ({ ...p, [k]: v }));
// Im Bearbeitungsmodus: existierende Dateien laden // Im Bearbeitungsmodus: existierende Dateien laden (ohne Ordner zu erstellen)
useEffect(() => { useEffect(() => {
if (!editData?.id || !editData?.name) return; if (!editData?.id || !editData?.name) return;
(async () => { (async () => {
try { try {
const base = await api('/tools/dateien/ensure-folder', { body: { name: '3D-Modelle' } }); const base = await api(`/tools/dateien/find-folder?name=3D-Modelle`);
const sub = await api('/tools/dateien/ensure-folder', { body: { name: editData.name.trim(), parent_id: base.id } }); if (!base) return; // Basisordner existiert noch nicht → keine Dateien
const sub = await api(`/tools/dateien/find-folder?name=${encodeURIComponent(editData.name.trim())}&parent_id=${base.id}`);
if (!sub) return; // Unterordner existiert nicht → keine Dateien
setModelFolderId(sub.id); setModelFolderId(sub.id);
const data = await api(`/tools/dateien?folder_id=${sub.id}`); const data = await api(`/tools/dateien?folder_id=${sub.id}`);
setExistingFiles(data.own || []); setExistingFiles(data.own || []);
@@ -201,9 +203,17 @@ export default function Kalkulator3D({ toast, editData, onEditDone, mobile, setA
if (editData?.id) { if (editData?.id) {
await api(`/tools/kalkulator3d/${editData.id}`, { method:'PUT', body:payload }); await api(`/tools/kalkulator3d/${editData.id}`, { method:'PUT', body:payload });
// Neue Dateien hochladen falls vorhanden // Neue Dateien hochladen falls vorhanden
if (modelFiles.length > 0 && modelFolderId) { if (modelFiles.length > 0) {
let folderId = modelFolderId;
if (!folderId) {
// Ordner erst jetzt anlegen wenn wirklich Dateien da sind
const base = await api('/tools/dateien/ensure-folder', { body: { name: '3D-Modelle' } });
const sub = await api('/tools/dateien/ensure-folder', { body: { name: editData.name.trim(), parent_id: base.id } });
folderId = sub.id;
setModelFolderId(folderId);
}
const form = new FormData(); const form = new FormData();
form.append('folder_id', modelFolderId); form.append('folder_id', folderId);
for (const f of modelFiles) form.append('files', f); for (const f of modelFiles) form.append('files', f);
await fetch('/api/tools/dateien/upload-3d', { await fetch('/api/tools/dateien/upload-3d', {
method:'POST', method:'POST',
@@ -211,8 +221,7 @@ export default function Kalkulator3D({ toast, editData, onEditDone, mobile, setA
body: form, body: form,
}); });
setModelFiles([]); setModelFiles([]);
// Dateien neu laden const data = await api(`/tools/dateien?folder_id=${folderId}`);
const data = await api(`/tools/dateien?folder_id=${modelFolderId}`);
setExistingFiles(data.own || []); setExistingFiles(data.own || []);
} }
toast('Aktualisiert ✓'); onEditDone?.(); toast('Aktualisiert ✓'); onEditDone?.();