diff --git a/backend/src/tools/dateien/upload-share.js b/backend/src/tools/dateien/upload-share.js index 7955aed..8208084 100644 --- a/backend/src/tools/dateien/upload-share.js +++ b/backend/src/tools/dateien/upload-share.js @@ -63,6 +63,13 @@ router.delete('/:id', authenticate, (req, res) => { res.json({ ok:true }); }); +router.delete('/:id/remove', authenticate, (req, res) => { + const s = db.prepare('SELECT * FROM upload_shares WHERE id=? AND user_id=?').get(req.params.id, req.user.id); + if (!s) return res.status(404).json({ error:'Nicht gefunden' }); + db.prepare('DELETE FROM upload_shares WHERE id=?').run(s.id); + res.json({ ok:true }); +}); + router.get('/logs', authenticate, (req, res) => { if (!canUseUploadShare(req.user.id)) return res.status(403).json({ error:'Keine Berechtigung' }); const logs = db.prepare(` diff --git a/frontend/src/tools/dateien.jsx b/frontend/src/tools/dateien.jsx index 6956857..99984ce 100644 --- a/frontend/src/tools/dateien.jsx +++ b/frontend/src/tools/dateien.jsx @@ -195,6 +195,11 @@ function UploadShareManager({ toast }) { await api(`/upload-shares/${id}`, { method:'DELETE' }); load(); toast('Link deaktiviert'); }; + const removeShare = async id => { + await api(`/upload-shares/${id}/remove`, { method:'DELETE' }); + setShares(p => p.filter(s => s.id !== id)); + toast('Entfernt'); + }; const copyLink = (token) => { const url = `${window.location.origin}/u/${token}`; @@ -222,7 +227,7 @@ function UploadShareManager({ toast }) {
- 📤 Upload-Ordner + 📤 Upload-Freigabe
{folder &&
Dateien landen in: 📁 {folder.name} @@ -310,7 +315,7 @@ function UploadShareManager({ toast }) {
- {s.is_active && !expired && ( + {!!s.is_active && !expired && ( <> + {!!s.is_active && ( + + )} + {!s.is_active && ( + )}
@@ -527,7 +535,7 @@ export default function Dateien({ toast, mobile }) { ['own','Dateien', null], ['shared','Geteilt mit mir', sharedCnt||null], ['sharedByMe','Geteilt von mir', byMeCnt||null], - ['upload','📤 Upload-Ordner', null], + ['upload','📤 Upload-Freigabe', null], ].map(([k,l,cnt])=>(