2017-11-07 14:32:31 +01:00
|
|
|
/*
|
|
|
|
*
|
|
|
|
* EditPage reducer
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
2017-11-15 14:00:51 +01:00
|
|
|
import { fromJS, Map } from 'immutable';
|
2017-11-07 14:32:31 +01:00
|
|
|
import {
|
2017-11-07 18:16:42 +01:00
|
|
|
ADD_USER,
|
2017-11-15 15:11:10 +01:00
|
|
|
GET_PERMISSIONS_SUCCEEDED,
|
|
|
|
GET_ROLE_SUCCEEDED,
|
2017-11-07 16:33:15 +01:00
|
|
|
ON_CANCEL,
|
|
|
|
ON_CHANGE_INPUT,
|
2017-11-07 18:16:42 +01:00
|
|
|
ON_CLICK_DELETE,
|
2017-11-15 14:00:51 +01:00
|
|
|
SET_FORM,
|
2017-11-07 14:32:31 +01:00
|
|
|
} from './constants';
|
|
|
|
|
2017-11-07 16:33:15 +01:00
|
|
|
const initialState = fromJS({
|
2017-11-07 18:16:42 +01:00
|
|
|
didDeleteUser: false,
|
2017-11-15 14:00:51 +01:00
|
|
|
didGetUsers: false,
|
|
|
|
initialData: Map({}),
|
|
|
|
modifiedData: Map({}),
|
2017-11-07 16:33:15 +01:00
|
|
|
});
|
2017-11-07 14:32:31 +01:00
|
|
|
|
|
|
|
function editPageReducer(state = initialState, action) {
|
|
|
|
switch (action.type) {
|
2017-11-07 18:16:42 +01:00
|
|
|
case ADD_USER:
|
2017-11-08 16:06:21 +01:00
|
|
|
return state
|
|
|
|
.updateIn(['modifiedData', 'users'], list => list.push(action.newUser));
|
2017-11-15 15:11:10 +01:00
|
|
|
case GET_PERMISSIONS_SUCCEEDED:
|
|
|
|
return state
|
|
|
|
.updateIn(['initialData', 'permissions'], () => action.permissions)
|
|
|
|
.updateIn(['modifiedData', 'permissions'], () => action.permissions);
|
|
|
|
case GET_ROLE_SUCCEEDED:
|
|
|
|
return state
|
|
|
|
.set('didGetUsers', !state.get('didGetUsers'))
|
|
|
|
.set('initialData', action.form)
|
|
|
|
.set('modifiedData', action.form);
|
2017-11-07 16:33:15 +01:00
|
|
|
case ON_CANCEL:
|
|
|
|
return state
|
2017-11-08 16:06:21 +01:00
|
|
|
.set('didDeleteUser', !state.get('didDeleteUser'))
|
|
|
|
.set('modifiedData', state.get('initialData'));
|
2017-11-07 16:33:15 +01:00
|
|
|
case ON_CHANGE_INPUT:
|
|
|
|
return state
|
2017-11-16 13:43:55 +01:00
|
|
|
.updateIn(action.keys, () => action.value);
|
2017-11-07 18:16:42 +01:00
|
|
|
case ON_CLICK_DELETE:
|
|
|
|
return state
|
|
|
|
.set('didDeleteUser', !state.get('didDeleteUser'))
|
|
|
|
.updateIn(['modifiedData', 'users'], list => list.filter(o => o.name !== action.itemToDelete.name));
|
2017-11-15 14:00:51 +01:00
|
|
|
case SET_FORM:
|
|
|
|
return state
|
|
|
|
.set('didGetUsers', !state.get('didGetUsers'))
|
|
|
|
.set('initialData', action.form)
|
|
|
|
.set('modifiedData', action.form);
|
2017-11-07 14:32:31 +01:00
|
|
|
default:
|
|
|
|
return state;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export default editPageReducer;
|