2017-08-26 16:04:28 +02:00
|
|
|
import { UPDATE_RESOURCES, RESOURCES_REMOVED } from '../actions/resources';
|
2017-09-08 06:55:47 +02:00
|
|
|
import { SOCKET_STATE, SOCKET_UPDATE } from '../actions/socket';
|
2017-08-26 16:04:28 +02:00
|
|
|
|
|
|
|
export default function resourceReducer(type) {
|
|
|
|
return (state = {}, action) => {
|
|
|
|
switch (action.type) {
|
|
|
|
case UPDATE_RESOURCES:
|
|
|
|
return {
|
|
|
|
...state,
|
|
|
|
...action.resources
|
|
|
|
.filter(r => r.type === type)
|
|
|
|
.reduce((s, r) => ({
|
|
|
|
...s,
|
|
|
|
[r.id]: { ...state[r.id], ...r }
|
|
|
|
}), {})
|
|
|
|
};
|
|
|
|
case RESOURCES_REMOVED:
|
|
|
|
return Object.values(state)
|
|
|
|
.filter(r => action.ids.indexOf(r.id) === -1)
|
|
|
|
.reduce((s, r) => ({ ...s, [r.id]: r }), {});
|
2017-09-08 06:55:47 +02:00
|
|
|
case SOCKET_UPDATE:
|
|
|
|
const _state = action.state;
|
|
|
|
return _state === SOCKET_STATE.CONNECTING ? {} : state;
|
2017-08-26 16:04:28 +02:00
|
|
|
}
|
|
|
|
return state;
|
|
|
|
};
|
|
|
|
}
|