InsidersByte/honeymoon-gift-list

View on GitHub
public/reducers/auth.js

Summary

Maintainability
A
1 hr
Test Coverage
import * as TYPES from '../constants/actionTypes';
import jwtDecoder from '../utils/jwtDecoder';

const auth = {
  user: {},
  isAuthenticated: false,
  saving: false,
};

export default function authReducer(state = auth, action) {
  switch (action.type) {
    case TYPES.LOGIN_REQUEST:
      return Object.assign({}, state, { saving: true });

    case TYPES.LOGIN_SUCCESS: {
      const { token } = action.payload;
      const user = jwtDecoder(token);

      return Object.assign({}, state, { user, isAuthenticated: true, saving: false });
    }

    case TYPES.LOGIN_ERROR:
      return Object.assign({}, state, { saving: false });

    case TYPES.LOGOUT:
      return Object.assign({}, state, { user: {}, isAuthenticated: false, saving: false });

    case TYPES.REQUEST_PASSWORD_RESET_REQUEST:
      return Object.assign({}, state, { saving: true });

    case TYPES.REQUEST_PASSWORD_RESET_SUCCESS:
      return Object.assign({}, state, { saving: false });

    case TYPES.REQUEST_PASSWORD_RESET_ERROR:
      return Object.assign({}, state, { saving: false });

    case TYPES.PASSWORD_RESET_REQUEST:
      return Object.assign({}, state, { saving: true });

    case TYPES.PASSWORD_RESET_SUCCESS:
      return Object.assign({}, state, { saving: false });

    case TYPES.PASSWORD_RESET_ERROR:
      return Object.assign({}, state, { saving: false });

    default:
      return state;
  }
}