From 6e240b3fd492481eb6c7fc464468ceb15edca380 Mon Sep 17 00:00:00 2001 From: Feross Aboukhadijeh Date: Thu, 26 May 2016 17:47:16 -0700 Subject: [PATCH] Misc file moving and cleanup - Rename JS/CSS for main.html to be consistent (main.js, main.css) - Add hx.js module to reduce virtual-dom boilerplate - Move state.js into renderer/lib.js where it belongs - Rename torrent-list.js -> home.js for consistency - Rename create-torrent-page.js -> create-torrent.js for consistency --- renderer/lib/dispatcher.js | 17 +++++++++++------ renderer/lib/hx.js | 5 +++++ renderer/{ => lib}/state.js | 4 ++-- renderer/{index.css => main.css} | 18 +++++++++--------- renderer/main.html | 4 ++-- renderer/{index.js => main.js} | 2 +- renderer/views/app.js | 11 +++++------ ...reate-torrent-page.js => create-torrent.js} | 9 +++------ renderer/views/header.js | 5 +---- renderer/views/{torrent-list.js => home.js} | 12 ++++-------- renderer/views/open-torrent-address-modal.js | 5 +---- renderer/views/player.js | 5 +---- renderer/views/preferences.js | 4 +--- renderer/views/unsupported-media-modal.js | 5 +---- renderer/views/update-available-modal.js | 5 +---- 15 files changed, 48 insertions(+), 63 deletions(-) create mode 100644 renderer/lib/hx.js rename renderer/{ => lib}/state.js (99%) rename renderer/{index.css => main.css} (98%) rename renderer/{index.js => main.js} (99%) rename renderer/views/{create-torrent-page.js => create-torrent.js} (97%) rename renderer/views/{torrent-list.js => home.js} (96%) diff --git a/renderer/lib/dispatcher.js b/renderer/lib/dispatcher.js index 13778d99..98d590a3 100644 --- a/renderer/lib/dispatcher.js +++ b/renderer/lib/dispatcher.js @@ -8,6 +8,7 @@ module.exports = { // () => dispatch() // ... this prevents virtual-dom from updating every listener on every update() var _dispatchers = {} + var _dispatch = () => {} function setDispatch (dispatch) { @@ -17,14 +18,18 @@ function setDispatch (dispatch) { // Get a _memoized event handler that calls dispatch() // All args must be JSON-able function dispatcher (...args) { - var json = JSON.stringify(args) - var handler = _dispatchers[json] + var str = JSON.stringify(args) + var handler = _dispatchers[str] if (!handler) { - handler = _dispatchers[json] = (e) => { - // Don't click on whatever is below the button + handler = _dispatchers[str] = function (e) { + // Do not propagate click to elements below the button e.stopPropagation() - // Don't regisiter clicks on disabled buttons - if (e.currentTarget.classList.contains('disabled')) return + + if (e.currentTarget.classList.contains('disabled')) { + // Do not allow clicks on disabled buttons + return + } + _dispatch.apply(null, args) } } diff --git a/renderer/lib/hx.js b/renderer/lib/hx.js new file mode 100644 index 00000000..d1434273 --- /dev/null +++ b/renderer/lib/hx.js @@ -0,0 +1,5 @@ +var h = require('virtual-dom/h') +var hyperx = require('hyperx') +var hx = hyperx(h) + +module.exports = hx diff --git a/renderer/state.js b/renderer/lib/state.js similarity index 99% rename from renderer/state.js rename to renderer/lib/state.js index 40796f62..16c93a55 100644 --- a/renderer/state.js +++ b/renderer/lib/state.js @@ -3,8 +3,8 @@ var path = require('path') var remote = electron.remote -var config = require('../config') -var LocationHistory = require('./lib/location-history') +var config = require('../../config') +var LocationHistory = require('./location-history') module.exports = { getInitialState, diff --git a/renderer/index.css b/renderer/main.css similarity index 98% rename from renderer/index.css rename to renderer/main.css index 4d28292d..b8cc8ac4 100644 --- a/renderer/index.css +++ b/renderer/main.css @@ -280,36 +280,36 @@ table { width: 100%; } -.create-torrent-page { +.create-torrent { padding: 10px 25px; overflow: hidden; } -.create-torrent-page .torrent-attribute { +.create-torrent .torrent-attribute { white-space: nowrap; } -.create-torrent-page .torrent-attribute>* { +.create-torrent .torrent-attribute>* { display: inline-block; } -.create-torrent-page .torrent-attribute label { +.create-torrent .torrent-attribute label { width: 60px; margin-right: 10px; vertical-align: top; } -.create-torrent-page .torrent-attribute>div { +.create-torrent .torrent-attribute>div { width: calc(100% - 90px); } -.create-torrent-page .torrent-attribute div { +.create-torrent .torrent-attribute div { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } -.create-torrent-page .torrent-attribute textarea { +.create-torrent .torrent-attribute textarea { width: calc(100% - 80px); height: 80px; color: #eee; @@ -321,11 +321,11 @@ table { padding: 4px 6px; } -.create-torrent-page textarea.torrent-trackers { +.create-torrent textarea.torrent-trackers { height: 200px; } -.create-torrent-page input.torrent-is-private { +.create-torrent input.torrent-is-private { width: initial; margin: 0; } diff --git a/renderer/main.html b/renderer/main.html index 4d04d3cb..e2f14ed4 100644 --- a/renderer/main.html +++ b/renderer/main.html @@ -3,9 +3,9 @@ - + - + diff --git a/renderer/index.js b/renderer/main.js similarity index 99% rename from renderer/index.js rename to renderer/main.js index 0d4acf50..fe97964f 100644 --- a/renderer/index.js +++ b/renderer/main.js @@ -28,7 +28,7 @@ var App = require('./views/app') var config = require('../config') var errors = require('./lib/errors') var sound = require('./lib/sound') -var State = require('./state') +var State = require('./lib/state') var TorrentPlayer = require('./lib/torrent-player') var TorrentSummary = require('./lib/torrent-summary') diff --git a/renderer/views/app.js b/renderer/views/app.js index d5dd1cc1..6dbad519 100644 --- a/renderer/views/app.js +++ b/renderer/views/app.js @@ -1,16 +1,15 @@ module.exports = App -var h = require('virtual-dom/h') -var hyperx = require('hyperx') -var hx = hyperx(h) - +var hx = require('../lib/hx') var Header = require('./header') + var Views = { - 'home': require('./torrent-list'), + 'home': require('./home'), 'player': require('./player'), - 'create-torrent': require('./create-torrent-page'), + 'create-torrent': require('./create-torrent'), 'preferences': require('./preferences') } + var Modals = { 'open-torrent-address-modal': require('./open-torrent-address-modal'), 'update-available-modal': require('./update-available-modal'), diff --git a/renderer/views/create-torrent-page.js b/renderer/views/create-torrent.js similarity index 97% rename from renderer/views/create-torrent-page.js rename to renderer/views/create-torrent.js index 495b33a2..28c8f5fd 100644 --- a/renderer/views/create-torrent-page.js +++ b/renderer/views/create-torrent.js @@ -1,14 +1,11 @@ module.exports = CreateTorrentPage -var h = require('virtual-dom/h') -var hyperx = require('hyperx') -var hx = hyperx(h) - var createTorrent = require('create-torrent') var path = require('path') var prettyBytes = require('prettier-bytes') var {dispatch, dispatcher} = require('../lib/dispatcher') +var hx = require('../lib/hx') function CreateTorrentPage (state) { var info = state.location.current() @@ -59,7 +56,7 @@ function CreateTorrentPage (state) { var collapsedClass = info.showAdvanced ? 'expanded' : 'collapsed' return hx` -
+

Create torrent ${defaultName}

${torrentInfo} @@ -132,7 +129,7 @@ function CreateTorrentPage (state) { function CreateTorrentErrorPage () { return hx` -

+

Create torrent

diff --git a/renderer/views/header.js b/renderer/views/header.js index ab777ca7..67e74114 100644 --- a/renderer/views/header.js +++ b/renderer/views/header.js @@ -1,10 +1,7 @@ module.exports = Header -var h = require('virtual-dom/h') -var hyperx = require('hyperx') -var hx = hyperx(h) - var {dispatcher} = require('../lib/dispatcher') +var hx = require('../lib/hx') function Header (state) { return hx` diff --git a/renderer/views/torrent-list.js b/renderer/views/home.js similarity index 96% rename from renderer/views/torrent-list.js rename to renderer/views/home.js index 7bcd2dc2..77a5070c 100644 --- a/renderer/views/torrent-list.js +++ b/renderer/views/home.js @@ -1,17 +1,17 @@ module.exports = TorrentList -var h = require('virtual-dom/h') -var hyperx = require('hyperx') -var hx = hyperx(h) var prettyBytes = require('prettier-bytes') +var hx = require('../lib/hx') var TorrentSummary = require('../lib/torrent-summary') var TorrentPlayer = require('../lib/torrent-player') var {dispatcher} = require('../lib/dispatcher') function TorrentList (state) { var torrentRows = state.saved.torrents.map( - (torrentSummary) => renderTorrent(torrentSummary)) + (torrentSummary) => renderTorrent(torrentSummary) + ) + return hx`

${torrentRows} @@ -20,11 +20,7 @@ function TorrentList (state) {
` - // Renders a torrent in the torrent list - // Includes name, download status, play button, background image - // May be expanded for additional info, including the list of files inside function renderTorrent (torrentSummary) { - // Get ephemeral data (like progress %) directly from the WebTorrent handle var infoHash = torrentSummary.infoHash var isSelected = infoHash && state.selectedInfoHash === infoHash diff --git a/renderer/views/open-torrent-address-modal.js b/renderer/views/open-torrent-address-modal.js index 2019efbe..1cf9bb40 100644 --- a/renderer/views/open-torrent-address-modal.js +++ b/renderer/views/open-torrent-address-modal.js @@ -1,10 +1,7 @@ module.exports = OpenTorrentAddressModal -var h = require('virtual-dom/h') -var hyperx = require('hyperx') -var hx = hyperx(h) - var {dispatch} = require('../lib/dispatcher') +var hx = require('../lib/hx') function OpenTorrentAddressModal (state) { return hx` diff --git a/renderer/views/player.js b/renderer/views/player.js index 039848df..ff4f1f8e 100644 --- a/renderer/views/player.js +++ b/renderer/views/player.js @@ -1,13 +1,10 @@ module.exports = Player -var h = require('virtual-dom/h') -var hyperx = require('hyperx') -var hx = hyperx(h) - var Bitfield = require('bitfield') var prettyBytes = require('prettier-bytes') var zeroFill = require('zero-fill') +var hx = require('../lib/hx') var TorrentSummary = require('../lib/torrent-summary') var {dispatch, dispatcher} = require('../lib/dispatcher') diff --git a/renderer/views/preferences.js b/renderer/views/preferences.js index f9af1a62..4e4773ed 100644 --- a/renderer/views/preferences.js +++ b/renderer/views/preferences.js @@ -1,8 +1,6 @@ module.exports = Preferences -var h = require('virtual-dom/h') -var hyperx = require('hyperx') -var hx = hyperx(h) +var hx = require('../lib/hx') var {dispatch} = require('../lib/dispatcher') var remote = require('electron').remote diff --git a/renderer/views/unsupported-media-modal.js b/renderer/views/unsupported-media-modal.js index 9cd04e0e..a6bb9d5c 100644 --- a/renderer/views/unsupported-media-modal.js +++ b/renderer/views/unsupported-media-modal.js @@ -1,12 +1,9 @@ module.exports = UnsupportedMediaModal -var h = require('virtual-dom/h') -var hyperx = require('hyperx') -var hx = hyperx(h) - var electron = require('electron') var {dispatch, dispatcher} = require('../lib/dispatcher') +var hx = require('../lib/hx') function UnsupportedMediaModal (state) { var err = state.modal.error diff --git a/renderer/views/update-available-modal.js b/renderer/views/update-available-modal.js index 150de2cd..d2709740 100644 --- a/renderer/views/update-available-modal.js +++ b/renderer/views/update-available-modal.js @@ -1,12 +1,9 @@ module.exports = UpdateAvailableModal -var h = require('virtual-dom/h') -var hyperx = require('hyperx') -var hx = hyperx(h) - var electron = require('electron') var {dispatch} = require('../lib/dispatcher') +var hx = require('../lib/hx') function UpdateAvailableModal (state) { return hx`