@alphanova/builder
Version:
A fully fledged facade that facilitates object manipulation
116 lines (115 loc) • 4.38 kB
JavaScript
/**
*
* @deprecated
*/
export function GeneralReducer(initialState, model_name) {
const reducer = (state = initialState, action) => {
switch (action.type) {
case `ADD_${model_name}`: {
const added_data = {};
if (action.payload) {
if (Array.isArray(action.payload)) {
action.payload.forEach((value) => {
added_data[value.key] = value.value;
});
}
else {
if (typeof action.payload.value !== 'string')
added_data[action.payload.key] = action.payload.value;
}
}
else {
return state;
}
const addedState = { ...state, ...added_data };
return addedState;
}
case `DELETE_${model_name}`: {
const deleted_data = { ...state };
if (action.payload) {
if (Array.isArray(action.payload)) {
action.payload.forEach((value) => {
delete deleted_data[value.key];
});
}
else {
delete deleted_data[action.payload.key];
}
}
else {
return state;
}
return deleted_data;
}
case `CHANGE_KEY_${model_name}`: {
const updatedData = { ...state };
if (action.payload && !Array.isArray(action.payload) && typeof action.payload.value === 'string') {
const { key, value } = action.payload;
const data = state[key || ''];
if (data) {
delete updatedData[key || ''];
updatedData[value] = data;
}
}
return { ...state, ...updatedData };
}
case `UPDATE_${model_name}`: {
const updated_data = {};
if (action.payload) {
if (Array.isArray(action.payload)) {
action.payload.forEach((value) => {
updated_data[value.key] = value.value;
});
}
else {
if (typeof action.payload.value !== 'string')
updated_data[action.payload.key] = action.payload.value;
}
}
else {
return state;
}
return { ...state, ...updated_data };
}
case `FETCH_SUCCESS_${model_name}`: {
const fetched_data = {};
if (action.payload) {
if (Array.isArray(action.payload)) {
action.payload.forEach((value) => {
fetched_data[value.key] = value.value;
});
}
else {
if (typeof action.payload.value !== 'string')
fetched_data[action.payload?.key] = action.payload?.value;
}
}
else {
return { ...state };
}
return { ...state, ...fetched_data };
}
case `FETCH_IDLE_${model_name}`: {
const idle_data = {};
if (action.payload) {
if (Array.isArray(action.payload)) {
action.payload.forEach((value) => {
idle_data[value.key] = value.value;
});
}
else {
if (typeof action.payload.value !== 'string')
idle_data[action.payload?.key] = action.payload?.value;
}
}
else {
return { ...state };
}
return { ...state, ...idle_data };
}
default:
return state;
}
};
return reducer;
}