53 lines
1.1 KiB
JavaScript
Raw Normal View History

2018-02-20 11:34:15 +01:00
/**
*
* ListPage reducer
*
*/
2018-02-20 15:51:20 +01:00
import { fromJS, List, Map } from 'immutable';
2018-02-20 11:34:15 +01:00
// ListPage constants
import {
2018-02-20 19:20:31 +01:00
CHANGE_PARAMS,
DELETE_DATA_SUCCESS,
2018-02-20 14:25:45 +01:00
GET_DATA_SUCCEEDED,
2018-02-20 19:20:31 +01:00
SET_PARAMS,
2018-02-20 11:34:15 +01:00
} from './constants';
const initialState = fromJS({
2018-02-20 14:25:45 +01:00
count: 0,
2018-02-20 11:34:15 +01:00
params: Map({
2018-02-20 15:51:20 +01:00
limit: 10,
page: 1,
2018-02-20 19:20:31 +01:00
sort: '',
2018-02-20 11:34:15 +01:00
}),
2018-02-20 15:51:20 +01:00
records: List([]),
2018-02-20 11:34:15 +01:00
});
function listPageReducer(state = initialState, action) {
switch (action.type) {
2018-02-20 19:20:31 +01:00
case DELETE_DATA_SUCCESS:
return state.update('records', (list) => (
2018-02-22 12:55:13 +01:00
list.filter(obj => {
if (obj._id) {
return obj._id !== action.id;
2018-02-20 19:20:31 +01:00
}
2018-02-22 12:55:13 +01:00
return obj.id !== parseInt(action.id, 10);
2018-02-20 19:20:31 +01:00
})
));
case CHANGE_PARAMS:
return state.updateIn(action.keys, () => action.value);
2018-02-20 14:25:45 +01:00
case GET_DATA_SUCCEEDED:
return state
2018-02-20 15:51:20 +01:00
.update('count', () => action.data[0].count)
.update('records', () => List(action.data[1]));
2018-02-20 19:20:31 +01:00
case SET_PARAMS:
return state.update('params', () => Map(action.params));
2018-02-20 11:34:15 +01:00
default:
return state;
}
}
export default listPageReducer;