Fix playback + download of default torrents
There was a terrible bug introduced in 0809e20a6e -- clicking play on any of the default torrents in a fresh install of the app would fail and result in a 'path missing' error.
This fixes the bug, and also adds a migration step to clean up resulting broken config files
This commit is contained in:
@@ -84,21 +84,30 @@ module.exports = class TorrentListController {
|
|||||||
var s = TorrentSummary.getByKey(this.state, torrentKey)
|
var s = TorrentSummary.getByKey(this.state, torrentKey)
|
||||||
if (!s) throw new Error('Missing key: ' + torrentKey)
|
if (!s) throw new Error('Missing key: ' + torrentKey)
|
||||||
|
|
||||||
// Use Downloads folder by default
|
// New torrent: give it a path
|
||||||
if (!s.path) s.path = this.state.saved.prefs.downloadPath
|
if (!s.path) {
|
||||||
|
// Use Downloads folder by default
|
||||||
|
s.path = this.state.saved.prefs.downloadPath
|
||||||
|
return start()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Existing torrent: check that the path is still there
|
||||||
fs.stat(TorrentSummary.getFileOrFolder(s), function (err) {
|
fs.stat(TorrentSummary.getFileOrFolder(s), function (err) {
|
||||||
if (err) {
|
if (err) {
|
||||||
s.error = 'path-missing'
|
s.error = 'path-missing'
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
start()
|
||||||
|
})
|
||||||
|
|
||||||
|
function start () {
|
||||||
ipcRenderer.send('wt-start-torrenting',
|
ipcRenderer.send('wt-start-torrenting',
|
||||||
s.torrentKey,
|
s.torrentKey,
|
||||||
TorrentSummary.getTorrentID(s),
|
TorrentSummary.getTorrentID(s),
|
||||||
s.path,
|
s.path,
|
||||||
s.fileModtimes,
|
s.fileModtimes,
|
||||||
s.selections)
|
s.selections)
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: use torrentKey, not infoHash
|
// TODO: use torrentKey, not infoHash
|
||||||
|
|||||||
@@ -4,8 +4,10 @@ module.exports = {
|
|||||||
run
|
run
|
||||||
}
|
}
|
||||||
|
|
||||||
var semver = require('semver')
|
const semver = require('semver')
|
||||||
var config = require('../../config')
|
const config = require('../../config')
|
||||||
|
const TorrentSummary = require('./torrent-summary')
|
||||||
|
const fs = require('fs')
|
||||||
|
|
||||||
// Change `state.saved` (which will be saved back to config.json on exit) as
|
// Change `state.saved` (which will be saved back to config.json on exit) as
|
||||||
// needed, for example to deal with config.json format changes across versions
|
// needed, for example to deal with config.json format changes across versions
|
||||||
@@ -110,4 +112,26 @@ function migrate_0_12_0 (saved) {
|
|||||||
saved.prefs.openExternalPlayer = saved.prefs.playInVlc
|
saved.prefs.openExternalPlayer = saved.prefs.playInVlc
|
||||||
}
|
}
|
||||||
delete saved.prefs.playInVlc
|
delete saved.prefs.playInVlc
|
||||||
|
|
||||||
|
// Undo a terrible bug where clicking Play on a default torrent on a fresh
|
||||||
|
// install results in a "path missing" error
|
||||||
|
// See https://github.com/feross/webtorrent-desktop/pull/806
|
||||||
|
var defaultTorrentFiles = [
|
||||||
|
'6a9759bffd5c0af65319979fb7832189f4f3c35d.torrent',
|
||||||
|
'88594aaacbde40ef3e2510c47374ec0aa396c08e.torrent',
|
||||||
|
'6a02592d2bbc069628cd5ed8a54f88ee06ac0ba5.torrent',
|
||||||
|
'02767050e0be2fd4db9a2ad6c12416ac806ed6ed.torrent',
|
||||||
|
'3ba219a8634bf7bae3d848192b2da75ae995589d.torrent'
|
||||||
|
]
|
||||||
|
saved.torrents.forEach(function (torrentSummary) {
|
||||||
|
if (!defaultTorrentFiles.includes(torrentSummary.torrentFileName)) return
|
||||||
|
var fileOrFolder = TorrentSummary.getFileOrFolder(torrentSummary)
|
||||||
|
if (!fileOrFolder) return
|
||||||
|
try {
|
||||||
|
fs.statSync(fileOrFolder)
|
||||||
|
} catch (e) {
|
||||||
|
// Default torrent with "missing path" error. Clear path.
|
||||||
|
delete torrentSummary.path
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user