Show error when drag-dropping hidden files
...or anytime the user tries to create a torrent consisting only of hidden files, specifically dotfiles Fixes #586
This commit is contained in:
@@ -8,7 +8,7 @@ var createTorrent = require('create-torrent')
|
|||||||
var path = require('path')
|
var path = require('path')
|
||||||
var prettyBytes = require('prettier-bytes')
|
var prettyBytes = require('prettier-bytes')
|
||||||
|
|
||||||
var {dispatch} = require('../lib/dispatcher')
|
var {dispatch, dispatcher} = require('../lib/dispatcher')
|
||||||
|
|
||||||
function CreateTorrentPage (state) {
|
function CreateTorrentPage (state) {
|
||||||
var info = state.location.current()
|
var info = state.location.current()
|
||||||
@@ -17,18 +17,15 @@ function CreateTorrentPage (state) {
|
|||||||
var files = info.files
|
var files = info.files
|
||||||
.filter((f) => !f.name.startsWith('.'))
|
.filter((f) => !f.name.startsWith('.'))
|
||||||
.map((f) => ({name: f.name, path: f.path, size: f.size}))
|
.map((f) => ({name: f.name, path: f.path, size: f.size}))
|
||||||
|
if (files.length === 0) return CreateTorrentErrorPage()
|
||||||
|
|
||||||
// First, extract the base folder that the files are all in
|
// First, extract the base folder that the files are all in
|
||||||
var pathPrefix = info.folderPath
|
var pathPrefix = info.folderPath
|
||||||
if (!pathPrefix) {
|
if (!pathPrefix) {
|
||||||
if (files.length > 0) {
|
|
||||||
pathPrefix = files.map((x) => x.path).reduce(findCommonPrefix)
|
pathPrefix = files.map((x) => x.path).reduce(findCommonPrefix)
|
||||||
if (!pathPrefix.endsWith('/') && !pathPrefix.endsWith('\\')) {
|
if (!pathPrefix.endsWith('/') && !pathPrefix.endsWith('\\')) {
|
||||||
pathPrefix = path.dirname(pathPrefix)
|
pathPrefix = path.dirname(pathPrefix)
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
pathPrefix = files[0]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sanity check: show the number of files and total size
|
// Sanity check: show the number of files and total size
|
||||||
@@ -133,6 +130,27 @@ function CreateTorrentPage (state) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function CreateTorrentErrorPage () {
|
||||||
|
return hx`
|
||||||
|
<div class='create-torrent-page'>
|
||||||
|
<h2>Create torrent</h2>
|
||||||
|
<p class="torrent-info">
|
||||||
|
<p>
|
||||||
|
Sorry, you must select at least one file that is not a hidden file.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Hidden files, starting with a . character, are not included.
|
||||||
|
</p>
|
||||||
|
</p>
|
||||||
|
<p class="float-right">
|
||||||
|
<button class='button-flat light' onclick=${dispatcher('back')}>
|
||||||
|
Cancel
|
||||||
|
</button>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
`
|
||||||
|
}
|
||||||
|
|
||||||
// Finds the longest common prefix
|
// Finds the longest common prefix
|
||||||
function findCommonPrefix (a, b) {
|
function findCommonPrefix (a, b) {
|
||||||
for (var i = 0; i < a.length && i < b.length; i++) {
|
for (var i = 0; i < a.length && i < b.length; i++) {
|
||||||
|
|||||||
Reference in New Issue
Block a user