diff --git a/server/server.js b/server/server.js index 2c71cf4..a621d54 100644 --- a/server/server.js +++ b/server/server.js @@ -397,23 +397,34 @@ app.delete("/api/torrents/:hash", requireAuth, (req, res) => { if (!entry) return res.status(404).json({ error: "torrent bulunamadı" }); const { torrent, savePath } = entry; + const isComplete = torrent?.done || (torrent?.progress ?? 0) >= 1; + const rootFolder = savePath ? path.basename(savePath) : null; + torrent.destroy(() => { torrents.delete(req.params.hash); - const rootFolder = savePath ? path.basename(savePath) : null; - if (savePath && fs.existsSync(savePath)) { - try { - fs.rmSync(savePath, { recursive: true, force: true }); - console.log(`🗑️ ${savePath} klasörü silindi`); - } catch (err) { - console.warn(`⚠️ ${savePath} silinemedi:`, err.message); + if (!isComplete) { + if (savePath && fs.existsSync(savePath)) { + try { + fs.rmSync(savePath, { recursive: true, force: true }); + console.log(`🗑️ ${savePath} klasörü silindi`); + } catch (err) { + console.warn(`⚠️ ${savePath} silinemedi:`, err.message); + } } - } - if (rootFolder) { - removeThumbnailsForPath(rootFolder); - broadcastFileUpdate(rootFolder); + if (rootFolder) { + removeThumbnailsForPath(rootFolder); + broadcastFileUpdate(rootFolder); + } + } else { + console.log( + `ℹ️ ${req.params.hash} torrent'i tamamlandığı için yalnızca Transfers listesinden kaldırıldı; dosyalar tutuldu.` + ); } broadcastSnapshot(); - res.json({ ok: true }); + res.json({ + ok: true, + filesRemoved: !isComplete + }); }); });