2020-08-04 16:35:16 +02:00
|
|
|
import produce from 'immer';
|
2020-08-06 13:29:00 +02:00
|
|
|
import { set } from 'lodash';
|
2020-08-04 16:35:16 +02:00
|
|
|
|
|
|
|
|
const initialState = {
|
|
|
|
|
isLoading: true,
|
|
|
|
|
initialData: {},
|
|
|
|
|
modifiedData: {},
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const reducer = (state, action) =>
|
|
|
|
|
// eslint-disable-next-line consistent-return
|
|
|
|
|
produce(state, draftState => {
|
|
|
|
|
switch (action.type) {
|
|
|
|
|
case 'GET_DATA': {
|
|
|
|
|
draftState.isLoading = true;
|
|
|
|
|
draftState.initialData = {};
|
|
|
|
|
draftState.modifiedData = {};
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case 'GET_DATA_SUCCEEDED': {
|
|
|
|
|
draftState.isLoading = false;
|
|
|
|
|
draftState.initialData = action.data;
|
|
|
|
|
draftState.modifiedData = action.data;
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case 'GET_DATA_ERROR': {
|
|
|
|
|
draftState.isLoading = true;
|
|
|
|
|
break;
|
|
|
|
|
}
|
2020-08-06 13:29:00 +02:00
|
|
|
case 'ON_CHANGE': {
|
|
|
|
|
console.log(action.keys);
|
|
|
|
|
set(draftState, ['modifiedData', ...action.keys.split('.')], action.value);
|
|
|
|
|
break;
|
|
|
|
|
}
|
2020-08-04 16:35:16 +02:00
|
|
|
default: {
|
|
|
|
|
return draftState;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
export default reducer;
|
|
|
|
|
export { initialState };
|