userReducers.js 4.21 KB
import {
  LOAD_USER_REQUEST,
  LOAD_USER_SUCCESS,
  LOAD_USER_FAIL,
  FORGOT_PASSWORD_REQUEST,
  FORGOT_PASSWORD_SUCCESS,
  FORGOT_PASSWORD_FAIL,
  RESET_PASSWORD_REQUEST,
  RESET_PASSWORD_SUCCESS,
  RESET_PASSWORD_FAIL,
  UPDATE_USER_PROFILE_REQUEST,
  UPDATE_USER_PROFILE_SUCCESS,
  UPDATE_USER_PROFILE_RESET,
  UPDATE_USER_PROFILE_FAIL,
  REGISTER_USER_REQUEST,
  REGISTER_USER_SUCCESS,
  REGISTER_USER_FAIL,
  CLEAR_ERRORS,
  GET_END_USER_FAIL,
  GET_END_USER_SUCCESS,
  GET_END_USER_REQUEST
} from "../constants/userConstants";

// Auth reducer
export const authReducer = (state = { loading: false, success: false, user: null }, action) => {
  switch (action.type) {
    case REGISTER_USER_REQUEST:
      return {
        loading: true
      };

    case REGISTER_USER_SUCCESS:
      console.log(`Received dispatch REGISTER_USER_SUCCESS`);

      return {
        loading: false,
        success: true
      };

    case REGISTER_USER_FAIL:
      return {
        loading: false,
        error: action.payload.error.message
      };

    case CLEAR_ERRORS:
      return {
        ...state,
        error: null
      };

    default:
      return state;
  }
};

// Load user reducer
export const loadedUserReducer = (state = { loading: true, success: false, loadedUser: null }, action) => {
  switch (action.type) {
    case LOAD_USER_REQUEST:
      return {
        loading: true,
        isAuthenticated: false
      };

    case LOAD_USER_SUCCESS:
      return {
        loading: false,
        isAuthenticated: true,
        loadedUser: action.payload
      };

    case LOAD_USER_FAIL:
      return {
        loading: false,
        isAuthenticated: true,
        error: action.payload.error.message
      };

    case CLEAR_ERRORS:
      return {
        ...state,
        error: null
      };

    default:
      return state;
  }
};

// User reducer
export const userReducer = (state = {}, action) => {
  switch (action.type) {
    case UPDATE_USER_PROFILE_REQUEST:
      return {
        loading: true
      };

    case UPDATE_USER_PROFILE_SUCCESS:
      return {
        loading: false,
        isUpdated: action.payload
      };

    case UPDATE_USER_PROFILE_RESET:
      return {
        loading: false,
        isUpdated: false
      };

    case UPDATE_USER_PROFILE_FAIL:
      return {
        loading: false,
        error: action.payload.error.message
      };

    case CLEAR_ERRORS:
      return {
        ...state,
        error: null
      };

    default:
      return state;
  }
};

// Forgot password reducer
export const forgotPasswordReducer = (state = {}, action) => {
  switch (action.type) {
    case FORGOT_PASSWORD_REQUEST:
      return {
        loading: true
      };

    case FORGOT_PASSWORD_SUCCESS:
      return {
        loading: false,
        message: action.payload
      };

    case FORGOT_PASSWORD_FAIL:
      return {
        loading: false,
        error: action.payload.error.message
      };

    case CLEAR_ERRORS:
      return {
        ...state,
        error: null
      };

    default:
      return state;
  }
};

// Reset password reducer
export const resetPasswordReducer = (state = {}, action) => {
  switch (action.type) {
    case RESET_PASSWORD_REQUEST:
      return {
        loading: true
      };

    case RESET_PASSWORD_SUCCESS:
      return {
        loading: false,
        message: action.payload
      };

    case RESET_PASSWORD_FAIL:
      return {
        loading: false,
        error: action.payload.error.message
      };

    case CLEAR_ERRORS:
      return {
        ...state,
        error: null
      };

    default:
      return state;
  }
};


// Load user reducer
export const getEndUserReducer = (state = { loading: false, success: false, endUser: null }, action) => {
  switch (action.type) {
    case GET_END_USER_REQUEST:
      return {
        loading: true,
        isAuthenticated: false
      };

    case GET_END_USER_SUCCESS:
      return {
        loading: false,
        isAuthenticated: true,
        endUser: action.payload
      };

    case GET_END_USER_FAIL:
      return {
        loading: false,
        isAuthenticated: true,
        error: action.payload.error.message
      };

    case CLEAR_ERRORS:
      return {
        ...state,
        error: null
      };

    default:
      return state;
  }
};