Source: reducers/userReducer.js

/**
 * Redux user reducer
 * @module
 */
import { loadUser } from '../utils/storage'
import userConstants from '../constants/userConstants'

const userData = loadUser()
const initialState = userData ? { loggedIn: true, data: userData } : { loggedIn: false, data: {} }

/**
 * user reducer that controls user state
 * @function
 * @param {Object} state - current state
 * @param {Object} action - dispatched action
 */
const userReducer = (state = initialState, action) => {
  console.log('userReducer', action)
  switch (action.type) {
    case userConstants.REQUEST:
      return {
        loading: true,
        data: state.data,
        loggedIn: !!state.loggedIn
      }
    case userConstants.LOGIN_SUCCESS:
      return {
        loggedIn: true,
        data: action.data
      }
    case userConstants.PROFILE_SUCCESS:
      return {
        loggedIn: true,
        data: state.data,
        profile: action.profile
      }
    case userConstants.FAILURE:
    case userConstants.LOGOUT:
      return { loggedIn: false, data: {} }
    default:
      return state
  }
}

export default userReducer