Fix: Modell-Ordner wird nicht mehr leer angelegt beim Bearbeiten
This commit is contained in:
@@ -200,6 +200,18 @@ router.post('/', authenticate, (req, res) => {
|
||||
|
||||
// ── 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
|
||||
router.post('/ensure-folder', authenticate, (req, res) => {
|
||||
const uid = req.user.id;
|
||||
|
||||
@@ -147,13 +147,15 @@ export default function Kalkulator3D({ toast, editData, onEditDone, mobile, setA
|
||||
const modelFileRef = useRef(null);
|
||||
const sv = (k, v) => setVars(p => ({ ...p, [k]: v }));
|
||||
|
||||
// Im Bearbeitungsmodus: existierende Dateien laden
|
||||
// Im Bearbeitungsmodus: existierende Dateien laden (ohne Ordner zu erstellen)
|
||||
useEffect(() => {
|
||||
if (!editData?.id || !editData?.name) return;
|
||||
(async () => {
|
||||
try {
|
||||
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 } });
|
||||
const base = await api(`/tools/dateien/find-folder?name=3D-Modelle`);
|
||||
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);
|
||||
const data = await api(`/tools/dateien?folder_id=${sub.id}`);
|
||||
setExistingFiles(data.own || []);
|
||||
@@ -201,9 +203,17 @@ export default function Kalkulator3D({ toast, editData, onEditDone, mobile, setA
|
||||
if (editData?.id) {
|
||||
await api(`/tools/kalkulator3d/${editData.id}`, { method:'PUT', body:payload });
|
||||
// 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();
|
||||
form.append('folder_id', modelFolderId);
|
||||
form.append('folder_id', folderId);
|
||||
for (const f of modelFiles) form.append('files', f);
|
||||
await fetch('/api/tools/dateien/upload-3d', {
|
||||
method:'POST',
|
||||
@@ -211,8 +221,7 @@ export default function Kalkulator3D({ toast, editData, onEditDone, mobile, setA
|
||||
body: form,
|
||||
});
|
||||
setModelFiles([]);
|
||||
// Dateien neu laden
|
||||
const data = await api(`/tools/dateien?folder_id=${modelFolderId}`);
|
||||
const data = await api(`/tools/dateien?folder_id=${folderId}`);
|
||||
setExistingFiles(data.own || []);
|
||||
}
|
||||
toast('Aktualisiert ✓'); onEditDone?.();
|
||||
|
||||
Reference in New Issue
Block a user