jameshawkinsjr/hype

View on GitHub
frontend/actions/session_actions.js

Summary

Maintainability
A
2 hrs
Test Coverage
import * as ApiUtil from '../util/session_api_util';

// Action creators
export const RECEIVE_CURRENT_USER = 'RECEIVE_CURRENT_USER';
export const LOGOUT_CURRENT_USER = 'LOGOUT_CURRENT_USER';
export const RECEIVE_SESSION_ERRORS = 'RECEIVE_SESSION_ERRORS';
export const CLEAR_SESSION_ERRORS = 'CLEAR_SESSION_ERRORS';
export const LANDING_PAGE_SIGNUP = 'LANDING_PAGE_SIGNUP';

export const receiveCurrentUser = currentUser => ({
        type: RECEIVE_CURRENT_USER,
        currentUser,
});

export const logoutCurrentUser = () => ({
        type: LOGOUT_CURRENT_USER,
});

export const receiveSessionErrors = errors => ({
        type: RECEIVE_SESSION_ERRORS,
        errors,
});

export const clearSessionErrors = () => ({
        type: CLEAR_SESSION_ERRORS,
});

export const landingPageSignup = email => ({
        type: LANDING_PAGE_SIGNUP,
        email,
})

// Thunk action creators
export const login = (user) => dispatch => (
    ApiUtil.login(user)
        .then(user => dispatch(receiveCurrentUser(user)),
            err => (dispatch(receiveSessionErrors(err.responseJSON)))
        )   
);

export const signup = (user) => dispatch => (
    ApiUtil.signup(user)
        .then(user => dispatch(receiveCurrentUser(user)),
            err => (dispatch(receiveSessionErrors(err.responseJSON)))
        )   
);

export const logout = () => dispatch => (
    ApiUtil.logout()
        .then( () => dispatch(logoutCurrentUser()),
            err => (dispatch(receiveSessionErrors(err.responseJSON)))
        )   
);