UNPKG

@alphanova/builder

Version:

A fully fledged facade that facilitates object manipulation

116 lines (115 loc) 4.38 kB
/** * * @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; }