import { createAction, handleActions } from 'redux-actions';

const defaultState = {
  user_id: '',
  username: '',
  email: '',
  firstName: '',
  lastName: '',
  addressOne: '',
  addressTwo: '',
  cardNumber: '',
  isAuthenticated: false,
};

// ACTIONS

const setProfile = createAction('SET_PROFILE');
const setAuthentication = createAction('SET_AUTHENTICATION');

const reducer = handleActions(
  {
    [setProfile]: (state, { payload }) => ({
      ...state,
      user_id: payload.user_id,
      username: payload.username,
      email: payload.email,
      firstName: payload.first_name,
      lastName: payload.last_name,
      addressOne: payload.addressOne,
      addressTwo: payload.addressTwo,
      cardNumber: payload.cardNumber,
    }),
    [setAuthentication]: (state, { payload }) => {
      if (payload === true) {
        return { ...state, isAuthenticated: true };
      }

      return { ...state, isAuthenticated: false };
    },
  },
  defaultState
);

const getAuthInfo = (state) => state.login;

export default reducer;
export { setProfile, setAuthentication, getAuthInfo };