fixes for new path structure

This commit is contained in:
Feross Aboukhadijeh
2016-08-22 21:13:39 -07:00
parent 8b3aee7e2d
commit 509691a85a
6 changed files with 55 additions and 54 deletions

View File

@@ -4,14 +4,18 @@ const colors = require('material-ui/styles/colors')
class PageHeading extends React.Component { class PageHeading extends React.Component {
render () { render () {
<h2 return (
style={{ <h2
color: colors.grey100, style={{
fontSize: 20, color: colors.grey100,
marginBottom: 15, fontSize: 20,
marginTop: 30 marginBottom: 15,
}} marginTop: 30
>{this.props.children}</h2> }}
>
{this.props.children}
</h2>
)
} }
} }

View File

@@ -2,11 +2,11 @@ const React = require('react')
const {dispatcher} = require('../lib/dispatcher') const {dispatcher} = require('../lib/dispatcher')
module.exports = class Header extends React.Component { class Header extends React.Component {
render () { render () {
var loc = this.props.state.location var loc = this.props.state.location
return ( return (
<div key='header' className='header'> <div className='header'>
{this.getTitle()} {this.getTitle()}
<div className='nav left float-left'> <div className='nav left float-left'>
<i <i
@@ -48,3 +48,5 @@ module.exports = class Header extends React.Component {
) )
} }
} }
module.exports = Header

View File

@@ -18,7 +18,7 @@ const TorrentPlayer = require('./lib/torrent-player')
// Required by Material UI -- adds `onTouchTap` event // Required by Material UI -- adds `onTouchTap` event
require('react-tap-event-plugin')() require('react-tap-event-plugin')()
const App = require('./components/App') const App = require('./pages/App')
const MediaController = require('./controllers/media-controller') const MediaController = require('./controllers/media-controller')
const UpdateController = require('./controllers/update-controller') const UpdateController = require('./controllers/update-controller')

View File

@@ -4,7 +4,7 @@ const darkBaseTheme = require('material-ui/styles/baseThemes/darkBaseTheme').def
const getMuiTheme = require('material-ui/styles/getMuiTheme').default const getMuiTheme = require('material-ui/styles/getMuiTheme').default
const MuiThemeProvider = require('material-ui/styles/MuiThemeProvider').default const MuiThemeProvider = require('material-ui/styles/MuiThemeProvider').default
const Header = require('./header') const Header = require('../components/Header')
const Views = { const Views = {
'home': require('./TorrentListPage'), 'home': require('./TorrentListPage'),
@@ -14,24 +14,19 @@ const Views = {
} }
const Modals = { const Modals = {
'open-torrent-address-modal': require('./open-torrent-address-modal'), 'open-torrent-address-modal': require('../components/open-torrent-address-modal'),
'remove-torrent-modal': require('./remove-torrent-modal'), 'remove-torrent-modal': require('../components/remove-torrent-modal'),
'update-available-modal': require('./update-available-modal'), 'update-available-modal': require('../components/update-available-modal'),
'unsupported-media-modal': require('./unsupported-media-modal') 'unsupported-media-modal': require('../components/unsupported-media-modal')
} }
var muiTheme = getMuiTheme(Object.assign(darkBaseTheme, { const MUI_THEME = getMuiTheme(Object.assign(darkBaseTheme, {
fontFamily: 'BlinkMacSystemFont, \'Helvetica Neue\', Helvetica, sans-serif' fontFamily: 'BlinkMacSystemFont, \'Helvetica Neue\', Helvetica, sans-serif'
})) }))
class App extends React.Component { class App extends React.Component {
constructor (props) {
super(props)
this.state = props.state
}
render () { render () {
var state = this.state var state = this.props.state
// Hide player controls while playing video, if the mouse stays still for a while // Hide player controls while playing video, if the mouse stays still for a while
// Never hide the controls when: // Never hide the controls when:
@@ -54,7 +49,7 @@ class App extends React.Component {
if (hideControls) cls.push('hide-video-controls') if (hideControls) cls.push('hide-video-controls')
var vdom = ( var vdom = (
<MuiThemeProvider muiTheme={muiTheme}> <MuiThemeProvider muiTheme={MUI_THEME}>
<div className={'app ' + cls.join(' ')}> <div className={'app ' + cls.join(' ')}>
<Header state={state} /> <Header state={state} />
{this.getErrorPopover()} {this.getErrorPopover()}
@@ -68,8 +63,9 @@ class App extends React.Component {
} }
getErrorPopover () { getErrorPopover () {
var state = this.props.state
var now = new Date().getTime() var now = new Date().getTime()
var recentErrors = this.state.errors.filter((x) => now - x.time < 5000) var recentErrors = state.errors.filter((x) => now - x.time < 5000)
var hasErrors = recentErrors.length > 0 var hasErrors = recentErrors.length > 0
var errorElems = recentErrors.map(function (error, i) { var errorElems = recentErrors.map(function (error, i) {
@@ -85,7 +81,7 @@ class App extends React.Component {
} }
getModal () { getModal () {
var state = this.state var state = this.props.state
if (!state.modal) return if (!state.modal) return
var ModalContents = Modals[state.modal.id] var ModalContents = Modals[state.modal.id]
return ( return (
@@ -99,7 +95,7 @@ class App extends React.Component {
} }
getView () { getView () {
var state = this.state var state = this.props.state
var View = Views[state.location.url()] var View = Views[state.location.url()]
return (<View state={state} />) return (<View state={state} />)
} }

View File

@@ -4,9 +4,31 @@ const path = require('path')
const prettyBytes = require('prettier-bytes') const prettyBytes = require('prettier-bytes')
const {dispatch, dispatcher} = require('../lib/dispatcher') const {dispatch, dispatcher} = require('../lib/dispatcher')
const CreateTorrentErrorPage = require('./create-torrent-error-page') const CreateTorrentErrorPage = require('../components/create-torrent-error-page')
class CreateTorrentPage extends React.Component { class CreateTorrentPage extends React.Component {
handleSubmit () {
var announceList = document.querySelector('.torrent-trackers').value
.split('\n')
.map((s) => s.trim())
.filter((s) => s !== '')
var isPrivate = document.querySelector('.torrent-is-private').checked
var comment = document.querySelector('.torrent-comment').value.trim()
var options = {
// We can't let the user choose their own name if we want WebTorrent
// to use the files in place rather than creating a new folder.
// If we ever want to add support for that:
// name: document.querySelector('.torrent-name').value
name: defaultName,
path: basePath,
files: files,
announce: announceList,
private: isPrivate,
comment: comment
}
dispatch('createTorrent', options)
}
render () { render () {
var state = this.props.state var state = this.props.state
var info = state.location.current() var info = state.location.current()
@@ -58,7 +80,7 @@ class CreateTorrentPage extends React.Component {
return ( return (
<div className='create-torrent'> <div className='create-torrent'>
<h2>Create torrent {defaultName}</h2> <PageHeading>Create torrent {defaultName}</PageHeading>
<div key='info' className='torrent-info'> <div key='info' className='torrent-info'>
{torrentInfo} {torrentInfo}
</div> </div>
@@ -90,33 +112,10 @@ class CreateTorrentPage extends React.Component {
</div> </div>
<div key='buttons' className='float-right'> <div key='buttons' className='float-right'>
<button key='cancel' className='button-flat light' onClick={dispatcher('cancel')}>Cancel</button> <button key='cancel' className='button-flat light' onClick={dispatcher('cancel')}>Cancel</button>
<button key='create' className='button-raised' onClick={handleOK}>Create Torrent</button> <button key='create' className='button-raised' onClick={this.handleSubmit}>Create Torrent</button>
</div> </div>
</div> </div>
) )
function handleOK () {
// TODO: dcposch use React refs instead
var announceList = document.querySelector('.torrent-trackers').value
.split('\n')
.map((s) => s.trim())
.filter((s) => s !== '')
var isPrivate = document.querySelector('.torrent-is-private').checked
var comment = document.querySelector('.torrent-comment').value.trim()
var options = {
// We can't let the user choose their own name if we want WebTorrent
// to use the files in place rather than creating a new folder.
// If we ever want to add support for that:
// name: document.querySelector('.torrent-name').value
name: defaultName,
path: basePath,
files: files,
announce: announceList,
private: isPrivate,
comment: comment
}
dispatch('createTorrent', options)
}
} }
} }

View File

@@ -6,7 +6,7 @@ const colors = require('material-ui/styles/colors')
const RaisedButton = require('material-ui/RaisedButton').default const RaisedButton = require('material-ui/RaisedButton').default
const PageHeading = require('../components/PageHeading') const PageHeading = require('../components/PageHeading')
const PathSelector = require('../componets/PathSelector') const PathSelector = require('../components/PathSelector')
const {dispatch} = require('../lib/dispatcher') const {dispatch} = require('../lib/dispatcher')