@@ -7,7 +7,7 @@ const path = require('path')
|
|||||||
let hasErrors = false
|
let hasErrors = false
|
||||||
|
|
||||||
// Find all Javascript source files
|
// Find all Javascript source files
|
||||||
const files = walkSync('src', {globs: ['**/*.js']})
|
const files = walkSync('src', { globs: ['**/*.js'] })
|
||||||
console.log('Running extra-lint on ' + files.length + ' files...')
|
console.log('Running extra-lint on ' + files.length + ' files...')
|
||||||
|
|
||||||
// Read each file, line by line
|
// Read each file, line by line
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ module.exports = {
|
|||||||
setBadge
|
setBadge
|
||||||
}
|
}
|
||||||
|
|
||||||
const {app, Menu} = require('electron')
|
const { app, Menu } = require('electron')
|
||||||
|
|
||||||
const dialog = require('./dialog')
|
const dialog = require('./dialog')
|
||||||
const log = require('./log')
|
const log = require('./log')
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ function spawnExternal (playerPath, args) {
|
|||||||
playerPath += `/Contents/MacOS/${path.basename(playerPath, '.app')}`
|
playerPath += `/Contents/MacOS/${path.basename(playerPath, '.app')}`
|
||||||
}
|
}
|
||||||
|
|
||||||
proc = cp.spawn(playerPath, args, {stdio: 'ignore'})
|
proc = cp.spawn(playerPath, args, { stdio: 'ignore' })
|
||||||
|
|
||||||
// If it works, close the modal after a second
|
// If it works, close the modal after a second
|
||||||
const closeModalTimeout = setTimeout(() =>
|
const closeModalTimeout = setTimeout(() =>
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ const chokidar = require('chokidar')
|
|||||||
const log = require('./log')
|
const log = require('./log')
|
||||||
|
|
||||||
class FolderWatcher {
|
class FolderWatcher {
|
||||||
constructor ({window, state}) {
|
constructor ({ window, state }) {
|
||||||
this.window = window
|
this.window = window
|
||||||
this.state = state
|
this.state = state
|
||||||
this.torrentsFolderPath = null
|
this.torrentsFolderPath = null
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ function init () {
|
|||||||
isReady = true
|
isReady = true
|
||||||
const state = results.state
|
const state = results.state
|
||||||
|
|
||||||
windows.main.init(state, {hidden: hidden})
|
windows.main.init(state, { hidden: hidden })
|
||||||
windows.webtorrent.init()
|
windows.webtorrent.init()
|
||||||
menu.init()
|
menu.init()
|
||||||
|
|
||||||
@@ -86,7 +86,7 @@ function init () {
|
|||||||
// Report uncaught exceptions
|
// Report uncaught exceptions
|
||||||
process.on('uncaughtException', (err) => {
|
process.on('uncaughtException', (err) => {
|
||||||
console.error(err)
|
console.error(err)
|
||||||
const error = {message: err.message, stack: err.stack}
|
const error = { message: err.message, stack: err.stack }
|
||||||
windows.main.dispatch('uncaughtError', 'main', error)
|
windows.main.dispatch('uncaughtError', 'main', error)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -131,7 +131,7 @@ function delayedInit (state) {
|
|||||||
const dock = require('./dock')
|
const dock = require('./dock')
|
||||||
const updater = require('./updater')
|
const updater = require('./updater')
|
||||||
const FolderWatcher = require('./folder-watcher')
|
const FolderWatcher = require('./folder-watcher')
|
||||||
const folderWatcher = new FolderWatcher({window: windows.main, state})
|
const folderWatcher = new FolderWatcher({ window: windows.main, state })
|
||||||
|
|
||||||
announcement.init()
|
announcement.init()
|
||||||
dock.init()
|
dock.init()
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
const React = require('react')
|
const React = require('react')
|
||||||
|
|
||||||
const {dispatcher} = require('../lib/dispatcher')
|
const { dispatcher } = require('../lib/dispatcher')
|
||||||
|
|
||||||
module.exports = class CreateTorrentErrorPage extends React.Component {
|
module.exports = class CreateTorrentErrorPage extends React.Component {
|
||||||
render () {
|
render () {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
const React = require('react')
|
const React = require('react')
|
||||||
|
|
||||||
const {dispatcher} = require('../lib/dispatcher')
|
const { dispatcher } = require('../lib/dispatcher')
|
||||||
|
|
||||||
class Header extends React.Component {
|
class Header extends React.Component {
|
||||||
render () {
|
render () {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ const RaisedButton = require('material-ui/RaisedButton').default
|
|||||||
module.exports = class ModalOKCancel extends React.Component {
|
module.exports = class ModalOKCancel extends React.Component {
|
||||||
render () {
|
render () {
|
||||||
const cancelStyle = { marginRight: 10, color: 'black' }
|
const cancelStyle = { marginRight: 10, color: 'black' }
|
||||||
const {cancelText, onCancel, okText, onOK} = this.props
|
const { cancelText, onCancel, okText, onOK } = this.props
|
||||||
return (
|
return (
|
||||||
<div className='float-right'>
|
<div className='float-right'>
|
||||||
<FlatButton
|
<FlatButton
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ const React = require('react')
|
|||||||
const TextField = require('material-ui/TextField').default
|
const TextField = require('material-ui/TextField').default
|
||||||
|
|
||||||
const ModalOKCancel = require('./modal-ok-cancel')
|
const ModalOKCancel = require('./modal-ok-cancel')
|
||||||
const {dispatch, dispatcher} = require('../lib/dispatcher')
|
const { dispatch, dispatcher } = require('../lib/dispatcher')
|
||||||
|
|
||||||
module.exports = class OpenTorrentAddressModal extends React.Component {
|
module.exports = class OpenTorrentAddressModal extends React.Component {
|
||||||
render () {
|
render () {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
const React = require('react')
|
const React = require('react')
|
||||||
|
|
||||||
const ModalOKCancel = require('./modal-ok-cancel')
|
const ModalOKCancel = require('./modal-ok-cancel')
|
||||||
const {dispatch, dispatcher} = require('../lib/dispatcher')
|
const { dispatch, dispatcher } = require('../lib/dispatcher')
|
||||||
|
|
||||||
module.exports = class RemoveTorrentModal extends React.Component {
|
module.exports = class RemoveTorrentModal extends React.Component {
|
||||||
render () {
|
render () {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ const React = require('react')
|
|||||||
const electron = require('electron')
|
const electron = require('electron')
|
||||||
|
|
||||||
const ModalOKCancel = require('./modal-ok-cancel')
|
const ModalOKCancel = require('./modal-ok-cancel')
|
||||||
const {dispatcher} = require('../lib/dispatcher')
|
const { dispatcher } = require('../lib/dispatcher')
|
||||||
|
|
||||||
module.exports = class UnsupportedMediaModal extends React.Component {
|
module.exports = class UnsupportedMediaModal extends React.Component {
|
||||||
render () {
|
render () {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ const React = require('react')
|
|||||||
const electron = require('electron')
|
const electron = require('electron')
|
||||||
|
|
||||||
const ModalOKCancel = require('./modal-ok-cancel')
|
const ModalOKCancel = require('./modal-ok-cancel')
|
||||||
const {dispatch} = require('../lib/dispatcher')
|
const { dispatch } = require('../lib/dispatcher')
|
||||||
|
|
||||||
module.exports = class UpdateAvailableModal extends React.Component {
|
module.exports = class UpdateAvailableModal extends React.Component {
|
||||||
render () {
|
render () {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
const {ipcRenderer} = require('electron')
|
const { ipcRenderer } = require('electron')
|
||||||
|
|
||||||
module.exports = class FolderWatcherController {
|
module.exports = class FolderWatcherController {
|
||||||
start () {
|
start () {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
const {ipcRenderer} = require('electron')
|
const { ipcRenderer } = require('electron')
|
||||||
const telemetry = require('../lib/telemetry')
|
const telemetry = require('../lib/telemetry')
|
||||||
const Playlist = require('../lib/playlist')
|
const Playlist = require('../lib/playlist')
|
||||||
|
|
||||||
|
|||||||
@@ -2,9 +2,9 @@ const electron = require('electron')
|
|||||||
const path = require('path')
|
const path = require('path')
|
||||||
|
|
||||||
const Cast = require('../lib/cast')
|
const Cast = require('../lib/cast')
|
||||||
const {dispatch} = require('../lib/dispatcher')
|
const { dispatch } = require('../lib/dispatcher')
|
||||||
const telemetry = require('../lib/telemetry')
|
const telemetry = require('../lib/telemetry')
|
||||||
const {UnplayableFileError, UnplayableTorrentError} = require('../lib/errors')
|
const { UnplayableFileError, UnplayableTorrentError } = require('../lib/errors')
|
||||||
const sound = require('../lib/sound')
|
const sound = require('../lib/sound')
|
||||||
const TorrentPlayer = require('../lib/torrent-player')
|
const TorrentPlayer = require('../lib/torrent-player')
|
||||||
const TorrentSummary = require('../lib/torrent-summary')
|
const TorrentSummary = require('../lib/torrent-summary')
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
const {dispatch} = require('../lib/dispatcher')
|
const { dispatch } = require('../lib/dispatcher')
|
||||||
const ipcRenderer = require('electron').ipcRenderer
|
const ipcRenderer = require('electron').ipcRenderer
|
||||||
|
|
||||||
// Controls the Preferences screen
|
// Controls the Preferences screen
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ const parallel = require('run-parallel')
|
|||||||
|
|
||||||
const remote = electron.remote
|
const remote = electron.remote
|
||||||
|
|
||||||
const {dispatch} = require('../lib/dispatcher')
|
const { dispatch } = require('../lib/dispatcher')
|
||||||
|
|
||||||
module.exports = class SubtitlesController {
|
module.exports = class SubtitlesController {
|
||||||
constructor (state) {
|
constructor (state) {
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ const ipcRenderer = require('electron').ipcRenderer
|
|||||||
|
|
||||||
const TorrentSummary = require('../lib/torrent-summary')
|
const TorrentSummary = require('../lib/torrent-summary')
|
||||||
const sound = require('../lib/sound')
|
const sound = require('../lib/sound')
|
||||||
const {dispatch} = require('../lib/dispatcher')
|
const { dispatch } = require('../lib/dispatcher')
|
||||||
|
|
||||||
module.exports = class TorrentController {
|
module.exports = class TorrentController {
|
||||||
constructor (state) {
|
constructor (state) {
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ const fs = require('fs')
|
|||||||
const path = require('path')
|
const path = require('path')
|
||||||
const electron = require('electron')
|
const electron = require('electron')
|
||||||
|
|
||||||
const {dispatch} = require('../lib/dispatcher')
|
const { dispatch } = require('../lib/dispatcher')
|
||||||
const {TorrentKeyNotFoundError} = require('../lib/errors')
|
const { TorrentKeyNotFoundError } = require('../lib/errors')
|
||||||
const sound = require('../lib/sound')
|
const sound = require('../lib/sound')
|
||||||
const TorrentSummary = require('../lib/torrent-summary')
|
const TorrentSummary = require('../lib/torrent-summary')
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
const {dispatch} = require('../lib/dispatcher')
|
const { dispatch } = require('../lib/dispatcher')
|
||||||
|
|
||||||
// Controls the UI checking for new versions of the app, prompting install
|
// Controls the UI checking for new versions of the app, prompting install
|
||||||
module.exports = class UpdateController {
|
module.exports = class UpdateController {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ module.exports = {
|
|||||||
const http = require('http')
|
const http = require('http')
|
||||||
|
|
||||||
const config = require('../../config')
|
const config = require('../../config')
|
||||||
const {CastingError} = require('./errors')
|
const { CastingError } = require('./errors')
|
||||||
|
|
||||||
// Lazy load these for a ~300ms improvement in startup time
|
// Lazy load these for a ~300ms improvement in startup time
|
||||||
let airplayer, chromecasts, dlnacasts
|
let airplayer, chromecasts, dlnacasts
|
||||||
@@ -83,7 +83,7 @@ function testPlayer (type) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function getDevices () {
|
function getDevices () {
|
||||||
return [{name: type + '-1'}, {name: type + '-2'}]
|
return [{ name: type + '-1' }, { name: type + '-2' }]
|
||||||
}
|
}
|
||||||
|
|
||||||
function open () {}
|
function open () {}
|
||||||
@@ -429,11 +429,11 @@ function toggleMenu (location) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Show a menu
|
// Show a menu
|
||||||
state.devices.castMenu = {location, devices}
|
state.devices.castMenu = { location, devices }
|
||||||
}
|
}
|
||||||
|
|
||||||
function selectDevice (index) {
|
function selectDevice (index) {
|
||||||
const {location, devices} = state.devices.castMenu
|
const { location, devices } = state.devices.castMenu
|
||||||
|
|
||||||
// Start casting
|
// Start casting
|
||||||
const player = getPlayer(location)
|
const player = getPlayer(location)
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const config = require('../../config')
|
const config = require('../../config')
|
||||||
const {InvalidSoundNameError} = require('./errors')
|
const { InvalidSoundNameError } = require('./errors')
|
||||||
const path = require('path')
|
const path = require('path')
|
||||||
|
|
||||||
const VOLUME = 0.25
|
const VOLUME = 0.25
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
const appConfig = require('application-config')('WebTorrent')
|
const appConfig = require('application-config')('WebTorrent')
|
||||||
const path = require('path')
|
const path = require('path')
|
||||||
const {EventEmitter} = require('events')
|
const { EventEmitter } = require('events')
|
||||||
|
|
||||||
const config = require('../../config')
|
const config = require('../../config')
|
||||||
|
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ function getTorrentStats (state) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Then, round all the counts and sums to the nearest power of 2
|
// Then, round all the counts and sums to the nearest power of 2
|
||||||
const ret = roundTorrentStats({count, sizeMB})
|
const ret = roundTorrentStats({ count, sizeMB })
|
||||||
ret.byStatus = {
|
ret.byStatus = {
|
||||||
new: roundTorrentStats(byStatus.new),
|
new: roundTorrentStats(byStatus.new),
|
||||||
downloading: roundTorrentStats(byStatus.downloading),
|
downloading: roundTorrentStats(byStatus.downloading),
|
||||||
@@ -198,7 +198,7 @@ function logUncaughtError (procName, e) {
|
|||||||
// Log the app version *at the time of the error*
|
// Log the app version *at the time of the error*
|
||||||
const version = config.APP_VERSION
|
const version = config.APP_VERSION
|
||||||
|
|
||||||
telemetry.uncaughtErrors.push({process: procName, message, stack, version})
|
telemetry.uncaughtErrors.push({ process: procName, message, stack, version })
|
||||||
}
|
}
|
||||||
|
|
||||||
// Turns a DOM element into a string, eg "DIV.my-class.visible"
|
// Turns a DOM element into a string, eg "DIV.my-class.visible"
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ function torrentPoster (torrent, cb) {
|
|||||||
const bestScore = ['audio', 'video', 'image'].map(mediaType => {
|
const bestScore = ['audio', 'video', 'image'].map(mediaType => {
|
||||||
return {
|
return {
|
||||||
type: mediaType,
|
type: mediaType,
|
||||||
size: calculateDataLengthByExtension(torrent, mediaExtensions[mediaType])}
|
size: calculateDataLengthByExtension(torrent, mediaExtensions[mediaType]) }
|
||||||
}).sort((a, b) => { // sort descending on size
|
}).sort((a, b) => { // sort descending on size
|
||||||
return b.size - a.size
|
return b.size - a.size
|
||||||
})[0]
|
})[0]
|
||||||
|
|||||||
@@ -450,7 +450,7 @@ function setDimensions (dimensions) {
|
|||||||
)
|
)
|
||||||
|
|
||||||
ipcRenderer.send('setAspectRatio', aspectRatio)
|
ipcRenderer.send('setAspectRatio', aspectRatio)
|
||||||
ipcRenderer.send('setBounds', {contentBounds: true, x: null, y: null, width, height})
|
ipcRenderer.send('setBounds', { contentBounds: true, x: null, y: null, width, height })
|
||||||
state.playing.aspectRatio = aspectRatio
|
state.playing.aspectRatio = aspectRatio
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ const path = require('path')
|
|||||||
const prettyBytes = require('prettier-bytes')
|
const prettyBytes = require('prettier-bytes')
|
||||||
const React = require('react')
|
const React = require('react')
|
||||||
|
|
||||||
const {dispatch, dispatcher} = require('../lib/dispatcher')
|
const { dispatch, dispatcher } = require('../lib/dispatcher')
|
||||||
|
|
||||||
const FlatButton = require('material-ui/FlatButton').default
|
const FlatButton = require('material-ui/FlatButton').default
|
||||||
const RaisedButton = require('material-ui/RaisedButton').default
|
const RaisedButton = require('material-ui/RaisedButton').default
|
||||||
@@ -35,7 +35,7 @@ class CreateTorrentPage extends React.Component {
|
|||||||
// Then, exclude .DS_Store and other dotfiles
|
// Then, exclude .DS_Store and other dotfiles
|
||||||
const files = info.files
|
const files = info.files
|
||||||
.filter((f) => !containsDots(f.path, pathPrefix))
|
.filter((f) => !containsDots(f.path, pathPrefix))
|
||||||
.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 state={state} />)
|
if (files.length === 0) return (<CreateTorrentErrorPage state={state} />)
|
||||||
|
|
||||||
// Then, use the name of the base folder (or sole file, for a single file torrent)
|
// Then, use the name of the base folder (or sole file, for a single file torrent)
|
||||||
@@ -65,9 +65,9 @@ class CreateTorrentPage extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Create React event handlers only once
|
// Create React event handlers only once
|
||||||
this.setIsPrivate = (_, isPrivate) => this.setState({isPrivate})
|
this.setIsPrivate = (_, isPrivate) => this.setState({ isPrivate })
|
||||||
this.setComment = (_, comment) => this.setState({comment})
|
this.setComment = (_, comment) => this.setState({ comment })
|
||||||
this.setTrackers = (_, trackers) => this.setState({trackers})
|
this.setTrackers = (_, trackers) => this.setState({ trackers })
|
||||||
this.handleSubmit = handleSubmit.bind(this)
|
this.handleSubmit = handleSubmit.bind(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -141,7 +141,7 @@ class CreateTorrentPage extends React.Component {
|
|||||||
<label>Private:</label>
|
<label>Private:</label>
|
||||||
<Checkbox
|
<Checkbox
|
||||||
className='torrent-is-private control'
|
className='torrent-is-private control'
|
||||||
style={{display: ''}}
|
style={{ display: '' }}
|
||||||
checked={this.state.isPrivate}
|
checked={this.state.isPrivate}
|
||||||
onCheck={this.setIsPrivate} />
|
onCheck={this.setIsPrivate} />
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ const zeroFill = require('zero-fill')
|
|||||||
|
|
||||||
const TorrentSummary = require('../lib/torrent-summary')
|
const TorrentSummary = require('../lib/torrent-summary')
|
||||||
const Playlist = require('../lib/playlist')
|
const Playlist = require('../lib/playlist')
|
||||||
const {dispatch, dispatcher} = require('../lib/dispatcher')
|
const { dispatch, dispatcher } = require('../lib/dispatcher')
|
||||||
const config = require('../../config')
|
const config = require('../../config')
|
||||||
|
|
||||||
// Shows a streaming video player. Standard features + Chromecast + Airplay
|
// Shows a streaming video player. Standard features + Chromecast + Airplay
|
||||||
@@ -397,7 +397,7 @@ function renderCastScreen (state) {
|
|||||||
function renderCastOptions (state) {
|
function renderCastOptions (state) {
|
||||||
if (!state.devices.castMenu) return
|
if (!state.devices.castMenu) return
|
||||||
|
|
||||||
const {location, devices} = state.devices.castMenu
|
const { location, devices } = state.devices.castMenu
|
||||||
const player = state.devices[location]
|
const player = state.devices[location]
|
||||||
|
|
||||||
const items = devices.map(function (device, ix) {
|
const items = devices.map(function (device, ix) {
|
||||||
@@ -520,9 +520,9 @@ function renderPlayerControls (state) {
|
|||||||
|
|
||||||
// Add the cast buttons. Icons for each cast type, connected/disconnected:
|
// Add the cast buttons. Icons for each cast type, connected/disconnected:
|
||||||
const buttonIcons = {
|
const buttonIcons = {
|
||||||
'chromecast': {true: 'cast_connected', false: 'cast'},
|
'chromecast': { true: 'cast_connected', false: 'cast' },
|
||||||
'airplay': {true: 'airplay', false: 'airplay'},
|
'airplay': { true: 'airplay', false: 'airplay' },
|
||||||
'dlna': {true: 'tv', false: 'tv'}
|
'dlna': { true: 'tv', false: 'tv' }
|
||||||
}
|
}
|
||||||
castTypes.forEach(function (castType) {
|
castTypes.forEach(function (castType) {
|
||||||
// Do we show this button (eg. the Chromecast button) at all?
|
// Do we show this button (eg. the Chromecast button) at all?
|
||||||
@@ -677,7 +677,7 @@ function renderLoadingBar (state) {
|
|||||||
for (let i = fileProg.startPiece; i <= fileProg.endPiece; i++) {
|
for (let i = fileProg.startPiece; i <= fileProg.endPiece; i++) {
|
||||||
const partPresent = Bitfield.prototype.get.call(prog.bitfield, i)
|
const partPresent = Bitfield.prototype.get.call(prog.bitfield, i)
|
||||||
if (partPresent && !lastPiecePresent) {
|
if (partPresent && !lastPiecePresent) {
|
||||||
parts.push({start: i - fileProg.startPiece, count: 1})
|
parts.push({ start: i - fileProg.startPiece, count: 1 })
|
||||||
} else if (partPresent) {
|
} else if (partPresent) {
|
||||||
parts[parts.length - 1].count++
|
parts[parts.length - 1].count++
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ const RaisedButton = require('material-ui/RaisedButton').default
|
|||||||
const Heading = require('../components/heading')
|
const Heading = require('../components/heading')
|
||||||
const PathSelector = require('../components/path-selector')
|
const PathSelector = require('../components/path-selector')
|
||||||
|
|
||||||
const {dispatch} = require('../lib/dispatcher')
|
const { dispatch } = require('../lib/dispatcher')
|
||||||
const config = require('../../config')
|
const config = require('../../config')
|
||||||
|
|
||||||
class PreferencesPage extends React.Component {
|
class PreferencesPage extends React.Component {
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ const LinearProgress = require('material-ui/LinearProgress').default
|
|||||||
|
|
||||||
const TorrentSummary = require('../lib/torrent-summary')
|
const TorrentSummary = require('../lib/torrent-summary')
|
||||||
const TorrentPlayer = require('../lib/torrent-player')
|
const TorrentPlayer = require('../lib/torrent-player')
|
||||||
const {dispatcher} = require('../lib/dispatcher')
|
const { dispatcher } = require('../lib/dispatcher')
|
||||||
|
|
||||||
module.exports = class TorrentList extends React.Component {
|
module.exports = class TorrentList extends React.Component {
|
||||||
render () {
|
render () {
|
||||||
@@ -365,8 +365,8 @@ module.exports = class TorrentList extends React.Component {
|
|||||||
|
|
||||||
renderRadialProgressBar (fraction, cssClass) {
|
renderRadialProgressBar (fraction, cssClass) {
|
||||||
const rotation = 360 * fraction
|
const rotation = 360 * fraction
|
||||||
const transformFill = {transform: 'rotate(' + (rotation / 2) + 'deg)'}
|
const transformFill = { transform: 'rotate(' + (rotation / 2) + 'deg)' }
|
||||||
const transformFix = {transform: 'rotate(' + rotation + 'deg)'}
|
const transformFix = { transform: 'rotate(' + rotation + 'deg)' }
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div key='radial-progress' className={'radial-progress ' + cssClass}>
|
<div key='radial-progress' className={'radial-progress ' + cssClass}>
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ const zeroFill = require('zero-fill')
|
|||||||
|
|
||||||
const crashReporter = require('../crash-reporter')
|
const crashReporter = require('../crash-reporter')
|
||||||
const config = require('../config')
|
const config = require('../config')
|
||||||
const {TorrentKeyNotFoundError} = require('./lib/errors')
|
const { TorrentKeyNotFoundError } = require('./lib/errors')
|
||||||
const torrentPoster = require('./lib/torrent-poster')
|
const torrentPoster = require('./lib/torrent-poster')
|
||||||
|
|
||||||
// Report when the process crashes
|
// Report when the process crashes
|
||||||
@@ -97,7 +97,7 @@ function init () {
|
|||||||
ipc.send('ipcReadyWebTorrent')
|
ipc.send('ipcReadyWebTorrent')
|
||||||
|
|
||||||
window.addEventListener('error', (e) =>
|
window.addEventListener('error', (e) =>
|
||||||
ipc.send('wt-uncaught-error', {message: e.error.message, stack: e.error.stack}),
|
ipc.send('wt-uncaught-error', { message: e.error.message, stack: e.error.stack }),
|
||||||
true)
|
true)
|
||||||
|
|
||||||
setInterval(updateTorrentProgress, 1000)
|
setInterval(updateTorrentProgress, 1000)
|
||||||
@@ -251,7 +251,7 @@ function generateTorrentPoster (torrentKey) {
|
|||||||
function updateTorrentProgress () {
|
function updateTorrentProgress () {
|
||||||
const progress = getTorrentProgress()
|
const progress = getTorrentProgress()
|
||||||
// TODO: diff torrent-by-torrent, not once for the whole update
|
// TODO: diff torrent-by-torrent, not once for the whole update
|
||||||
if (prevProgress && deepEqual(progress, prevProgress, {strict: true})) {
|
if (prevProgress && deepEqual(progress, prevProgress, { strict: true })) {
|
||||||
return /* don't send heavy object if it hasn't changed */
|
return /* don't send heavy object if it hasn't changed */
|
||||||
}
|
}
|
||||||
ipc.send('wt-progress', progress)
|
ipc.send('wt-progress', progress)
|
||||||
@@ -345,7 +345,7 @@ function getAudioMetadata (infoHash, index) {
|
|||||||
const metadata = { title: file.name }
|
const metadata = { title: file.name }
|
||||||
ipc.send('wt-audio-metadata', infoHash, index, metadata)
|
ipc.send('wt-audio-metadata', infoHash, index, metadata)
|
||||||
|
|
||||||
const options = {native: false, skipCovers: true, fileSize: file.length}
|
const options = { native: false, skipCovers: true, fileSize: file.length }
|
||||||
const onMetaData = file.done
|
const onMetaData = file.done
|
||||||
// If completed; use direct file access
|
// If completed; use direct file access
|
||||||
? mm.parseFile(path.join(torrent.path, file.path), options)
|
? mm.parseFile(path.join(torrent.path, file.path), options)
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ function createApp (t) {
|
|||||||
path: path.join(__dirname, '..', 'node_modules', '.bin',
|
path: path.join(__dirname, '..', 'node_modules', '.bin',
|
||||||
'electron' + (process.platform === 'win32' ? '.cmd' : '')),
|
'electron' + (process.platform === 'win32' ? '.cmd' : '')),
|
||||||
args: ['-r', path.join(__dirname, 'mocks.js'), path.join(__dirname, '..')],
|
args: ['-r', path.join(__dirname, 'mocks.js'), path.join(__dirname, '..')],
|
||||||
env: {NODE_ENV: 'test'},
|
env: { NODE_ENV: 'test' },
|
||||||
waitTimeout: 10e3
|
waitTimeout: 10e3
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ test('audio-streaming', function (t) {
|
|||||||
|
|
||||||
t.timeoutAfter(60e3)
|
t.timeoutAfter(60e3)
|
||||||
const app = setup.createApp()
|
const app = setup.createApp()
|
||||||
setup.waitForLoad(app, t, {online: true})
|
setup.waitForLoad(app, t, { online: true })
|
||||||
.then(() => app.client.waitUntilTextExists('.torrent-list', 'Big Buck Bunny'))
|
.then(() => app.client.waitUntilTextExists('.torrent-list', 'Big Buck Bunny'))
|
||||||
// Play Wired CD. Wait for it to start streaming.
|
// Play Wired CD. Wait for it to start streaming.
|
||||||
.then(() => app.client.moveToObject('#torrent-wired'))
|
.then(() => app.client.moveToObject('#torrent-wired'))
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ test('video-streaming', function (t) {
|
|||||||
|
|
||||||
t.timeoutAfter(30e3)
|
t.timeoutAfter(30e3)
|
||||||
const app = setup.createApp()
|
const app = setup.createApp()
|
||||||
setup.waitForLoad(app, t, {online: true})
|
setup.waitForLoad(app, t, { online: true })
|
||||||
.then(() => app.client.waitUntilTextExists('.torrent-list', 'Big Buck Bunny'))
|
.then(() => app.client.waitUntilTextExists('.torrent-list', 'Big Buck Bunny'))
|
||||||
// Play Big Buck Bunny. Wait for it to start streaming.
|
// Play Big Buck Bunny. Wait for it to start streaming.
|
||||||
.then(() => app.client.moveToObject('.torrent'))
|
.then(() => app.client.moveToObject('.torrent'))
|
||||||
|
|||||||
Reference in New Issue
Block a user