diff --git a/src/api/hooks.js b/src/api/hooks.js index 05503ae..1b245af 100644 --- a/src/api/hooks.js +++ b/src/api/hooks.js @@ -53,10 +53,11 @@ function createAPIHook(method) { payload: result.data, }); } catch (error) { + const errorPayload = getErrorPayload(error); dispatch({ type: API_ACTIONS.FAILURE, status: error.response && error.response.status, - payload: getErrorPayload(error), + payload: errorPayload, }); } }, [urlRoot, contentType]); @@ -80,6 +81,12 @@ function APIReducer(state, action) { if (action.status === 403) { window.location.assign(ForisURLs.login); } + + // Not an API error - should be rethrown. + if (action.payload && action.payload.stack && action.payload.message) { + throw (action.payload); + } + return { state: API_STATE.ERROR, data: action.payload, diff --git a/src/api/utils.js b/src/api/utils.js index 9da04a0..c8e340c 100644 --- a/src/api/utils.js +++ b/src/api/utils.js @@ -65,9 +65,8 @@ export function getErrorPayload(error) { if (error.request) { return _("No response received."); } - /* eslint no-console: "off" */ - console.error(error); - return _("An unknown error occurred. Check the console for more info."); + // Return original error because it's not directly related to API request/response. + return error; } export function getJSONErrorMessage(error) {