67 lines
1.8 KiB
JavaScript
Raw Normal View History

2018-02-26 12:16:15 +01:00
/**
*
* ConfigPage reducer
*
*/
2018-02-28 17:11:44 +01:00
import { fromJS, List, Map } from 'immutable';
2018-02-26 12:16:15 +01:00
import {
GET_SETTINGS,
GET_SETTINGS_SUCCEEDED,
ON_CANCEL,
2018-02-28 14:57:45 +01:00
ON_CHANGE,
2018-02-28 17:11:44 +01:00
SET_ERRORS,
SUBMIT_ERROR,
SUBMIT_SUCCEEDED,
} from './constants';
const initialState = fromJS({
2018-03-08 10:32:01 +01:00
appEnvironments: List([]),
2018-02-28 17:11:44 +01:00
didCheckErrors: false,
env: '',
2018-02-28 17:11:44 +01:00
formErrors: List([]),
initialData: Map({}),
modifiedData: Map({}),
settings: {},
submitSuccess: false,
});
2018-02-26 12:16:15 +01:00
function configPageReducer(state = initialState, action) {
switch (action.type) {
case GET_SETTINGS:
return state.update('env', () => action.env);
case GET_SETTINGS_SUCCEEDED:
return state
2018-03-08 10:32:01 +01:00
.update('appEnvironments', () => List(action.appEnvironments))
.update('didCheckErrors', v => (v = !v))
2018-02-28 17:11:44 +01:00
.update('formErrors', () => List([]))
.update('initialData', () => Map(action.initialData))
.update('modifiedData', () => Map(action.initialData))
.update('settings', () => action.settings);
case ON_CANCEL:
2018-02-28 17:11:44 +01:00
return state
.update('didCheckErrors', v => (v = !v))
2018-02-28 17:11:44 +01:00
.update('formErrors', () => List([]))
.update('modifiedData', () => state.get('initialData'));
2018-02-28 14:57:45 +01:00
case ON_CHANGE:
return state.updateIn(action.keys, () => action.value);
2018-02-28 17:11:44 +01:00
case SET_ERRORS:
case SUBMIT_ERROR:
return state
.update('didCheckErrors', v => (v = !v))
2018-02-28 17:11:44 +01:00
.update('formErrors', () => List(action.errors));
case SUBMIT_SUCCEEDED:
return state
.update('didCheckErrors', v => (v = !v))
2018-02-28 17:11:44 +01:00
.update('formErrors', () => List([]))
.update('initialData', () => Map(action.data))
.update('modifiedData', () => Map(action.data))
.update('submitSuccess', v => (v = !v));
2018-02-26 12:16:15 +01:00
default:
return state;
}
}
export default configPageReducer;