MetaPhase-Consulting/State-TalentMAP

View on GitHub
src/actions/feedback.js

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
import api from '../api';
import { propOrDefault } from '../utilities';

export function feedbackHasErrored(message) {
  return {
    type: 'FEEDBACK_HAS_ERRORED',
    hasErrored: message,
  };
}

export function feedbackIsSending(bool) {
  return {
    type: 'FEEDBACK_IS_SENDING',
    isLoading: bool,
  };
}

export function feedbackSuccess(bool) {
  return {
    type: 'FEEDBACK_SUCCESS',
    isSuccess: bool,
  };
}

export function feedbackSubmitData(comments, isInterestedInHelping = false) {
  return (dispatch) => {
    dispatch(feedbackIsSending(true));
    dispatch(feedbackSuccess(false));
    dispatch(feedbackHasErrored(false));
    api().post('/feedback/', { comments, is_interested_in_helping: isInterestedInHelping })
      .then((response) => {
        dispatch(feedbackIsSending(false));
        dispatch(feedbackHasErrored(false));
        return response.data;
      })
      .then(() => dispatch(feedbackSuccess(true)))
      .catch((err) => {
        const errorMessage = propOrDefault(
          err,
          'response.data.comments[0]',
          'An error occurred trying to submit feedback. Please try again.',
        );

        dispatch(feedbackHasErrored(errorMessage));
        dispatch(feedbackIsSending(false));
        dispatch(feedbackSuccess(false));
      });
  };
}