mirror of
https://github.com/roleypoly/roleypoly-v1.git
synced 2025-06-16 18:29:08 +00:00
sync: full redux retrofit done
This commit is contained in:
parent
cfc623b228
commit
f5220aa6dc
14 changed files with 206 additions and 122 deletions
|
@ -2,10 +2,31 @@ import { combineReducers } from 'redux'
|
|||
|
||||
import servers from './servers'
|
||||
import user from './user'
|
||||
import rolePicker from './role-picker'
|
||||
// import roles from './roles'
|
||||
|
||||
const initialState = {
|
||||
ready: false
|
||||
}
|
||||
|
||||
const appState = (state = initialState, { type }) => {
|
||||
switch (type) {
|
||||
case Symbol.for('app ready'):
|
||||
return {
|
||||
ready: true
|
||||
}
|
||||
|
||||
default:
|
||||
return state
|
||||
}
|
||||
}
|
||||
|
||||
const rootReducer = combineReducers({
|
||||
appState,
|
||||
servers,
|
||||
user
|
||||
user,
|
||||
// roles,
|
||||
rolePicker
|
||||
})
|
||||
|
||||
export default rootReducer
|
||||
|
|
37
UI/src/reducers/role-picker.js
Normal file
37
UI/src/reducers/role-picker.js
Normal file
|
@ -0,0 +1,37 @@
|
|||
import { Map, Set } from 'immutable'
|
||||
|
||||
const initialState = Map({
|
||||
hidden: true, // should the view be hidden?
|
||||
emptyRoles: true, // helps derender roles so there's no visible element state change
|
||||
viewMap: Set([]), // roles in categories
|
||||
originalRolesSelected: Map({}), // Map<role id, bool> -- original roles for diffing against selected
|
||||
rolesSelected: Map({}) // Map<role id, bool> -- new roles for diffing
|
||||
})
|
||||
|
||||
export default (state = initialState, { type, data }) => {
|
||||
switch (type) {
|
||||
case Symbol.for('setup role picker'):
|
||||
return state.merge(data)
|
||||
|
||||
case Symbol.for('hide role picker ui'):
|
||||
return {
|
||||
...state,
|
||||
hidden: data
|
||||
}
|
||||
|
||||
case Symbol.for('reset role picker ui'):
|
||||
return {
|
||||
...state,
|
||||
emptyRoles: data
|
||||
}
|
||||
|
||||
case Symbol.for('zero role picker'):
|
||||
return initialState
|
||||
|
||||
case Symbol.for('update selected roles'):
|
||||
return state.set('rolesSelected', state.get('rolesSelected').set(data.id, data.state))
|
||||
|
||||
default:
|
||||
return state
|
||||
}
|
||||
}
|
|
@ -1,34 +1,39 @@
|
|||
import { Set, Map } from 'immutable'
|
||||
import { Set, OrderedMap, Map, fromJS } from 'immutable'
|
||||
|
||||
const blankServer = Map({
|
||||
'id': '386659935687147521',
|
||||
'gm': {
|
||||
'nickname': null,
|
||||
'color': '#cca1a1'
|
||||
id: '386659935687147521',
|
||||
gm: {
|
||||
nickname: null,
|
||||
color: '#cca1a1'
|
||||
},
|
||||
'server': {
|
||||
'id': '386659935687147521',
|
||||
'name': 'Roleypoly',
|
||||
'ownerID': '62601275618889728',
|
||||
'icon': '4fa0c1063649a739f3fe1a0589aa2c03'
|
||||
message: 'Hey hey!',
|
||||
server: {
|
||||
id: '386659935687147521',
|
||||
name: 'Roleypoly',
|
||||
ownerID: '62601275618889728',
|
||||
icon: '4fa0c1063649a739f3fe1a0589aa2c03'
|
||||
},
|
||||
'perms': {
|
||||
'isAdmin': true,
|
||||
'canManageRoles': true
|
||||
roles: Set([]),
|
||||
perms: {
|
||||
isAdmin: true,
|
||||
canManageRoles: true
|
||||
}
|
||||
})
|
||||
|
||||
const initialState = Set([])
|
||||
const initialState = OrderedMap({})
|
||||
|
||||
export default (state = initialState, { type, data }) => {
|
||||
console.log(__filename, type, data)
|
||||
|
||||
switch (type) {
|
||||
case Symbol.for('update servers'):
|
||||
return data.reduce((acc, s) => acc.add(Map(s)), Set())
|
||||
|
||||
return data.reduce((acc, s) => acc.set(s.id, fromJS(s)), OrderedMap())
|
||||
|
||||
// case Symbol.for('update server roles'):
|
||||
// return state.set(data.id,
|
||||
// state.get(data.id).set('roles', Set(data.roles))
|
||||
// )
|
||||
|
||||
case Symbol.for('add debug server'):
|
||||
return Set([blankServer])
|
||||
return state.set('0', blankServer)
|
||||
|
||||
default:
|
||||
return state
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue