ajeetchaulagain/react-clean-code-pattern

View on GitHub
src/reducers/request.js

Summary

Maintainability
A
1 hr
Test Coverage
import {
  GET_ALL_SUCCESS,
  GET_ALL_FAILURE,
  PUT_FAILURE,
  PUT_SUCCESS,
} from "../actions/request";

export const REQUEST_STATUS = {
  LOADING: "loading",
  SUCCESS: "success",
  ERROR: "error",
};

const requestReducer = (state, action) => {
  switch (action.type) {
    case GET_ALL_SUCCESS:
      return {
        ...state,
        records: action.records,
        status: REQUEST_STATUS.SUCCESS,
      };

    case GET_ALL_FAILURE:
      return {
        ...state,
        status: REQUEST_STATUS.ERROR,
        error: action.error,
      };

    case PUT_SUCCESS:
      const { records } = state;
      const { record } = action;
      const recordIndex = records.map((rec) => rec.id).indexOf(record.id);
      return {
        ...state,
        records: [
          ...records.slice(0, recordIndex),
          record,
          ...records.slice(recordIndex + 1),
        ],
      };
    case PUT_FAILURE:
      console.log("PUT_FAILURE");
      return {
        ...state,
        error: action.error,
      };
    default:
      return state;
  }
};

export default requestReducer;