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',
|
||||
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
|
||||
deleteTorrent (infoHash, deleteData) {
|
||||
ipcRenderer.send('wt-stop-torrenting', infoHash)
|
||||
@@ -227,6 +234,26 @@ module.exports = class TorrentListController {
|
||||
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) {
|
||||
if (this.state.selectedInfoHash === infoHash) {
|
||||
this.state.selectedInfoHash = null
|
||||
|
||||
@@ -250,6 +250,10 @@ const dispatchHandlers = {
|
||||
controllers.torrentList().confirmDeleteTorrent(infoHash, deleteData),
|
||||
'deleteTorrent': (infoHash, deleteData) =>
|
||||
controllers.torrentList().deleteTorrent(infoHash, deleteData),
|
||||
'confirmDeleteAllTorrents': (deleteData) =>
|
||||
controllers.torrentList().confirmDeleteAllTorrents(deleteData),
|
||||
'deleteAllTorrents': (deleteData) =>
|
||||
controllers.torrentList().deleteAllTorrents(deleteData),
|
||||
'toggleSelectTorrent': (infoHash) =>
|
||||
controllers.torrentList().toggleSelectTorrent(infoHash),
|
||||
'openTorrentContextMenu': (infoHash) =>
|
||||
|
||||
@@ -24,7 +24,9 @@ const Modals = {
|
||||
),
|
||||
'remove-torrent-modal': createGetter(() => require('../components/remove-torrent-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'
|
||||
|
||||
Reference in New Issue
Block a user