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 ─────────────────────────────────────────────────
|
// ── 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;
|
||||||
|
|||||||
@@ -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?.();
|
||||||
|
|||||||
Reference in New Issue
Block a user