feat(delete-all-torrents): added remove all torrents capability to the Transfers menu
This commit is contained in:
committed by
Mathias Rasmussen
parent
11b42e58c1
commit
b7fedb1983
@@ -288,6 +288,14 @@ function getMenuTemplate () {
|
|||||||
{
|
{
|
||||||
label: 'Resume All',
|
label: 'Resume All',
|
||||||
click: () => windows.main.dispatch('resumeAllTorrents')
|
click: () => windows.main.dispatch('resumeAllTorrents')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Remove All From List',
|
||||||
|
click: () => windows.main.dispatch('confirmDeleteAllTorrents', false)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'Remove All Data Files',
|
||||||
|
click: () => windows.main.dispatch('confirmDeleteAllTorrents', true)
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|||||||
30
src/renderer/components/delete-all-torrents-modal.js
Normal file
30
src/renderer/components/delete-all-torrents-modal.js
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
const React = require('react')
|
||||||
|
|
||||||
|
const ModalOKCancel = require('./modal-ok-cancel')
|
||||||
|
const {dispatch, dispatcher} = require('../lib/dispatcher')
|
||||||
|
|
||||||
|
module.exports = class DeleteAllTorrentsModal extends React.Component {
|
||||||
|
render () {
|
||||||
|
const {state: {modal: {deleteData}}} = this.props
|
||||||
|
const message = deleteData
|
||||||
|
? 'Are you sure you want to remove all the torrents from the list and delete the data files?'
|
||||||
|
: 'Are you sure you want to remove all the torrents from the list?'
|
||||||
|
const buttonText = deleteData ? 'REMOVE DATA' : 'REMOVE'
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<p><strong>{message}</strong></p>
|
||||||
|
<ModalOKCancel
|
||||||
|
cancelText='CANCEL'
|
||||||
|
onCancel={dispatcher('exitModal')}
|
||||||
|
okText={buttonText}
|
||||||
|
onOK={handleRemove} />
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
|
||||||
|
function handleRemove () {
|
||||||
|
dispatch('deleteAllTorrents', deleteData)
|
||||||
|
dispatch('exitModal')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -201,6 +201,13 @@ module.exports = class TorrentListController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
confirmDeleteAllTorrents (deleteData) {
|
||||||
|
this.state.modal = {
|
||||||
|
id: 'delete-all-torrents-modal',
|
||||||
|
deleteData
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// TODO: use torrentKey, not infoHash
|
// TODO: use torrentKey, not infoHash
|
||||||
deleteTorrent (infoHash, deleteData) {
|
deleteTorrent (infoHash, deleteData) {
|
||||||
ipcRenderer.send('wt-stop-torrenting', infoHash)
|
ipcRenderer.send('wt-stop-torrenting', infoHash)
|
||||||
@@ -227,6 +234,26 @@ module.exports = class TorrentListController {
|
|||||||
sound.play('DELETE')
|
sound.play('DELETE')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
deleteAllTorrents (deleteData) {
|
||||||
|
this.state.saved.torrents.forEach((summary) => {
|
||||||
|
ipcRenderer.send('wt-stop-torrenting', summary.infoHash)
|
||||||
|
|
||||||
|
// remove torrent and poster file
|
||||||
|
deleteFile(TorrentSummary.getTorrentPath(summary))
|
||||||
|
deleteFile(TorrentSummary.getPosterPath(summary))
|
||||||
|
|
||||||
|
if (deleteData) moveItemToTrash(summary)
|
||||||
|
|
||||||
|
dispatch('stateSave')
|
||||||
|
})
|
||||||
|
|
||||||
|
this.state.saved.torrents = []
|
||||||
|
|
||||||
|
// prevent user from going forward to a deleted torrent
|
||||||
|
this.state.location.clearForward('player')
|
||||||
|
sound.play('DELETE')
|
||||||
|
}
|
||||||
|
|
||||||
toggleSelectTorrent (infoHash) {
|
toggleSelectTorrent (infoHash) {
|
||||||
if (this.state.selectedInfoHash === infoHash) {
|
if (this.state.selectedInfoHash === infoHash) {
|
||||||
this.state.selectedInfoHash = null
|
this.state.selectedInfoHash = null
|
||||||
|
|||||||
@@ -250,6 +250,10 @@ const dispatchHandlers = {
|
|||||||
controllers.torrentList().confirmDeleteTorrent(infoHash, deleteData),
|
controllers.torrentList().confirmDeleteTorrent(infoHash, deleteData),
|
||||||
'deleteTorrent': (infoHash, deleteData) =>
|
'deleteTorrent': (infoHash, deleteData) =>
|
||||||
controllers.torrentList().deleteTorrent(infoHash, deleteData),
|
controllers.torrentList().deleteTorrent(infoHash, deleteData),
|
||||||
|
'confirmDeleteAllTorrents': (deleteData) =>
|
||||||
|
controllers.torrentList().confirmDeleteAllTorrents(deleteData),
|
||||||
|
'deleteAllTorrents': (deleteData) =>
|
||||||
|
controllers.torrentList().deleteAllTorrents(deleteData),
|
||||||
'toggleSelectTorrent': (infoHash) =>
|
'toggleSelectTorrent': (infoHash) =>
|
||||||
controllers.torrentList().toggleSelectTorrent(infoHash),
|
controllers.torrentList().toggleSelectTorrent(infoHash),
|
||||||
'openTorrentContextMenu': (infoHash) =>
|
'openTorrentContextMenu': (infoHash) =>
|
||||||
|
|||||||
@@ -24,7 +24,9 @@ const Modals = {
|
|||||||
),
|
),
|
||||||
'remove-torrent-modal': createGetter(() => require('../components/remove-torrent-modal')),
|
'remove-torrent-modal': createGetter(() => require('../components/remove-torrent-modal')),
|
||||||
'update-available-modal': createGetter(() => require('../components/update-available-modal')),
|
'update-available-modal': createGetter(() => require('../components/update-available-modal')),
|
||||||
'unsupported-media-modal': createGetter(() => require('../components/unsupported-media-modal'))
|
'unsupported-media-modal': createGetter(() => require('../components/unsupported-media-modal')),
|
||||||
|
'delete-all-torrents-modal':
|
||||||
|
createGetter(() => require('../components/delete-all-torrents-modal'))
|
||||||
}
|
}
|
||||||
|
|
||||||
const fontFamily = process.platform === 'win32'
|
const fontFamily = process.platform === 'win32'
|
||||||
|
|||||||
Reference in New Issue
Block a user