Compare commits

..

3 Commits

Author SHA1 Message Date
Benjamin Tan
e14005abab Add "Paste Torrent Address" button to context menu.
Closes #834.
2016-10-06 18:14:26 +08:00
Benjamin Tan
382ea3d965 Disable "Show in Folder/Finder" and "Remove Data File" for unstarted torrents.
Closes #936.
2016-10-06 18:14:26 +08:00
Benjamin Tan
1b466c64e1 Use a template to build torrent list context menu. 2016-10-06 18:14:17 +08:00
4 changed files with 44 additions and 53 deletions

View File

@@ -1,13 +1,5 @@
# WebTorrent Desktop Version History
## v0.17.2 - 2016-10-10
### Fixed
- Windows: Fix impossible-to-delete "Wired CD" default torrent
- Throttle browser-window 'move' and 'resize' events
- Fix crash ("Cannot read property 'files' of null" error)
- Fix crash ("TypeError: Cannot read property 'startPiece' of undefined")
## v0.17.1 - 2016-10-03
### Changed

View File

@@ -1,7 +1,7 @@
{
"name": "webtorrent-desktop",
"description": "WebTorrent, the streaming torrent client. For Mac, Windows, and Linux.",
"version": "0.17.2",
"version": "0.17.1",
"author": {
"name": "WebTorrent, LLC",
"email": "feross@webtorrent.io",
@@ -90,7 +90,6 @@
"optionalDependencies": {
"appdmg": "^0.4.3"
},
"private": true,
"productName": "WebTorrent",
"repository": {
"type": "git",

View File

@@ -182,47 +182,51 @@ module.exports = class TorrentListController {
openTorrentContextMenu (infoHash) {
const torrentSummary = TorrentSummary.getByKey(this.state, infoHash)
const menu = new electron.remote.Menu()
const torrentStarted = !!(torrentSummary.files && torrentSummary.progress)
menu.append(new electron.remote.MenuItem({
label: 'Remove From List',
click: () => dispatch('confirmDeleteTorrent', torrentSummary.infoHash, false)
}))
menu.append(new electron.remote.MenuItem({
label: 'Remove Data File',
click: () => dispatch('confirmDeleteTorrent', torrentSummary.infoHash, true)
}))
menu.append(new electron.remote.MenuItem({
type: 'separator'
}))
if (torrentSummary.files) {
menu.append(new electron.remote.MenuItem({
label: process.platform === 'darwin' ? 'Show in Finder' : 'Show in Folder',
click: () => showItemInFolder(torrentSummary)
}))
menu.append(new electron.remote.MenuItem({
const menuTemplate = [
{
label: 'Remove From List',
click: () => dispatch('confirmDeleteTorrent', torrentSummary.infoHash, false)
},
{
label: 'Remove Data File',
enabled: torrentStarted,
click: () => dispatch('confirmDeleteTorrent', torrentSummary.infoHash, true)
},
{
type: 'separator'
}))
}
menu.append(new electron.remote.MenuItem({
label: 'Copy Magnet Link to Clipboard',
click: () => electron.clipboard.writeText(torrentSummary.magnetURI)
}))
menu.append(new electron.remote.MenuItem({
label: 'Copy Instant.io Link to Clipboard',
click: () => electron.clipboard.writeText(`https://instant.io/#${torrentSummary.infoHash}`)
}))
menu.append(new electron.remote.MenuItem({
label: 'Save Torrent File As...',
click: () => dispatch('saveTorrentFileAs', torrentSummary.torrentKey)
}))
},
{
label: process.platform === 'darwin' ? 'Show in Finder' : 'Show in Folder',
enabled: torrentStarted,
click: () => showItemInFolder(torrentSummary)
},
{
type: 'separator'
},
{
label: 'Copy Magnet Link to Clipboard',
click: () => electron.clipboard.writeText(torrentSummary.magnetURI)
},
{
label: 'Copy Instant.io Link to Clipboard',
click: () => electron.clipboard.writeText(`https://instant.io/#${torrentSummary.infoHash}`)
},
{
label: 'Save Torrent File As...',
click: () => dispatch('saveTorrentFileAs', torrentSummary.torrentKey)
},
{
type: 'separator'
},
{
label: 'Paste Torrent Address',
role: 'paste'
}
]
const menu = electron.remote.Menu.buildFromTemplate(menuTemplate)
menu.popup(electron.remote.getCurrentWindow())
}

View File

@@ -599,15 +599,12 @@ function renderLoadingBar (state) {
const torrentSummary = state.getPlayingTorrentSummary()
if (!torrentSummary.progress) {
return null
return []
}
// Find all contiguous parts of the torrent which are loaded
const prog = torrentSummary.progress
const fileProg = prog.files[state.playing.fileIndex]
if (!fileProg) return null
const parts = []
let lastPiecePresent = false
for (let i = fileProg.startPiece; i <= fileProg.endPiece; i++) {
@@ -629,7 +626,6 @@ function renderLoadingBar (state) {
return (<div key={i} className='loading-bar-part' style={style} />)
})
return (<div key='loading-bar' className='loading-bar'>{loadingBarElems}</div>)
}