import { get } from 'lodash' import { update } from 'pubsweet-client/src/helpers/api' const DECISION_REQUEST = 'tc/DECISION_REQUEST' const DECISION_SUCCESS = 'tc/DECISION_SUCCESS' const DECISION_ERROR = 'tc/DECISION_ERROR' const decisionRequest = () => ({ type: DECISION_REQUEST, }) const decisionSuccess = () => ({ type: DECISION_SUCCESS, }) const decisionError = error => ({ type: DECISION_ERROR, error, }) export const technicalDecision = ({ step, agree, token, comments, collectionId, }) => dispatch => { dispatch(decisionRequest()) return update(`/collections/${collectionId}/status`, { step, token, agree, comments, }).then( r => { dispatch(decisionSuccess()) return r }, err => { const errorMessage = get( JSON.parse(err.response), 'error', 'Oops! Something went wrong!', ) dispatch(decisionError(errorMessage)) throw errorMessage }, ) } export const technicalCheckFetching = state => get(state, 'technicalCheck.fetching', false) export default (state = {}, action = {}) => { switch (action.type) { case DECISION_REQUEST: return { ...state, fetching: true, } case DECISION_SUCCESS: return { error: null, fetching: false, } case DECISION_ERROR: return { error: action.error, fetching: false, } default: return state } }