1
0
mirror of https://github.com/fazo96/ipfs-boards synced 2025-02-04 16:34:19 +01:00
ipfs-boards/webapp/app.jsx

149 lines
4.5 KiB
React
Raw Normal View History

2015-11-20 14:20:06 +01:00
// Load CSS
2015-12-22 14:00:22 +01:00
2015-11-20 14:20:06 +01:00
require('normalize.css')
require('skeleton.css')
2015-11-20 17:24:06 +01:00
require('raleway.css')
2015-11-14 12:06:37 +01:00
2015-12-22 14:00:22 +01:00
// Start
2015-12-22 14:00:22 +01:00
document.getElementById('root').innerHTML = `
2015-12-23 16:49:52 +01:00
<div style="text-align:center;margin-top:2rem">
2015-12-22 14:00:22 +01:00
<h1>Loading</h1>
<p>Gathering components</p>
</div>
`
2015-12-22 14:00:22 +01:00
require.ensure('react', _ => {
var React = require('react')
// Load CSS
require('style.css')
require('font-awesome.min.css')
// Load Components
var BoardsWrapper = require('boardsapiwrapper.js')
var boards = new BoardsWrapper()
var Icon = require('icon.jsx')
// Load pages
var Navbar = require('navbar.jsx')(boards)
var Users = require('users.jsx')(boards)
var Settings = require('settings.jsx')(boards)
var Profile = require('profile.jsx')(boards)
var Board = require('board.jsx')(boards)
var PostPage = require('postpage.jsx')(boards)
var CommentPage = require('commentpage.jsx')(boards)
var ProfileEditor = require('profile-editor.jsx')(boards)
var BoardEditor = require('board-editor.jsx')(boards)
var PostEditor = require('post-editor.jsx')(boards)
var Status = require('status.jsx')(boards)
2015-12-22 14:49:29 +01:00
var Update = require('update.jsx')
var Backup = require('backup.jsx')
2015-12-22 14:00:22 +01:00
// Define Main Components
2015-12-22 14:00:22 +01:00
var Container = React.createClass({
render () {
2016-06-20 18:07:11 +02:00
return (<div className='container app'>{this.props.children}</div>)
2015-12-22 14:00:22 +01:00
}
})
2015-12-22 14:00:22 +01:00
var App = React.createClass({
render () {
return (<div><Navbar /><Container>{this.props.children}</Container></div>)
}
})
2015-11-14 12:06:37 +01:00
2015-12-22 14:00:22 +01:00
// Static pages
2015-12-22 14:00:22 +01:00
var Static = React.createClass({
html () {
return { __html: this.props.content }
},
render () {
if (this.props.content) {
return <div className={this.props.className} dangerouslySetInnerHTML={this.html()} />
} else {
return <NotFound />
}
2015-11-21 16:29:54 +01:00
}
2015-12-22 14:00:22 +01:00
})
2015-11-21 16:29:54 +01:00
2015-12-22 14:00:22 +01:00
var Homepage = React.createClass({
render () {
2016-06-20 18:07:11 +02:00
return <Static className='homepage' content={require('landing.md')} />
2015-12-22 14:00:22 +01:00
}
})
2015-12-22 14:00:22 +01:00
var NotFound = React.createClass({
render () {
2016-06-20 18:07:11 +02:00
return (<div className='text-center'>
<h1><Icon name='ban' className='light'/></h1>
2015-12-22 14:00:22 +01:00
<h3>Sorry, there's nothing here!</h3>
</div>)
}
})
2015-12-22 14:00:22 +01:00
var RootComponent = React.createClass({
getInitialState () {
return {}
},
componentDidMount () {
require.ensure(['react-router'], _ => {
this.setState(require('react-router'))
})
},
render () {
if (this.state.Router) {
var Router = this.state.Router
var IndexRoute = this.state.IndexRoute
var Route = this.state.Route
return <Router history={this.state.hashHistory} >
2016-06-20 18:07:11 +02:00
<Route path='/' component={App}>
2015-12-22 14:00:22 +01:00
<IndexRoute component={Homepage} />
2016-06-20 18:07:11 +02:00
<Route path='/@:userid'>
2015-12-22 14:00:22 +01:00
<IndexRoute component={Profile} />
2016-06-20 18:07:11 +02:00
<Route path='post/:posthash' >
2015-12-22 14:00:22 +01:00
<IndexRoute component={PostPage} />
</Route>
2016-06-20 18:07:11 +02:00
<Route path=':boardname'>
2015-12-22 14:00:22 +01:00
<IndexRoute component={Board} />
2016-06-20 18:07:11 +02:00
<Route path=':posthash'>
2015-12-22 14:00:22 +01:00
<IndexRoute component={PostPage} />
2016-06-20 18:07:11 +02:00
<Route path=':commenthash' component={CommentPage} />
2015-12-22 14:00:22 +01:00
</Route>
</Route>
</Route>
2016-06-20 18:07:11 +02:00
<Route path='edit'>
<Route path='profile' component={ProfileEditor} />
<Route path='board(/:boardname)'>
2015-12-22 14:00:22 +01:00
<IndexRoute component={BoardEditor} />
2016-06-20 18:07:11 +02:00
<Route path='post(/:posthash)' component={PostEditor} />
2015-12-22 14:00:22 +01:00
</Route>
</Route>
2016-06-20 18:07:11 +02:00
<Route path='post/:posthash' component={PostPage} />
<Route path='board/:boardname' component={Board} />
<Route path='users' component={Users} />
<Route path='settings' component={Settings} />
<Route path='status' component={Status} />
<Route path='version' component={Update} />
<Route path='backup' component={Backup} />
<Route path='restore' component={Backup} />
<Route path='*' component={NotFound} />
2015-11-26 19:04:47 +01:00
</Route>
2015-12-22 14:00:22 +01:00
</Router>
} else {
2016-06-20 18:07:11 +02:00
return <div className='loading' style={{ marginTop: '2rem' }} >
<div className='text-center'>
<Icon className='center-block fa-spin fa-3x light' name='refresh' />
<h4 className='top-half-em'>Downloading Components</h4>
2015-12-22 14:00:22 +01:00
</div>
</div>
}
}
})
require.ensure('react-dom', _ => {
var ReactDOM = require('react-dom')
ReactDOM.render(
<RootComponent />, document.getElementById('root')
)
})
})