DDCreationStudios/votingApp

View on GitHub
src/ducks/user.js

Summary

Maintainability
B
5 hrs
Test Coverage
import axios from 'axios';

// Actions
const LOGIN = 'user/LOGIN';
const LOGOUT = 'user/LOGOUT';
const FETCH_USER = 'user/FETCH_USER';

// reducer
export default function Users(state = {}, action) {
  switch (action.type) {
    case FETCH_USER:
      const temp = () => {
        if (action.users === undefined) {
          return false;
        }
        return true;
      };
      return {
        current: action.users,
        loggedIn: temp(),
      };
    case LOGIN:
      return {
        ...state,
        ...action.user,
        loggedIn: true,
      };
    case LOGOUT:
      return {
        ...state,
        loggedIn: false,
      };
    default:
      return state;
  }
}

// actionCreators
export const login = user => ({
  type: LOGIN,
  user,
});
export const logout = user => ({
  type: LOGOUT,
  user,
});
export const receiveUser = users => ({
  type: FETCH_USER,
  users,
});

// Async actions with thunk
export function fetchUser() {
  return dispatch =>
        axios
            .get('/api/profile')
            .then((res) => {
  dispatch(receiveUser(res.data.user));
  // console.log(res);
})
            .catch((err) => {
  console.warn(err);
});
}

export function logoutUser() {
  return dispatch =>
        axios
            .get('/api/logout')
            .then((res) => {
  dispatch(logout(res.data.user));
  // console.log(res);
})
            .catch((err) => {
  console.warn(err);
});
}