module.exports = App var h = require('virtual-dom/h') var hyperx = require('hyperx') var hx = hyperx(h) var Header = require('./header') var Player = require('./player') var TorrentList = require('./torrent-list') var Modals = { 'open-torrent-address-modal': require('./open-torrent-address-modal') } function App (state, dispatch) { // Hide player controls while playing video, if the mouse stays still for a while // Never hide the controls when: // * The mouse is over the controls or we're scrubbing (see CSS) // * The video is paused // * The video is playing remotely on Chromecast or Airplay var hideControls = state.url === 'player' && state.video.mouseStationarySince !== 0 && new Date().getTime() - state.video.mouseStationarySince > 2000 && !state.video.isPaused && state.video.location === 'local' // Hide the header on Windows/Linux when in the player // On OSX, the header appears as part of the title bar var hideHeader = process.platform !== 'darwin' && state.url === 'player' var cls = [ 'view-' + state.url, /* e.g. view-home, view-player */ 'is-' + process.platform /* e.g. is-darwin, is-win32, is-linux */ ] if (state.window.isFullScreen) cls.push('is-fullscreen') if (state.window.isFocused) cls.push('is-focused') if (hideControls) cls.push('hide-video-controls') if (hideHeader) cls.push('hide-header') return hx`
${Header(state, dispatch)} ${getErrorPopover()}
${getView()}
${getModal()}
` function getErrorPopover () { var now = new Date().getTime() var recentErrors = state.errors.filter((x) => now - x.time < 5000) var errorElems = recentErrors.map(function (error) { return hx`
${error.message}
` }) return hx`
Error
${errorElems}
` } function getModal () { if (state.modal) { var contents = Modals[state.modal](state, dispatch) return hx` ` } } function getView () { if (state.url === 'home') { return TorrentList(state, dispatch) } else if (state.url === 'player') { return Player(state, dispatch) } } }