jameshawkinsjr/hype

View on GitHub
frontend/actions/messages_actions.js

Summary

Maintainability
B
5 hrs
Test Coverage
import * as ApiUtil from '../util/messages_api_util';

// Action creators
export const RECEIVE_ALL_MESSAGES = 'RECEIVE_ALL_MESSAGES';
export const RECEIVE_MESSAGE = 'RECEIVE_MESSAGE';
export const RECEIVE_MESSAGE_ERRORS = 'RECEIVE_MESSAGE_ERRORS';
export const CLEAR_MESSAGE_ERRORS = 'CLEAR_MESSAGE_ERRORS';
export const REMOVE_MESSAGE = 'REMOVE_MESSAGE';

export const receiveMessages = ({messages, users}) => ({
        type: RECEIVE_ALL_MESSAGES,
        messages,
        users,
});

export const receiveMessage = message => ({
        type: RECEIVE_MESSAGE,
        message,
});

export const removeMessage = messageId => ({
        type: REMOVE_MESSAGE,
        messageId
});

export const receiveMessageErrors = errors => ({
        type: RECEIVE_MESSAGE_ERRORS,
        errors,
});

export const clearMessageErrors = () => ({
        type: CLEAR_MESSAGE_ERRORS,
});

// Thunk action creators
export const fetchMessages = (chatroomId) => dispatch => (
        ApiUtil.fetchMessages(chatroomId)
                .then(payload => dispatch(receiveMessages(payload)),
                err => (dispatch(receiveMessageErrors(err.responseJSON)))       
        )
);
    
export const fetchMessage = (messageId) => dispatch => (
        ApiUtil.fetchMessage(messageId)
                .then(message => dispatch(receiveMessage(message)),
                err => (dispatch(receiveMessageErrors(err.responseJSON)))       
        )
);

export const createMessage = (message) => dispatch => (
        ApiUtil.createMessage(message)
);
export const demoMessage = (chatroomId) => dispatch => (
        ApiUtil.demoMessage(chatroomId)
);

export const editMessage = (message) => dispatch => (
        ApiUtil.editMessage(message)
                .then(message => dispatch(receiveMessage(message)),
                err => (dispatch(receiveMessageErrors(err.responseJSON)))       
        )
);

export const destroyMessage = (messageId) => dispatch => (
        ApiUtil.destroyMessage(messageId)
                .then(messageId => dispatch(removeMessage(messageId)),
                err => (dispatch(receiveMessageErrors(err.responseJSON)))       
        )
);