Dock icon should accept all file types (fix #156)

This commit is contained in:
Feross Aboukhadijeh
2016-03-19 02:48:45 -07:00
parent 33a9e7e93d
commit 309e509a76
3 changed files with 29 additions and 14 deletions

View File

@@ -154,14 +154,23 @@ function postDarwinism () {
]) ])
var infoPlist = plist.parse(fs.readFileSync(infoPlistPath).toString()) var infoPlist = plist.parse(fs.readFileSync(infoPlistPath).toString())
infoPlist['CFBundleDocumentTypes'] = [{ infoPlist.CFBundleDocumentTypes = [
{
CFBundleTypeExtensions: [ 'torrent' ], CFBundleTypeExtensions: [ 'torrent' ],
CFBundleTypeIconFile: 'WebTorrentFile.icns', CFBundleTypeIconFile: 'WebTorrentFile.icns',
CFBundleTypeName: 'BitTorrent Document', CFBundleTypeName: 'BitTorrent Document',
CFBundleTypeRole: 'Editor', CFBundleTypeRole: 'Editor',
LSHandlerRank: 'Owner', LSHandlerRank: 'Owner',
LSItemContentTypes: [ 'org.bittorrent.torrent' ] LSItemContentTypes: [ 'org.bittorrent.torrent' ]
}] },
{
CFBundleTypeName: 'Any',
CFBundleTypeOSTypes: [ '****' ],
CFBundleTypeRole: 'Editor',
LSTypeIsPackage: false,
LSHandlerRank: 'Owner'
}
]
fs.writeFileSync(infoPlistPath, plist.build(infoPlist)) fs.writeFileSync(infoPlistPath, plist.build(infoPlist))
cp.execSync(`cp ${webTorrentFileIconPath} ${resourcesPath}`) cp.execSync(`cp ${webTorrentFileIconPath} ${resourcesPath}`)

View File

@@ -42,5 +42,5 @@ ipc.init()
function onOpen (e, torrentId) { function onOpen (e, torrentId) {
e.preventDefault() e.preventDefault()
windows.main.send('dispatch', 'addTorrent', torrentId) windows.main.send('dispatch', 'openFiles', torrentId)
} }

View File

@@ -89,7 +89,7 @@ function init () {
detectDevices() detectDevices()
// ...drag and drop a torrent or video file to play or seed // ...drag and drop a torrent or video file to play or seed
dragDrop('body', onFiles) dragDrop('body', (files) => dispatch('openFiles', files))
// ...same thing if you paste a torrent // ...same thing if you paste a torrent
document.addEventListener('paste', onPaste) document.addEventListener('paste', onPaste)
@@ -159,6 +159,9 @@ function dispatch (action, ...args) {
if (['videoMouseMoved', 'playbackJump'].indexOf(action) < 0) { if (['videoMouseMoved', 'playbackJump'].indexOf(action) < 0) {
console.log('dispatch: %s %o', action, args) /* log user interactions, but don't spam */ console.log('dispatch: %s %o', action, args) /* log user interactions, but don't spam */
} }
if (action === 'openFiles') {
openFiles(args[0] /* files */)
}
if (action === 'addTorrent') { if (action === 'addTorrent') {
addTorrent(args[0] /* torrent */) addTorrent(args[0] /* torrent */)
} }
@@ -319,14 +322,16 @@ function updateClientProgress () {
state.dock.progress = progress state.dock.progress = progress
} }
function onFiles (files) { function openFiles (files) {
if (!Array.isArray(files)) files = [ files ]
// .torrent file = start downloading the torrent // .torrent file = start downloading the torrent
files.filter(isTorrentFile).forEach(function (torrentFile) { files.filter(isTorrentFile).forEach(function (torrentFile) {
dispatch('addTorrent', torrentFile) addTorrent(torrentFile)
}) })
// everything else = seed these files // everything else = seed these files
dispatch('seed', files.filter(isNotTorrentFile)) seed(files.filter(isNotTorrentFile))
} }
function onPaste (e) { function onPaste (e) {
@@ -341,7 +346,8 @@ function onPaste (e) {
} }
function isTorrentFile (file) { function isTorrentFile (file) {
var extname = path.extname(file.name).toLowerCase() var name = typeof file === 'string' ? file : file.name
var extname = path.extname(name).toLowerCase()
return extname === '.torrent' return extname === '.torrent'
} }