import UserActionTypes from "./user.types";

const INITIAL_STATE = {
  currentUser: {
    authorized: null,
    language: "en_us"
  },
  bodyshop: null,
  error: null
};

const userReducer = (state = INITIAL_STATE, action) => {
  switch (action.type) {
    case UserActionTypes.SIGN_IN_SUCCESS:
      return {
        ...state,
        currentUser: action.payload,
        error: null
      };
    case UserActionTypes.SIGN_OUT_SUCCESS:
      return {
        ...state,
        currentUser: { authorized: false },
        error: null
      };
    case UserActionTypes.UNAUTHORIZED_USER:
      return {
        ...state,
        error: null,
        currentUser: { authorized: false }
      };
    case UserActionTypes.SET_USER_LANGUAGE:
      return {
        ...state,
        language: action.payload
      };
    case UserActionTypes.UPDATE_USER_DETAILS_SUCCESS:
      return {
        ...state,
        currentUser: {
          ...state.currentUser,
          ...action.payload //Spread current user details in.
        }
      };

    case UserActionTypes.SET_SHOP_DETAILS:
      return { ...state, bodyshop: action.payload };
    case UserActionTypes.SIGN_IN_FAILURE:
    case UserActionTypes.SIGN_OUT_FAILURE:
    case UserActionTypes.EMAIL_SIGN_UP_FAILURE:
      return {
        ...state,
        error: action.payload
      };
    default:
      return state;
  }
};

export default userReducer;
