diff --git a/src/actions/challenges.js b/src/actions/challenges.js index 6314ecbe..1d610d29 100644 --- a/src/actions/challenges.js +++ b/src/actions/challenges.js @@ -245,9 +245,10 @@ export function createChallenge (challengeDetails) { type: CREATE_CHALLENGE_SUCCESS, challengeDetails: challenge }) - }).catch(() => { + }).catch((e) => { dispatch({ - type: CREATE_CHALLENGE_FAILURE + type: CREATE_CHALLENGE_FAILURE, + error: e }) }) } diff --git a/src/components/ChallengeEditor/ChallengeEditor.module.scss b/src/components/ChallengeEditor/ChallengeEditor.module.scss index cac38dd5..7895e4be 100644 --- a/src/components/ChallengeEditor/ChallengeEditor.module.scss +++ b/src/components/ChallengeEditor/ChallengeEditor.module.scss @@ -28,6 +28,7 @@ span { color: $tc-red; } + } .textRequired { @@ -232,10 +233,13 @@ } .error { - text-align: right; padding-right: 40px; padding-bottom: 20px; - color: $tc-red + color: $tc-red; + + .errorMessage { + font-size: 25px; + } } .actionButtons { @@ -332,6 +336,7 @@ line-height: 36px; margin-bottom: 30px; margin-top: 0; + } span { diff --git a/src/components/ChallengeEditor/index.js b/src/components/ChallengeEditor/index.js index d4a20a31..1b311de7 100644 --- a/src/components/ChallengeEditor/index.js +++ b/src/components/ChallengeEditor/index.js @@ -1160,6 +1160,7 @@ class ChallengeEditor extends Component { token, removeAttachment, failedToLoad, + errorMessage, projectDetail, attachments } = this.props @@ -1187,6 +1188,7 @@ class ChallengeEditor extends Component {
+ {errorMessage &&
{`Error : ${errorMessage}`}
} Please try again later and if the issue persists contact us at  support@topcoder.com  to resolve the issue as soon as possible. @@ -1557,6 +1559,7 @@ ChallengeEditor.propTypes = { attachments: PropTypes.arrayOf(PropTypes.shape()), token: PropTypes.string.isRequired, failedToLoad: PropTypes.bool, + errorMessage: PropTypes.string, history: PropTypes.any.isRequired, assignedMemberDetails: PropTypes.shape(), updateChallengeDetails: PropTypes.func.isRequired, diff --git a/src/containers/ChallengeEditor/index.js b/src/containers/ChallengeEditor/index.js index 910c2f01..99fb54f5 100644 --- a/src/containers/ChallengeEditor/index.js +++ b/src/containers/ChallengeEditor/index.js @@ -245,6 +245,7 @@ class ChallengeEditor extends Component { token, removeAttachment, failedToLoad, + errorMessage, projectDetail, updateChallengeDetails, partiallyUpdateChallengeDetails, @@ -325,6 +326,7 @@ class ChallengeEditor extends Component { token={token} removeAttachment={removeAttachment} failedToLoad={failedToLoad} + errorMessage={errorMessage} projectDetail={projectDetail} assignedMemberDetails={assignedMemberDetails} updateChallengeDetails={updateChallengeDetails} @@ -422,6 +424,7 @@ ChallengeEditor.propTypes = { loggedInUser: PropTypes.object, removeAttachment: PropTypes.func, failedToLoad: PropTypes.bool, + errorMessage: PropTypes.string, updateChallengeDetails: PropTypes.func.isRequired, partiallyUpdateChallengeDetails: PropTypes.func.isRequired, createChallenge: PropTypes.func.isRequired, @@ -431,7 +434,7 @@ ChallengeEditor.propTypes = { // members: PropTypes.arrayOf(PropTypes.shape()) } -const mapStateToProps = ({ projects, challenges: { challengeDetails, challengeResources, metadata, isLoading, attachments, failedToLoad }, auth: { token, user }, members: { members } }) => ({ +const mapStateToProps = ({ projects, challenges: { challengeDetails, challengeResources, metadata, isLoading, attachments, failedToLoad, errorMessage }, auth: { token, user }, members: { members } }) => ({ challengeDetails, hasProjectAccess: projects.hasProjectAccess, projectDetail: projects.projectDetail, @@ -442,7 +445,8 @@ const mapStateToProps = ({ projects, challenges: { challengeDetails, challengeRe attachments, token, loggedInUser: user, - failedToLoad + failedToLoad, + errorMessage // members }) diff --git a/src/reducers/challenges.js b/src/reducers/challenges.js index 0019229b..71f85fda 100644 --- a/src/reducers/challenges.js +++ b/src/reducers/challenges.js @@ -93,7 +93,7 @@ export default function (state = initialState, action) { return { ...state, isLoading: false } case LOAD_CHALLENGE_DETAILS_FAILURE: case CREATE_CHALLENGE_FAILURE: - return { ...state, isLoading: false, attachments: [], challenge: null, failedToLoad: true } + return { ...state, isLoading: false, attachments: [], challenge: null, failedToLoad: true, errorMessage: _.get(action, 'error.response.data.message', '') } case LOAD_CHALLENGE_DETAILS_SUCCESS: { return { ...state,