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
|
|
|
|
2018-02-28 12:46:12 +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,
|
2018-02-28 12:46:12 +01:00
|
|
|
} 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,
|
2018-02-28 12:46:12 +01:00
|
|
|
env: '',
|
2018-02-28 17:11:44 +01:00
|
|
|
formErrors: List([]),
|
2018-02-28 12:46:12 +01:00
|
|
|
initialData: Map({}),
|
|
|
|
modifiedData: Map({}),
|
|
|
|
settings: {},
|
2018-03-05 12:28:29 +01:00
|
|
|
submitSuccess: false,
|
2018-02-28 12:46:12 +01:00
|
|
|
});
|
2018-02-26 12:16:15 +01:00
|
|
|
|
|
|
|
function configPageReducer(state = initialState, action) {
|
|
|
|
switch (action.type) {
|
2018-02-28 12:46:12 +01:00
|
|
|
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))
|
2020-02-12 21:55:56 +01:00
|
|
|
.update('didCheckErrors', v => (v = !v))
|
2018-02-28 17:11:44 +01:00
|
|
|
.update('formErrors', () => List([]))
|
2018-02-28 12:46:12 +01:00
|
|
|
.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
|
2020-02-12 21:55:56 +01:00
|
|
|
.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:
|
2020-02-12 21:55:56 +01:00
|
|
|
return state.updateIn(action.keys, () => action.value);
|
2018-02-28 17:11:44 +01:00
|
|
|
case SET_ERRORS:
|
|
|
|
case SUBMIT_ERROR:
|
|
|
|
return state
|
2020-02-12 21:55:56 +01:00
|
|
|
.update('didCheckErrors', v => (v = !v))
|
2018-02-28 17:11:44 +01:00
|
|
|
.update('formErrors', () => List(action.errors));
|
|
|
|
case SUBMIT_SUCCEEDED:
|
|
|
|
return state
|
2020-02-12 21:55:56 +01:00
|
|
|
.update('didCheckErrors', v => (v = !v))
|
2018-02-28 17:11:44 +01:00
|
|
|
.update('formErrors', () => List([]))
|
|
|
|
.update('initialData', () => Map(action.data))
|
2018-03-05 12:28:29 +01:00
|
|
|
.update('modifiedData', () => Map(action.data))
|
2020-02-12 21:55:56 +01:00
|
|
|
.update('submitSuccess', v => (v = !v));
|
2018-02-26 12:16:15 +01:00
|
|
|
default:
|
|
|
|
return state;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export default configPageReducer;
|