mirror of
https://github.com/roleypoly/roleypoly-v1.git
synced 2025-04-25 04:09:12 +00:00
finish most of redux retrofit
This commit is contained in:
parent
52cb96baa3
commit
5899268b22
7 changed files with 64 additions and 17 deletions
|
@ -33,6 +33,11 @@ module.exports = (R, $) => {
|
||||||
})
|
})
|
||||||
|
|
||||||
R.get('/api/auth/user', async ctx => {
|
R.get('/api/auth/user', async ctx => {
|
||||||
|
if (ctx.session.accessToken === undefined) {
|
||||||
|
ctx.body = { err: 'not_logged_in' }
|
||||||
|
ctx.status = 401
|
||||||
|
}
|
||||||
|
|
||||||
const user = await $.discord.getUser(ctx.session.accessToken)
|
const user = await $.discord.getUser(ctx.session.accessToken)
|
||||||
ctx.session.userId = user.id
|
ctx.session.userId = user.id
|
||||||
ctx.session.avatarHash = user.avatar
|
ctx.session.avatarHash = user.avatar
|
||||||
|
|
|
@ -6,12 +6,17 @@ import configureStore from './store/configureStore'
|
||||||
|
|
||||||
import Wrapper from './components/wrapper'
|
import Wrapper from './components/wrapper'
|
||||||
import AppRouter from './router'
|
import AppRouter from './router'
|
||||||
|
import { userInit } from './actions'
|
||||||
|
|
||||||
const store = configureStore()
|
const store = configureStore()
|
||||||
|
|
||||||
window.__APP_STORE__ = store
|
window.__APP_STORE__ = store
|
||||||
|
|
||||||
class App extends Component {
|
class App extends Component {
|
||||||
|
componentWillMount () {
|
||||||
|
store.dispatch(userInit)
|
||||||
|
}
|
||||||
|
|
||||||
render () {
|
render () {
|
||||||
return (
|
return (
|
||||||
<Provider store={store}>
|
<Provider store={store}>
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
import superagent from 'superagent'
|
||||||
|
|
||||||
|
export const fetchServers = async dispatch => {
|
||||||
|
const rsp = await superagent.get('/api/servers')
|
||||||
|
|
||||||
|
dispatch({
|
||||||
|
type: Symbol.for('update servers'),
|
||||||
|
data: rsp.body
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export const userInit = async dispatch => {
|
||||||
|
try {
|
||||||
|
const rsp = await superagent.get('/api/auth/user')
|
||||||
|
|
||||||
|
dispatch({
|
||||||
|
type: Symbol.for('set user'),
|
||||||
|
data: rsp.body
|
||||||
|
})
|
||||||
|
|
||||||
|
dispatch(fetchServers)
|
||||||
|
} catch(e) {
|
||||||
|
console.log(e)
|
||||||
|
}
|
||||||
|
}
|
|
@ -5,10 +5,14 @@ import './ServerCard.sass'
|
||||||
|
|
||||||
class ServerCard extends Component {
|
class ServerCard extends Component {
|
||||||
render () {
|
render () {
|
||||||
const { server: { server, id, gm, perms }, user } = this.props
|
const { server, user } = this.props
|
||||||
|
|
||||||
let icon = ''
|
let icon = ''
|
||||||
|
|
||||||
|
|
||||||
|
const s = server.get('server')
|
||||||
|
const gm = server.get('gm')
|
||||||
|
const perms = server.get('perms')
|
||||||
if (perms.canManageRoles) {
|
if (perms.canManageRoles) {
|
||||||
icon = <span title='Role Manager' uk-tooltip='' role='img' aria-label='Role Manager'>🔰</span>
|
icon = <span title='Role Manager' uk-tooltip='' role='img' aria-label='Role Manager'>🔰</span>
|
||||||
}
|
}
|
||||||
|
@ -17,13 +21,13 @@ class ServerCard extends Component {
|
||||||
icon = <span title='Server Admin' uk-tooltip='' role='img' aria-label='Server Admin'>🔰⭐️</span>
|
icon = <span title='Server Admin' uk-tooltip='' role='img' aria-label='Server Admin'>🔰⭐️</span>
|
||||||
}
|
}
|
||||||
|
|
||||||
return <NavLink className='server-list__item' activeClassName='active' to={`/s/${id}`}>
|
return <NavLink className='server-list__item' activeClassName='active' to={`/s/${s.id}`}>
|
||||||
<div className='server-list__item__icon'>
|
<div className='server-list__item__icon'>
|
||||||
<img src={`https://cdn.discordapp.com/icons/${id}/${server.icon}.png`} alt={server.name} />
|
<img src={`https://cdn.discordapp.com/icons/${s.id}/${s.icon}.png`} alt={s.name} />
|
||||||
</div>
|
</div>
|
||||||
<div className='server-list__item__info'>
|
<div className='server-list__item__info'>
|
||||||
<b>{server.name}</b><br />
|
<b>{s.name}</b><br />
|
||||||
<span style={{ color: gm.color }}>{ gm.nickname || user.username }</span> { icon }
|
<span style={{ color: gm.color }}>{ gm.nickname || user.get('username') }</span> { icon }
|
||||||
</div>
|
</div>
|
||||||
</NavLink>
|
</NavLink>
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,11 +10,13 @@ class UserCard extends Component {
|
||||||
|
|
||||||
get avatar () {
|
get avatar () {
|
||||||
const { user } = this.props
|
const { user } = this.props
|
||||||
if (user.avatar === '' || user.avatar == null) {
|
const avatar = user.get('avatar')
|
||||||
|
|
||||||
|
if (avatar === '' || avatar == null) {
|
||||||
return `https://cdn.discordapp.com/embed/avatars/${Math.ceil(Math.random() * 9999) % 4}.png`
|
return `https://cdn.discordapp.com/embed/avatars/${Math.ceil(Math.random() * 9999) % 4}.png`
|
||||||
}
|
}
|
||||||
|
|
||||||
return `https://cdn.discordapp.com/avatars/${user.id}/${user.avatar}.png`
|
return `https://cdn.discordapp.com/avatars/${user.get('id')}/${avatar}.png`
|
||||||
}
|
}
|
||||||
|
|
||||||
render () {
|
render () {
|
||||||
|
@ -24,10 +26,10 @@ class UserCard extends Component {
|
||||||
|
|
||||||
return <div className='user-card'>
|
return <div className='user-card'>
|
||||||
<div className='user-card__icon'>
|
<div className='user-card__icon'>
|
||||||
<img src={this.avatar} alt={user.username} />
|
<img src={this.avatar} alt={user.get('username')} />
|
||||||
</div>
|
</div>
|
||||||
<div className='user-card__info'>
|
<div className='user-card__info'>
|
||||||
<span className='user-card__info__name'>{user.username}</span><span className='user-card__info__discrim'>#{user.discriminator}</span>
|
<span className='user-card__info__name'>{user.get('username')}</span><span className='user-card__info__discrim'>#{user.get('discriminator')}</span>
|
||||||
</div>
|
</div>
|
||||||
<div className='user-card__actions'>
|
<div className='user-card__actions'>
|
||||||
<ul className='uk-iconnav uk-iconnav-vertical'>
|
<ul className='uk-iconnav uk-iconnav-vertical'>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import React, { Component } from 'react'
|
import React, { Component } from 'react'
|
||||||
import { Route } from 'react-router-dom'
|
import { Route } from 'react-router-dom'
|
||||||
import Radium from 'radium'
|
import { connect } from 'react-redux'
|
||||||
import superagent from 'superagent'
|
import superagent from 'superagent'
|
||||||
import './index.sass'
|
import './index.sass'
|
||||||
|
|
||||||
|
@ -9,16 +9,18 @@ import RolePicker from '../role-picker'
|
||||||
|
|
||||||
// import mockData from './mockData'
|
// import mockData from './mockData'
|
||||||
|
|
||||||
class Servers extends Component {
|
const mapState = ({ servers, user }) => {
|
||||||
async componentWillMount () {
|
return {
|
||||||
const rsp = await superagent.get(`/api/servers`)
|
servers,
|
||||||
|
user
|
||||||
this.setState({ servers: rsp.body })
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@connect(mapState)
|
||||||
|
class Servers extends Component {
|
||||||
render () {
|
render () {
|
||||||
return <div className="servers">
|
return <div className="servers">
|
||||||
<Navigation className="servers__nav" servers={[]} user={{}} />
|
<Navigation className="servers__nav" servers={this.props.servers} user={this.props.user} />
|
||||||
<div className="servers__content">
|
<div className="servers__content">
|
||||||
<Route path='/s/:server' component={RolePicker} />
|
<Route path='/s/:server' component={RolePicker} />
|
||||||
<Route path='/s/:server/edit' component={RolePicker} />
|
<Route path='/s/:server/edit' component={RolePicker} />
|
||||||
|
@ -27,4 +29,4 @@ class Servers extends Component {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default Radium(Servers)
|
export default Servers
|
||||||
|
|
|
@ -9,6 +9,10 @@ const initialState = Map({
|
||||||
|
|
||||||
export default (state = initialState, { type, data }) => {
|
export default (state = initialState, { type, data }) => {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
|
|
||||||
|
case Symbol.for('set user'):
|
||||||
|
return Map(data)
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return state
|
return state
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue