Added new feature to select and deselect torrent files
Use case: If doiwnloading a tv show with 10 seasons and 500 files, I want to only download say 3 of those files, so that they can download quicker and i can start watching faster. This allows customers to have a better UX experience
This commit is contained in:
parent
e61501f13f
commit
935bacf551
2 changed files with 40 additions and 1 deletions
|
|
@ -253,6 +253,33 @@ module.exports = class TorrentListController {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
selectAllFiles (infoHash) {
|
||||||
|
const torrentSummary = TorrentSummary.getByKey(this.state, infoHash)
|
||||||
|
if (!torrentSummary || !torrentSummary.files || !torrentSummary.selections) return
|
||||||
|
|
||||||
|
// Set all selections to true
|
||||||
|
torrentSummary.selections = torrentSummary.files.map(() => true)
|
||||||
|
|
||||||
|
// Update WebTorrent if the torrent is active
|
||||||
|
if (torrentSummary.status !== 'paused') {
|
||||||
|
ipcRenderer.send('wt-select-files', infoHash, torrentSummary.selections)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
deselectAllFiles (infoHash) {
|
||||||
|
const torrentSummary = TorrentSummary.getByKey(this.state, infoHash)
|
||||||
|
if (!torrentSummary || !torrentSummary.files || !torrentSummary.selections) return
|
||||||
|
|
||||||
|
// Set all selections to false
|
||||||
|
torrentSummary.selections = torrentSummary.files.map(() => false)
|
||||||
|
|
||||||
|
// Update WebTorrent if the torrent is active
|
||||||
|
if (torrentSummary.status !== 'paused') {
|
||||||
|
ipcRenderer.send('wt-select-files', infoHash, torrentSummary.selections)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
openTorrentContextMenu (infoHash) {
|
openTorrentContextMenu (infoHash) {
|
||||||
const torrentSummary = TorrentSummary.getByKey(this.state, infoHash)
|
const torrentSummary = TorrentSummary.getByKey(this.state, infoHash)
|
||||||
const menu = new remote.Menu()
|
const menu = new remote.Menu()
|
||||||
|
|
@ -271,6 +298,16 @@ module.exports = class TorrentListController {
|
||||||
type: 'separator'
|
type: 'separator'
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
menu.append(new remote.MenuItem({
|
||||||
|
label: 'Select All Files',
|
||||||
|
click: () => this.selectAllFiles(torrentSummary.infoHash)
|
||||||
|
}))
|
||||||
|
|
||||||
|
menu.append(new remote.MenuItem({
|
||||||
|
label: 'Deselect All Files',
|
||||||
|
click: () => this.deselectAllFiles(torrentSummary.infoHash)
|
||||||
|
}))
|
||||||
|
|
||||||
if (torrentSummary.files) {
|
if (torrentSummary.files) {
|
||||||
menu.append(new remote.MenuItem({
|
menu.append(new remote.MenuItem({
|
||||||
label: process.platform === 'darwin' ? 'Show in Finder' : 'Show in Folder',
|
label: process.platform === 'darwin' ? 'Show in Finder' : 'Show in Folder',
|
||||||
|
|
|
||||||
|
|
@ -271,7 +271,9 @@ const dispatchHandlers = {
|
||||||
controllers.torrentList().saveTorrentFileAs(torrentKey),
|
controllers.torrentList().saveTorrentFileAs(torrentKey),
|
||||||
prioritizeTorrent: (infoHash) => controllers.torrentList().prioritizeTorrent(infoHash),
|
prioritizeTorrent: (infoHash) => controllers.torrentList().prioritizeTorrent(infoHash),
|
||||||
resumePausedTorrents: () => controllers.torrentList().resumePausedTorrents(),
|
resumePausedTorrents: () => controllers.torrentList().resumePausedTorrents(),
|
||||||
|
selectAllFiles: (infoHash) => controllers.torrentList().selectAllFiles(infoHash),
|
||||||
|
deselectAllFiles: (infoHash) => controllers.torrentList().deselectAllFiles(infoHash),
|
||||||
|
|
||||||
// Playback
|
// Playback
|
||||||
playFile: (infoHash, index) => controllers.playback().playFile(infoHash, index),
|
playFile: (infoHash, index) => controllers.playback().playFile(infoHash, index),
|
||||||
playPause: () => controllers.playback().playPause(),
|
playPause: () => controllers.playback().playPause(),
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue