diff --git a/client/coral-admin/src/actions/assets.js b/client/coral-admin/src/actions/assets.js index 8a18a8e3f..369305dc8 100644 --- a/client/coral-admin/src/actions/assets.js +++ b/client/coral-admin/src/actions/assets.js @@ -9,6 +9,7 @@ import { } from '../constants/assets'; import coralApi from '../../../coral-framework/helpers/request'; +import t from 'coral-framework/services/i18n'; /** * Action disptacher related to assets @@ -18,23 +19,30 @@ import coralApi from '../../../coral-framework/helpers/request'; // Get comments to fill each of the three lists on the mod queue export const fetchAssets = (skip = '', limit = '', search = '', sort = '', filter = '') => (dispatch) => { dispatch({type: FETCH_ASSETS_REQUEST}); - return coralApi(`/assets?skip=${skip}&limit=${limit}&sort=${sort}&search=${search}&filter=${filter}`) - .then(({result, count}) => - dispatch({type: FETCH_ASSETS_SUCCESS, - assets: result, - count - })) - .catch((error) => dispatch({type: FETCH_ASSETS_FAILURE, error})); + coralApi(`/assets?skip=${skip}&limit=${limit}&sort=${sort}&search=${search}&filter=${filter}`) + .then(({result, count}) => + dispatch({type: FETCH_ASSETS_SUCCESS, + assets: result, + count + })) + .catch((error) => { + console.error(error); + const errorMessage = error.translation_key ? t(`error.${error.translation_key}`) : error.toString(); + dispatch({type: FETCH_ASSETS_FAILURE, error: errorMessage}); + }); }; // Update an asset state // Get comments to fill each of the three lists on the mod queue export const updateAssetState = (id, closedAt) => (dispatch) => { dispatch({type: UPDATE_ASSET_STATE_REQUEST}); - return coralApi(`/assets/${id}/status`, {method: 'PUT', body: {closedAt}}) - .then(() => - dispatch({type: UPDATE_ASSET_STATE_SUCCESS})) - .catch((error) => dispatch({type: UPDATE_ASSET_STATE_FAILURE, error})); + coralApi(`/assets/${id}/status`, {method: 'PUT', body: {closedAt}}) + .then(() => dispatch({type: UPDATE_ASSET_STATE_SUCCESS})) + .catch((error) => { + console.error(error); + const errorMessage = error.translation_key ? t(`error.${error.translation_key}`) : error.toString(); + dispatch({type: UPDATE_ASSET_STATE_FAILURE, error: errorMessage}); + }); }; export const updateAssets = (assets) => (dispatch) => { diff --git a/client/coral-admin/src/actions/auth.js b/client/coral-admin/src/actions/auth.js index 3a9e282ff..975865eef 100644 --- a/client/coral-admin/src/actions/auth.js +++ b/client/coral-admin/src/actions/auth.js @@ -4,6 +4,7 @@ import coralApi from 'coral-framework/helpers/request'; import * as Storage from 'coral-framework/helpers/storage'; import {handleAuthToken} from 'coral-framework/actions/auth'; import {resetWebsocket} from 'coral-framework/services/client'; +import t from 'coral-framework/services/i18n'; //============================================================================== // SIGN IN @@ -41,6 +42,7 @@ export const handleLogin = (email, password, recaptchaResponse) => (dispatch) => dispatch(checkLoginSuccess(user)); }) .catch((error) => { + console.error(error); if (error.translation_key === 'LOGIN_MAXIMUM_EXCEEDED') { dispatch({ type: actions.LOGIN_MAXIMUM_EXCEEDED, @@ -64,8 +66,9 @@ const forgotPassowordSuccess = () => ({ type: actions.FETCH_FORGOT_PASSWORD_SUCCESS }); -const forgotPassowordFailure = () => ({ - type: actions.FETCH_FORGOT_PASSWORD_FAILURE +const forgotPassowordFailure = (error) => ({ + type: actions.FETCH_FORGOT_PASSWORD_FAILURE, + error, }); export const requestPasswordReset = (email) => (dispatch) => { @@ -74,7 +77,11 @@ export const requestPasswordReset = (email) => (dispatch) => { return coralApi('/account/password/reset', {method: 'POST', body: {email, loc: redirectUri}}) .then(() => dispatch(forgotPassowordSuccess())) - .catch((error) => dispatch(forgotPassowordFailure(error))); + .catch((error) => { + console.error(error); + const errorMessage = error.translation_key ? t(`error.${error.translation_key}`) : error.toString(); + dispatch(forgotPassowordFailure(errorMessage)); + }); }; //============================================================================== @@ -112,6 +119,7 @@ export const checkLogin = () => (dispatch) => { }) .catch((error) => { console.error(error); - dispatch(checkLoginFailure(`${error.translation_key}`)); + const errorMessage = error.translation_key ? t(`error.${error.translation_key}`) : error.toString(); + dispatch(checkLoginFailure(errorMessage)); }); }; diff --git a/client/coral-admin/src/actions/community.js b/client/coral-admin/src/actions/community.js index 36b9ffb0a..826594868 100644 --- a/client/coral-admin/src/actions/community.js +++ b/client/coral-admin/src/actions/community.js @@ -15,6 +15,7 @@ import { } from '../constants/community'; import coralApi from '../../../coral-framework/helpers/request'; +import t from 'coral-framework/services/i18n'; export const fetchAccounts = (query = {}) => (dispatch) => { @@ -30,7 +31,11 @@ export const fetchAccounts = (query = {}) => (dispatch) => { totalPages }); }) - .catch((error) => dispatch({type: FETCH_COMMENTERS_FAILURE, error})); + .catch((error) => { + console.error(error); + const errorMessage = error.translation_key ? t(`error.${error.translation_key}`) : error.toString(); + dispatch({type: FETCH_COMMENTERS_FAILURE, error: errorMessage}); + }); }; const requestFetchAccounts = () => ({ @@ -48,16 +53,16 @@ export const newPage = () => ({ export const setRole = (id, role) => (dispatch) => { - return coralApi(`/users/${id}/role`, {method: 'POST', body: {role}}) + coralApi(`/users/${id}/role`, {method: 'POST', body: {role}}) .then(() => { - return dispatch({type: SET_ROLE, id, role}); + dispatch({type: SET_ROLE, id, role}); }); }; export const setCommenterStatus = (id, status) => (dispatch) => { - return coralApi(`/users/${id}/status`, {method: 'POST', body: {status}}) + coralApi(`/users/${id}/status`, {method: 'POST', body: {status}}) .then(() => { - return dispatch({type: SET_COMMENTER_STATUS, id, status}); + dispatch({type: SET_COMMENTER_STATUS, id, status}); }); }; diff --git a/client/coral-admin/src/actions/install.js b/client/coral-admin/src/actions/install.js index 15413e220..a575557d6 100644 --- a/client/coral-admin/src/actions/install.js +++ b/client/coral-admin/src/actions/install.js @@ -2,6 +2,7 @@ import coralApi from 'coral-framework/helpers/request'; import * as actions from '../constants/install'; import validate from 'coral-framework/helpers/validate'; import errorMsj from 'coral-framework/helpers/error'; +import t from 'coral-framework/services/i18n'; export const nextStep = () => ({type: actions.NEXT_STEP}); export const previousStep = () => ({type: actions.PREVIOUS_STEP}); @@ -17,7 +18,8 @@ const clearErrors = () => ({type: actions.CLEAR_ERRORS}); const validation = (formData, dispatch, next) => { if (!(formData != null)) { - return dispatch(hasError()); + dispatch(hasError()); + return; } const validKeys = Object.keys(formData) @@ -40,7 +42,8 @@ const validation = (formData, dispatch, next) => { }); if (empty.length) { - return dispatch(hasError()); + dispatch(hasError()); + return; } // RegExp Validation @@ -59,7 +62,8 @@ const validation = (formData, dispatch, next) => { }); if (validation.length) { - return dispatch(hasError()); + dispatch(hasError()); + return; } dispatch(clearErrors()); @@ -83,14 +87,15 @@ export const submitUser = () => (dispatch, getState) => { export const finishInstall = () => (dispatch, getState) => { const data = getState().install.toJS().data; dispatch(installRequest()); - return coralApi('/setup', {method: 'POST', body: data}) + coralApi('/setup', {method: 'POST', body: data}) .then(() => { dispatch(installSuccess()); dispatch(nextStep()); }) .catch((error) => { console.error(error); - dispatch(installFailure(`${error.translation_key}`)); + const errorMessage = error.translation_key ? t(`error.${error.translation_key}`) : error.toString(); + dispatch(installFailure(errorMessage)); }); }; @@ -113,6 +118,7 @@ export const checkInstall = (next) => (dispatch) => { }) .catch((error) => { console.error(error); - dispatch(checkInstallFailure(`${error.translation_key}`)); + const errorMessage = error.translation_key ? t(`error.${error.translation_key}`) : error.toString(); + dispatch(checkInstallFailure(errorMessage)); }); }; diff --git a/client/coral-admin/src/actions/settings.js b/client/coral-admin/src/actions/settings.js index 65c200420..ba8b917ea 100644 --- a/client/coral-admin/src/actions/settings.js +++ b/client/coral-admin/src/actions/settings.js @@ -1,4 +1,5 @@ import coralApi from '../../../coral-framework/helpers/request'; +import t from 'coral-framework/services/i18n'; export const SETTINGS_LOADING = 'SETTINGS_LOADING'; export const SETTINGS_RECEIVED = 'SETTINGS_RECEIVED'; @@ -20,7 +21,9 @@ export const fetchSettings = () => (dispatch) => { dispatch({type: SETTINGS_RECEIVED, settings}); }) .catch((error) => { - dispatch({type: SETTINGS_FETCH_ERROR, error}); + console.error(error); + const errorMessage = error.translation_key ? t(`error.${error.translation_key}`) : error.toString(); + dispatch({type: SETTINGS_FETCH_ERROR, error: errorMessage}); }); }; @@ -49,6 +52,8 @@ export const saveSettingsToServer = () => (dispatch, getState) => { dispatch({type: SAVE_SETTINGS_SUCCESS, settings}); }) .catch((error) => { - dispatch({type: SAVE_SETTINGS_FAILED, error}); + console.error(error); + const errorMessage = error.translation_key ? t(`error.${error.translation_key}`) : error.toString(); + dispatch({type: SAVE_SETTINGS_FAILED, error: errorMessage}); }); }; diff --git a/client/coral-admin/src/actions/users.js b/client/coral-admin/src/actions/users.js index e888d5b74..27f2cf34f 100644 --- a/client/coral-admin/src/actions/users.js +++ b/client/coral-admin/src/actions/users.js @@ -1,5 +1,6 @@ import coralApi from '../../../coral-framework/helpers/request'; import * as userTypes from '../constants/users'; +import t from 'coral-framework/services/i18n'; /** * Action disptacher related to users @@ -8,24 +9,36 @@ import * as userTypes from '../constants/users'; export const userStatusUpdate = (status, userId, commentId) => { return (dispatch) => { dispatch({type: userTypes.UPDATE_STATUS_REQUEST}); - return coralApi(`/users/${userId}/status`, {method: 'POST', body: {status: status, comment_id: commentId}}) + coralApi(`/users/${userId}/status`, {method: 'POST', body: {status: status, comment_id: commentId}}) .then((res) => dispatch({type: userTypes.UPDATE_STATUS_SUCCESS, res})) - .catch((error) => dispatch({type: userTypes.UPDATE_STATUS_FAILURE, error})); + .catch((error) => { + console.error(error); + const errorMessage = error.translation_key ? t(`error.${error.translation_key}`) : error.toString(); + dispatch({type: userTypes.UPDATE_STATUS_FAILURE, error: errorMessage}); + }); }; }; // change status of a user export const sendNotificationEmail = (userId, subject, body) => { return (dispatch) => { - return coralApi(`/users/${userId}/email`, {method: 'POST', body: {subject, body}}) - .catch((error) => dispatch({type: userTypes.USER_EMAIL_FAILURE, error})); + coralApi(`/users/${userId}/email`, {method: 'POST', body: {subject, body}}) + .catch((error) => { + console.error(error); + const errorMessage = error.translation_key ? t(`error.${error.translation_key}`) : error.toString(); + dispatch({type: userTypes.USER_EMAIL_FAILURE, error: errorMessage}); + }); }; }; // let a user edit their username export const enableUsernameEdit = (userId) => { return (dispatch) => { - return coralApi(`/users/${userId}/username-enable`, {method: 'POST'}) - .catch((error) => dispatch({type: userTypes.USERNAME_ENABLE_FAILURE, error})); + coralApi(`/users/${userId}/username-enable`, {method: 'POST'}) + .catch((error) => { + console.error(error); + const errorMessage = error.translation_key ? t(`error.${error.translation_key}`) : error.toString(); + dispatch({type: userTypes.USERNAME_ENABLE_FAILURE, error: errorMessage}); + }); }; }; diff --git a/client/coral-framework/actions/asset.js b/client/coral-framework/actions/asset.js index d252bb59f..24739ddde 100644 --- a/client/coral-framework/actions/asset.js +++ b/client/coral-framework/actions/asset.js @@ -10,7 +10,7 @@ export const fetchAssetFailure = (error) => ({type: actions.FETCH_ASSET_FAILURE, const updateAssetSettingsRequest = () => ({type: actions.UPDATE_ASSET_SETTINGS_REQUEST}); const updateAssetSettingsSuccess = (settings) => ({type: actions.UPDATE_ASSET_SETTINGS_SUCCESS, settings}); -const updateAssetSettingsFailure = () => ({type: actions.UPDATE_ASSET_SETTINGS_FAILURE}); +const updateAssetSettingsFailure = (error) => ({type: actions.UPDATE_ASSET_SETTINGS_FAILURE, error}); export const updateConfiguration = (newConfig) => (dispatch, getState) => { const assetId = getState().asset.toJS().id; @@ -20,7 +20,10 @@ export const updateConfiguration = (newConfig) => (dispatch, getState) => { dispatch(addNotification('success', t('framework.success_update_settings'))); dispatch(updateAssetSettingsSuccess(newConfig)); }) - .catch((error) => dispatch(updateAssetSettingsFailure(error))); + .catch((error) => { + console.error(error); + dispatch(updateAssetSettingsFailure(error)); + }); }; export const updateOpenStream = (closedBody) => (dispatch, getState) => { @@ -31,7 +34,10 @@ export const updateOpenStream = (closedBody) => (dispatch, getState) => { dispatch(addNotification('success', t('framework.success_update_settings'))); dispatch(fetchAssetSuccess(closedBody)); }) - .catch((error) => dispatch(fetchAssetFailure(error))); + .catch((error) => { + console.error(error); + dispatch(fetchAssetFailure(error)); + }); }; const openStream = () => ({type: actions.OPEN_COMMENTS}); diff --git a/client/coral-framework/actions/auth.js b/client/coral-framework/actions/auth.js index 614b87632..995b5db50 100644 --- a/client/coral-framework/actions/auth.js +++ b/client/coral-framework/actions/auth.js @@ -75,7 +75,9 @@ export const createUsername = (userId, formData) => (dispatch) => { dispatch(updateUsername(formData)); }) .catch((error) => { - dispatch(createUsernameFailure(t(`error.${error.translation_key}`))); + console.error(error); + const errorMessage = error.translation_key ? t(`error.${error.translation_key}`) : error.toString(); + dispatch(createUsernameFailure(errorMessage)); }); }; @@ -131,7 +133,7 @@ export const fetchSignIn = (formData) => { return (dispatch) => { dispatch(signInRequest()); - return coralApi('/auth/local', {method: 'POST', body: formData}) + coralApi('/auth/local', {method: 'POST', body: formData}) .then(({token}) => { if (!bowser.safari && !bowser.ios) { dispatch(handleAuthToken(token)); @@ -139,16 +141,20 @@ export const fetchSignIn = (formData) => { dispatch(hideSignInDialog()); }) .catch((error) => { + console.error(error); if (error.metadata) { // the user might not have a valid email. prompt the user user re-request the confirmation email dispatch( signInFailure(t('error.email_not_verified', error.metadata)) ); - } else { + } else if (error.translation_key === 'NOT_AUTHORIZED') { // invalid credentials - dispatch(signInFailure(t('error.email_password'))); + dispatch(signInFailure(t('error.email_password'), error.metadata)); + } else { + const str = error.translation_key ? t(`error.${error.translation_key}`) : error.toString(); + dispatch(signInFailure(str)); } }); }; @@ -234,12 +240,8 @@ export const fetchSignUp = (formData) => (dispatch, getState) => { dispatch(signUpSuccess(user)); }) .catch((error) => { - let errorMessage = t(`error.${error.message}`); - - // if there is no translation defined, just show the error string - if (errorMessage === `error.${error.message}`) { - errorMessage = error.message; - } + console.error(error); + const errorMessage = error.translation_key ? t(`error.${error.translation_key}`) : error.toString(); dispatch(signUpFailure(errorMessage)); }); }; @@ -256,8 +258,9 @@ const forgotPasswordSuccess = () => ({ type: actions.FETCH_FORGOT_PASSWORD_SUCCESS }); -const forgotPasswordFailure = () => ({ - type: actions.FETCH_FORGOT_PASSWORD_FAILURE +const forgotPasswordFailure = (error) => ({ + type: actions.FETCH_FORGOT_PASSWORD_FAILURE, + error, }); export const fetchForgotPassword = (email) => (dispatch, getState) => { @@ -268,7 +271,11 @@ export const fetchForgotPassword = (email) => (dispatch, getState) => { body: {email, loc: redirectUri} }) .then(() => dispatch(forgotPasswordSuccess())) - .catch((error) => dispatch(forgotPasswordFailure(error))); + .catch((error) => { + console.error(error); + const errorMessage = error.translation_key ? t(`error.${error.translation_key}`) : error.toString(); + dispatch(forgotPasswordFailure(errorMessage)); + }); }; //============================================================================== @@ -326,7 +333,8 @@ export const checkLogin = () => (dispatch) => { }) .catch((error) => { console.error(error); - dispatch(checkLoginFailure(`${error.translation_key}`)); + const errorMessage = error.translation_key ? t(`error.${error.translation_key}`) : error.toString(); + dispatch(checkLoginFailure(errorMessage)); }); }; @@ -352,7 +360,7 @@ const verifyEmailFailure = () => ({ export const requestConfirmEmail = (email) => (dispatch, getState) => { const redirectUri = getState().auth.toJS().redirectUri; dispatch(verifyEmailRequest()); - return coralApi('/users/resend-verify', { + coralApi('/users/resend-verify', { method: 'POST', body: {email}, headers: {'X-Pym-Url': redirectUri} @@ -360,11 +368,10 @@ export const requestConfirmEmail = (email) => (dispatch, getState) => { .then(() => { dispatch(verifyEmailSuccess()); }) - .catch((err) => { - - // email might have already been verifyed - dispatch(verifyEmailFailure(err)); - throw err; + .catch((error) => { + console.error(error); + const errorMessage = error.translation_key ? t(`error.${error.translation_key}`) : error.toString(); + dispatch(verifyEmailFailure(errorMessage)); }); }; diff --git a/client/coral-framework/actions/user.js b/client/coral-framework/actions/user.js index b978f686d..f18eb9151 100644 --- a/client/coral-framework/actions/user.js +++ b/client/coral-framework/actions/user.js @@ -8,12 +8,14 @@ const editUsernameFailure = (error) => ({type: actions.EDIT_USERNAME_FAILURE, er const editUsernameSuccess = () => ({type: actions.EDIT_USERNAME_SUCCESS}); export const editName = (username) => (dispatch) => { - return coralApi('/account/username', {method: 'PUT', body: {username}}) + coralApi('/account/username', {method: 'PUT', body: {username}}) .then(() => { dispatch(editUsernameSuccess()); dispatch(addNotification('success', t('framework.success_name_update'))); }) .catch((error) => { - dispatch(editUsernameFailure(t(`error.${error.translation_key}`))); + console.error(error); + const errorMessage = error.translation_key ? t(`error.${error.translation_key}`) : error.toString(); + dispatch(editUsernameFailure(errorMessage)); }); };