sync: full redux retrofit done

This commit is contained in:
41666 2017-12-11 18:06:25 -06:00
parent cfc623b228
commit f5220aa6dc
14 changed files with 206 additions and 122 deletions

View file

@ -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

View 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
}
}

View file

@ -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