2017-11-06 11:14:43 +01:00
|
|
|
/*
|
|
|
|
*
|
|
|
|
* HomePage reducer
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
2017-11-07 14:32:31 +01:00
|
|
|
import { fromJS, List, Map } from 'immutable';
|
2017-11-06 11:14:43 +01:00
|
|
|
|
2017-11-06 17:03:20 +01:00
|
|
|
import {
|
2017-11-07 14:32:31 +01:00
|
|
|
DELETE_DATA,
|
|
|
|
DELETE_DATA_SUCCEEDED,
|
2017-11-06 17:03:20 +01:00
|
|
|
FETCH_DATA_SUCCEEDED,
|
2017-11-08 16:06:21 +01:00
|
|
|
ON_CHANGE,
|
|
|
|
SET_FORM,
|
2017-11-06 17:03:20 +01:00
|
|
|
} from './constants';
|
2017-11-06 11:14:43 +01:00
|
|
|
|
2017-11-06 17:03:20 +01:00
|
|
|
const initialState = fromJS({
|
|
|
|
data: List([]),
|
2017-11-07 14:32:31 +01:00
|
|
|
dataToDelete: Map({}),
|
|
|
|
deleteEndPoint: '',
|
2017-11-08 16:06:21 +01:00
|
|
|
initialData: Map({}),
|
|
|
|
modifiedData: Map({}),
|
|
|
|
showButtons: false,
|
2017-11-06 17:03:20 +01:00
|
|
|
});
|
2017-11-06 11:14:43 +01:00
|
|
|
|
|
|
|
function homePageReducer(state = initialState, action) {
|
|
|
|
switch (action.type) {
|
2017-11-07 14:32:31 +01:00
|
|
|
case DELETE_DATA:
|
|
|
|
return state
|
|
|
|
.set('dataToDelete', Map(action.dataToDelete))
|
|
|
|
.set('deleteEndPoint', action.deleteEndPoint);
|
|
|
|
case DELETE_DATA_SUCCEEDED:
|
|
|
|
return state
|
|
|
|
.update('data', list => list.splice(action.indexDataToDelete, 1))
|
|
|
|
.set('deleteEndPoint', '')
|
2018-01-15 11:28:43 +01:00
|
|
|
.set('dataToDelete', Map({}));
|
2017-11-06 17:03:20 +01:00
|
|
|
case FETCH_DATA_SUCCEEDED:
|
|
|
|
return state.set('data', List(action.data));
|
2017-11-08 16:06:21 +01:00
|
|
|
case ON_CHANGE:
|
|
|
|
return state
|
|
|
|
.updateIn(['modifiedData', action.key], () => action.value)
|
|
|
|
.set('showButtons', true);
|
|
|
|
case SET_FORM:
|
|
|
|
return state
|
|
|
|
.set('initialData', action.form)
|
|
|
|
.set('modifiedData', action.form);
|
2017-11-06 11:14:43 +01:00
|
|
|
default:
|
|
|
|
return state;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export default homePageReducer;
|