fix redirects, fix server syncs on join

This commit is contained in:
Katalina / stardust 2018-01-17 23:12:11 -06:00
parent 032831aff1
commit f7238ab091
14 changed files with 132 additions and 101 deletions

View file

@ -0,0 +1,47 @@
import React, { Component } from 'react'
import { Link, Redirect } from 'react-router-dom'
import superagent from 'superagent'
import discordLogo from '../../pages/images/discord-logo.svg'
export default class ServerLanding extends Component {
state = {
server: null,
exit: false
}
async componentWillMount () {
console.log(this.props)
try {
const rsp = await superagent.get(`/api/server/${this.props.match.params.server}/slug`)
this.setState({ server: rsp.body })
} catch (e) {
this.setState({ exit: true })
return
}
}
render () {
if (this.state.exit === true) {
return <Redirect to="/" />
}
if (this.state.server === null) {
return null //SPINNER
}
return <div className="landing uk-width-1-1 uk-text-center">
<div className="uk-container">
<section>
<h1>Hey there.</h1>
<h4>{this.state.server.name} uses Roleypoly to manage self-assignable roles.</h4>
<h5><span role="img">💖</span></h5>
</section>
<section>
<Link to={`/oauth/flow?r=${window.location.pathname}`} className="uk-button rp-button discord"><img src={discordLogo} className="rp-button-logo"/> Sign in with Discord</Link>
</section>
</div>
</div>
}
}

View file

@ -9,6 +9,7 @@ import Navigation from './Navigation'
import RolePicker from '../role-picker'
import RoleEditor from '../role-editor'
import AddServer from '../add-server'
import Error404 from '../../pages/Error404'
// import mockData from './mockData'
@ -23,6 +24,8 @@ const mapState = ({ servers, user, appState }) => {
@connect(mapState)
class Servers extends Component {
get defaultPath () {
console.log(this.props.servers.toJS())
const first = this.props.servers.first()
if (first != null) {
return first.get('id')
@ -35,18 +38,15 @@ class Servers extends Component {
return <div className="servers">
<Navigation className="servers__nav" servers={this.props.servers} user={this.props.user} />
<div className='servers__content'>
<Switch>
<Route path='/s/' exact render={() => <Redirect to={`/s/${this.defaultPath}`} />} />
<Route path='/s/:server/edit' component={RoleEditor} />
<Route path='/s/:server' render={() =>
<Scrollbars className={`fade-element ${(this.props.fade) ? 'fade' : ''}`} autoHeight autoHeightMax='calc(100vh - 80px)'>
<Switch>
<Route path='/s/add' component={AddServer} exact />
<Route path='/s/:server' component={RolePicker} exact />
</Switch>
</Scrollbars>
} />
</Switch>
<Scrollbars className={`fade-element ${(this.props.fade) ? 'fade' : ''}`} autoHeight autoHeightMax='calc(100vh - 80px)'>
<Switch>
<Route path='/s/add' component={AddServer} exact />
<Route path='/s/:server/edit' component={RoleEditor} />
<Route path='/s/:server' component={RolePicker} />
<Route path='/s' exact render={() => <Redirect to={`/s/${this.defaultPath}`} />} />
<Route component={Error404} />
</Switch>
</Scrollbars>
</div>
</div>
}