46 lines
1.0 KiB
JavaScript
46 lines
1.0 KiB
JavaScript
import _ from 'lodash';
|
|
import {
|
|
GATEWAY_DATA_RECEIVED,
|
|
DEVICETYPE_DATA_RECEIVED,
|
|
DEVICE_DATA_RECEIVED,
|
|
COMPANY_DATA_RECEIVED,
|
|
} from '../actions/types';
|
|
|
|
const INITIAL_STATE = {
|
|
gateways: {},
|
|
devicetypes: {},
|
|
allDevices: {},
|
|
companies: {},
|
|
devices: {},
|
|
};
|
|
|
|
export default (state = INITIAL_STATE, action) => {
|
|
switch (action.type) {
|
|
case GATEWAY_DATA_RECEIVED:
|
|
return { ...state, gateways: _.keyBy(action.payload, g => g.id) };
|
|
|
|
case COMPANY_DATA_RECEIVED:
|
|
return { ...state, companies: _.keyBy(action.payload, c => c.id) };
|
|
|
|
case DEVICETYPE_DATA_RECEIVED:
|
|
return {
|
|
...state,
|
|
devicetypes: _.keyBy(action.payload, d => d.id),
|
|
};
|
|
|
|
case DEVICE_DATA_RECEIVED:
|
|
return {
|
|
...state,
|
|
devices: _.groupBy(action.payload, (device) => {
|
|
if (state.devicetypes[device.deviceTypeId]) {
|
|
return state.devicetypes[device.deviceTypeId].id;
|
|
}
|
|
}),
|
|
allDevices: _.keyBy(action.payload, d => d.id),
|
|
};
|
|
|
|
default:
|
|
return state;
|
|
}
|
|
};
|