diff --git a/main/index.js b/main/index.js index d6768b51..0ca60b43 100644 --- a/main/index.js +++ b/main/index.js @@ -1,6 +1,5 @@ /* global URL, Blob */ -// var prettyBytes = require('pretty-bytes') var airplay = require('airplay-js') var chromecasts = require('chromecasts')() var dragDrop = require('drag-drop') @@ -20,7 +19,6 @@ var HEADER_HEIGHT = 38 var App = require('./views/app') var state = global.state = { - torrents: [], server: null, player: null, currentPage: { @@ -28,6 +26,7 @@ var state = global.state = { }, view: { title: 'WebTorrent', + client: null, savedWindowBounds: null, history: [], historyIndex: 0, @@ -48,7 +47,7 @@ function init () { getClient(function (err, client) { if (err) return onError(err) global.client = client - state.torrents = client.torrents // internal webtorrent array -- do not modify! + state.view.client = client client.on('warning', onWarning) client.on('error', onError) }) @@ -77,6 +76,10 @@ function update () { currentVDom = newVDom } +setInterval(function () { + update() +}, 5000) + function dispatch (action, ...args) { console.log('dispatch: %s %o', action, args) if (action === 'addTorrent') { @@ -257,21 +260,6 @@ function restoreBounds () { electron.ipcRenderer.send('setBounds', state.view.savedWindowBounds, true) } -// function onTorrent (torrent) { - // function updateSpeed () { - // var progress = (100 * torrent.progress).toFixed(1) - // util.updateSpeed( - // 'Peers: ' + torrent.swarm.wires.length + ' ' + - // 'Progress: ' + progress + '% ' + - // 'Download speed: ' + prettyBytes(window.client.downloadSpeed) + '/s ' + - // 'Upload speed: ' + prettyBytes(window.client.uploadSpeed) + '/s' - // ) - // } - - // setInterval(updateSpeed, 5000) - // updateSpeed() -// } - function onError (err) { console.error(err.stack) window.alert(err.message || err) @@ -281,18 +269,3 @@ function onError (err) { function onWarning (err) { console.log('warning: %s', err.message) } - -// Seed via upload input element -// var uploadElement = require('upload-element') -// var upload = document.querySelector('input[name=upload]') -// uploadElement(upload, function (err, files) { -// if (err) return onError(err) -// files = files.map(function (file) { return file.file }) -// onFiles(files) -// }) - -// Download via input element -// document.querySelector('form').addEventListener('submit', function (e) { -// e.preventDefault() -// addTorrent(document.querySelector('form input[name=torrentId]').value.trim()) -// }) diff --git a/main/views/torrent-list.js b/main/views/torrent-list.js index 84ab2145..dec3726f 100644 --- a/main/views/torrent-list.js +++ b/main/views/torrent-list.js @@ -1,9 +1,14 @@ module.exports = TorrentList var h = require('virtual-dom/h') +var prettyBytes = require('pretty-bytes') function TorrentList (state, dispatch) { - var list = state.torrents.map(function (torrent) { + var torrents = state.view.client + ? state.view.client.torrents + : [] + + var list = torrents.map(function (torrent) { var style = {} if (torrent.posterURL) { style['background-image'] = 'linear-gradient(to bottom, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0) 100%), url("' + torrent.posterURL + '")' @@ -19,7 +24,10 @@ function TorrentList (state, dispatch) { if (torrent.ready && torrent.files.length > 1) { return h('span.files', torrent.files.length + ' files') } - })() + })(), + h('span', torrent.numPeers + ' ' + (torrent.numPeers === 1 ? 'peer' : 'peers')), + h('span', prettyBytes(torrent.downloadSpeed) + '/s'), + h('span', prettyBytes(torrent.uploadSpeed) + '/s') ]) ]), h('i.btn.icon.play', {