diff --git a/src/actions/challenges.js b/src/actions/challenges.js index 5817bac8..eca362f6 100644 --- a/src/actions/challenges.js +++ b/src/actions/challenges.js @@ -15,7 +15,6 @@ import { fetchChallengeTracks, updateChallenge, patchChallenge, - deleteChallenge as deleteChallengeAPI, createChallenge as createChallengeAPI, createResource as createResourceAPI, deleteResource as deleteResourceAPI @@ -39,9 +38,6 @@ import { CREATE_CHALLENGE_PENDING, CREATE_CHALLENGE_SUCCESS, CREATE_CHALLENGE_FAILURE, - DELETE_CHALLENGE_PENDING, - DELETE_CHALLENGE_SUCCESS, - DELETE_CHALLENGE_FAILURE, LOAD_CHALLENGE_RESOURCES } from '../config/constants' import { loadProject } from './projects' @@ -271,26 +267,6 @@ export function partiallyUpdateChallengeDetails (challengeId, partialChallengeDe } } -export function deleteChallenge (challengeId) { - return async (dispatch) => { - dispatch({ - type: DELETE_CHALLENGE_PENDING - }) - - return deleteChallengeAPI(challengeId).then((challenge) => { - return dispatch({ - type: DELETE_CHALLENGE_SUCCESS, - challengeDetails: challenge - }) - }).catch((error) => { - dispatch({ - type: DELETE_CHALLENGE_FAILURE - }) - throw error - }) - } -} - export function loadTimelineTemplates () { return async (dispatch) => { const timelineTemplates = await fetchTimelineTemplates() diff --git a/src/components/ChallengeEditor/ChallengeEditor.module.scss b/src/components/ChallengeEditor/ChallengeEditor.module.scss index cac38dd5..4d7f5b24 100644 --- a/src/components/ChallengeEditor/ChallengeEditor.module.scss +++ b/src/components/ChallengeEditor/ChallengeEditor.module.scss @@ -241,7 +241,7 @@ .actionButtons { position: absolute; top: 30px; - a,button { + a { height: 40px; } } @@ -251,13 +251,7 @@ } .actionButtonsRight { - display: flex; - align-items: center; right: 20px; - - button { - margin-right: 20px; - } } .buttonContainer { diff --git a/src/components/ChallengeEditor/index.js b/src/components/ChallengeEditor/index.js index 101908b5..935b65ad 100644 --- a/src/components/ChallengeEditor/index.js +++ b/src/components/ChallengeEditor/index.js @@ -68,7 +68,6 @@ class ChallengeEditor extends Component { super(props) this.state = { isLaunch: false, - isDeleteLaunch: false, isConfirm: false, isClose: false, isOpenAdvanceSettings: false, @@ -122,8 +121,6 @@ class ChallengeEditor extends Component { this.getAvailableTimelineTemplates = this.getAvailableTimelineTemplates.bind(this) this.autoUpdateChallengeThrottled = _.throttle(this.validateAndAutoUpdateChallenge.bind(this), 3000) // 3s this.updateResource = this.updateResource.bind(this) - this.onDeleteChallenge = this.onDeleteChallenge.bind(this) - this.deleteModalLaunch = this.deleteModalLaunch.bind(this) } componentDidMount () { @@ -134,27 +131,6 @@ class ChallengeEditor extends Component { this.resetChallengeData(this.setState.bind(this)) } - deleteModalLaunch () { - if (!this.state.isDeleteLaunch) { - this.setState({ isDeleteLaunch: true }) - } - } - - async onDeleteChallenge () { - const { deleteChallenge, challengeDetails, history } = this.props - try { - this.setState({ isSaving: true }) - // Call action to delete the challenge - await deleteChallenge(challengeDetails.id) - this.setState({ isSaving: false }) - this.resetModal() - history.push(`/projects/${challengeDetails.projectId}/challenges`) - } catch (e) { - const error = _.get(e, 'response.data.message', 'Unable to Delete the challenge') - this.setState({ isSaving: false, error }) - } - } - /** * Validates challenge and if its valid calling an autosave method * @@ -230,7 +206,7 @@ class ChallengeEditor extends Component { } resetModal () { - this.setState({ isLoading: false, isConfirm: false, isLaunch: false, error: null, isCloseTask: false, isDeleteLaunch: false }) + this.setState({ isLoading: false, isConfirm: false, isLaunch: false, error: null, isCloseTask: false }) } /** @@ -1397,19 +1373,6 @@ class ChallengeEditor extends Component { /> } - { - this.state.isDeleteLaunch && !this.state.isConfirm && ( - - ) - } { showTimeline && (
{getTitle(isNew)}
- {this.props.challengeDetails.status === 'New' && }
* Required
@@ -1507,8 +1469,7 @@ ChallengeEditor.propTypes = { updateChallengeDetails: PropTypes.func.isRequired, createChallenge: PropTypes.func, replaceResourceInRole: PropTypes.func, - partiallyUpdateChallengeDetails: PropTypes.func.isRequired, - deleteChallenge: PropTypes.func.isRequired + partiallyUpdateChallengeDetails: PropTypes.func.isRequired } export default withRouter(ChallengeEditor) diff --git a/src/components/ChallengesComponent/ChallengeCard/ChallengeCard.module.scss b/src/components/ChallengesComponent/ChallengeCard/ChallengeCard.module.scss index 89614ec3..bac62146 100644 --- a/src/components/ChallengesComponent/ChallengeCard/ChallengeCard.module.scss +++ b/src/components/ChallengesComponent/ChallengeCard/ChallengeCard.module.scss @@ -257,31 +257,6 @@ } } -.deleteButton { - height: 22px; - width: 86px; - border-radius: 11.5px; - display: flex; - justify-content: center; - align-items: center; - background-color: $tc-red; - border-color: $tc-red; - cursor: pointer; - - span { - @include roboto; - - font-size: 14px; - font-weight: 400; - line-height: 17px; - color: $white; - text-transform: capitalize; - display: flex; - justify-content: center; - align-items: center; - } -} - .icon { vertical-align: bottom; } diff --git a/src/components/ChallengesComponent/ChallengeCard/index.js b/src/components/ChallengesComponent/ChallengeCard/index.js index 9d9ad8bc..9da8123f 100644 --- a/src/components/ChallengesComponent/ChallengeCard/index.js +++ b/src/components/ChallengesComponent/ChallengeCard/index.js @@ -96,20 +96,14 @@ const getPhaseInfo = (c) => { * @param onUpdateLaunch * @returns {*} */ -const hoverComponents = (challenge, onUpdateLaunch, deleteModalLaunch) => { +const hoverComponents = (challenge, onUpdateLaunch) => { const communityAppUrl = `${COMMUNITY_APP_URL}/challenges/${challenge.id}` const directUrl = `${DIRECT_PROJECT_URL}/contest/detail?projectId=${challenge.legacyId}` const orUrl = `${ONLINE_REVIEW_URL}/review/actions/ViewProjectDetails?pid=${challenge.legacyId}` // NEW projects never have Legacy challenge created, so don't show links and "Activate" button for them at all if (challenge.status.toUpperCase() === CHALLENGE_STATUS.NEW) { - if (challenge.status.toUpperCase() === CHALLENGE_STATUS.NEW) { - return ( - - ) - } + return null } return challenge.legacyId ? ( @@ -183,13 +177,10 @@ class ChallengeCard extends React.Component { this.state = { isConfirm: false, isLaunch: false, - isDeleteLaunch: false, isSaving: false } this.onUpdateConfirm = this.onUpdateConfirm.bind(this) this.onUpdateLaunch = this.onUpdateLaunch.bind(this) - this.onDeleteChallenge = this.onDeleteChallenge.bind(this) - this.deleteModalLaunch = this.deleteModalLaunch.bind(this) this.resetModal = this.resetModal.bind(this) this.onLaunchChallenge = this.onLaunchChallenge.bind(this) } @@ -204,14 +195,8 @@ class ChallengeCard extends React.Component { } } - deleteModalLaunch () { - if (!this.state.isDeleteLaunch) { - this.setState({ isDeleteLaunch: true }) - } - } - resetModal () { - this.setState({ isConfirm: false, isLaunch: false, isDeleteLaunch: false }) + this.setState({ isConfirm: false, isLaunch: false }) } async onLaunchChallenge () { @@ -231,39 +216,12 @@ class ChallengeCard extends React.Component { } } - async onDeleteChallenge () { - const { deleteChallenge, challenge } = this.props - try { - this.setState({ isSaving: true }) - // Call action to delete the challenge - await deleteChallenge(challenge.id) - this.setState({ isSaving: false }) - this.resetModal() - } catch (e) { - const error = _.get(e, 'response.data.message', 'Unable to Delete the challenge') - this.setState({ isSaving: false, error }) - } - } - render () { - const { isLaunch, isConfirm, isSaving, isDeleteLaunch } = this.state + const { isLaunch, isConfirm, isSaving } = this.state const { challenge, shouldShowCurrentPhase, reloadChallengeList } = this.props const { phaseMessage, endTime } = getPhaseInfo(challenge) return (
- { - isDeleteLaunch && !isConfirm && ( - - ) - } { isLaunch && !isConfirm && ( {endTime} )}
- {hoverComponents(challenge, this.onUpdateLaunch, this.deleteModalLaunch)} + {hoverComponents(challenge, this.onUpdateLaunch, this.props.showError)}
@@ -324,15 +282,16 @@ class ChallengeCard extends React.Component { ChallengeCard.defaultPrps = { shouldShowCurrentPhase: true, + showError: () => {}, reloadChallengeList: () => {} } ChallengeCard.propTypes = { challenge: PropTypes.object, shouldShowCurrentPhase: PropTypes.bool, + showError: PropTypes.func, reloadChallengeList: PropTypes.func, - partiallyUpdateChallengeDetails: PropTypes.func.isRequired, - deleteChallenge: PropTypes.func.isRequired + partiallyUpdateChallengeDetails: PropTypes.func.isRequired } export default withRouter(ChallengeCard) diff --git a/src/components/ChallengesComponent/ChallengeList/index.js b/src/components/ChallengesComponent/ChallengeList/index.js index 941c27eb..fe33891d 100644 --- a/src/components/ChallengesComponent/ChallengeList/index.js +++ b/src/components/ChallengesComponent/ChallengeList/index.js @@ -102,8 +102,7 @@ class ChallengeList extends Component { page, perPage, totalChallenges, - partiallyUpdateChallengeDetails, - deleteChallenge + partiallyUpdateChallengeDetails } = this.props if (warnMessage) { return @@ -212,9 +211,9 @@ class ChallengeList extends Component { ) @@ -257,8 +256,7 @@ ChallengeList.propTypes = { page: PropTypes.number.isRequired, perPage: PropTypes.number.isRequired, totalChallenges: PropTypes.number.isRequired, - partiallyUpdateChallengeDetails: PropTypes.func.isRequired, - deleteChallenge: PropTypes.func.isRequired + partiallyUpdateChallengeDetails: PropTypes.func.isRequired } export default ChallengeList diff --git a/src/components/ChallengesComponent/index.js b/src/components/ChallengesComponent/index.js index eb386d49..c173492f 100644 --- a/src/components/ChallengesComponent/index.js +++ b/src/components/ChallengesComponent/index.js @@ -26,8 +26,7 @@ const ChallengesComponent = ({ page, perPage, totalChallenges, - partiallyUpdateChallengeDetails, - deleteChallenge + partiallyUpdateChallengeDetails }) => { return ( @@ -87,7 +86,6 @@ const ChallengesComponent = ({ perPage={perPage} totalChallenges={totalChallenges} partiallyUpdateChallengeDetails={partiallyUpdateChallengeDetails} - deleteChallenge={deleteChallenge} /> )}
@@ -111,8 +109,7 @@ ChallengesComponent.propTypes = { page: PropTypes.number.isRequired, perPage: PropTypes.number.isRequired, totalChallenges: PropTypes.number.isRequired, - partiallyUpdateChallengeDetails: PropTypes.func.isRequired, - deleteChallenge: PropTypes.func.isRequired + partiallyUpdateChallengeDetails: PropTypes.func.isRequired } ChallengesComponent.defaultProps = { diff --git a/src/config/constants.js b/src/config/constants.js index 2b26b0f9..d1e4aef0 100644 --- a/src/config/constants.js +++ b/src/config/constants.js @@ -48,10 +48,6 @@ export const CREATE_CHALLENGE_SUCCESS = 'CREATE_CHALLENGE_SUCCESS' export const CREATE_CHALLENGE_PENDING = 'CREATE_CHALLENGE_PENDING' export const CREATE_CHALLENGE_FAILURE = 'CREATE_CHALLENGE_FAILURE' -export const DELETE_CHALLENGE_SUCCESS = 'DELETE_CHALLENGE_SUCCESS' -export const DELETE_CHALLENGE_PENDING = 'DELETE_CHALLENGE_PENDING' -export const DELETE_CHALLENGE_FAILURE = 'DELETE_CHALLENGE_FAILURE' - export const LOAD_PROJECT_DETAILS = 'LOAD_PROJECT_DETAILS' export const LOAD_PROJECT_DETAILS_SUCCESS = 'LOAD_PROJECT_DETAILS_SUCCESS' export const LOAD_PROJECT_DETAILS_PENDING = 'LOAD_PROJECT_DETAILS_PENDING' diff --git a/src/containers/ChallengeEditor/index.js b/src/containers/ChallengeEditor/index.js index e7c96db2..ab0c4796 100644 --- a/src/containers/ChallengeEditor/index.js +++ b/src/containers/ChallengeEditor/index.js @@ -24,7 +24,6 @@ import { loadResourceRoles, updateChallengeDetails, partiallyUpdateChallengeDetails, - deleteChallenge, createChallenge, replaceResourceInRole } from '../../actions/challenges' @@ -230,8 +229,7 @@ class ChallengeEditor extends Component { updateChallengeDetails, partiallyUpdateChallengeDetails, createChallenge, - replaceResourceInRole, - deleteChallenge + replaceResourceInRole // members } = this.props const { @@ -337,7 +335,6 @@ class ChallengeEditor extends Component { updateChallengeDetails={updateChallengeDetails} replaceResourceInRole={replaceResourceInRole} partiallyUpdateChallengeDetails={partiallyUpdateChallengeDetails} - deleteChallenge={deleteChallenge} /> )) } /> @@ -403,7 +400,6 @@ ChallengeEditor.propTypes = { updateChallengeDetails: PropTypes.func.isRequired, partiallyUpdateChallengeDetails: PropTypes.func.isRequired, createChallenge: PropTypes.func.isRequired, - deleteChallenge: PropTypes.func.isRequired, replaceResourceInRole: PropTypes.func // members: PropTypes.arrayOf(PropTypes.shape()) } @@ -439,7 +435,6 @@ const mapDispatchToProps = { loadResourceRoles, updateChallengeDetails, partiallyUpdateChallengeDetails, - deleteChallenge, createChallenge, replaceResourceInRole } diff --git a/src/containers/Challenges/index.js b/src/containers/Challenges/index.js index 7632bb3f..e0b9ef5d 100644 --- a/src/containers/Challenges/index.js +++ b/src/containers/Challenges/index.js @@ -10,7 +10,7 @@ import { DebounceInput } from 'react-debounce-input' import ChallengesComponent from '../../components/ChallengesComponent' import ProjectCard from '../../components/ProjectCard' import Loader from '../../components/Loader' -import { loadChallengesByPage, partiallyUpdateChallengeDetails, deleteChallenge } from '../../actions/challenges' +import { loadChallengesByPage, partiallyUpdateChallengeDetails } from '../../actions/challenges' import { loadProject } from '../../actions/projects' import { loadProjects, setActiveProject, resetSidebarActiveParams } from '../../actions/sidebar' import { @@ -86,8 +86,7 @@ class Challenges extends Component { perPage, totalChallenges, setActiveProject, - partiallyUpdateChallengeDetails, - deleteChallenge + partiallyUpdateChallengeDetails } = this.props const { searchProjectName, onlyMyProjects } = this.state const projectInfo = _.find(projects, { id: activeProjectId }) || {} @@ -148,7 +147,6 @@ class Challenges extends Component { perPage={perPage} totalChallenges={totalChallenges} partiallyUpdateChallengeDetails={partiallyUpdateChallengeDetails} - deleteChallenge={deleteChallenge} /> } @@ -175,8 +173,7 @@ Challenges.propTypes = { totalChallenges: PropTypes.number.isRequired, loadProjects: PropTypes.func.isRequired, setActiveProject: PropTypes.func.isRequired, - partiallyUpdateChallengeDetails: PropTypes.func.isRequired, - deleteChallenge: PropTypes.func.isRequired + partiallyUpdateChallengeDetails: PropTypes.func.isRequired } const mapStateToProps = ({ challenges, sidebar, projects }) => ({ @@ -194,8 +191,7 @@ const mapDispatchToProps = { loadProject, loadProjects, setActiveProject, - partiallyUpdateChallengeDetails, - deleteChallenge + partiallyUpdateChallengeDetails } export default connect(mapStateToProps, mapDispatchToProps)(Challenges) diff --git a/src/reducers/challenges.js b/src/reducers/challenges.js index 20698d89..df398975 100644 --- a/src/reducers/challenges.js +++ b/src/reducers/challenges.js @@ -27,10 +27,7 @@ import { CREATE_CHALLENGE_RESOURCE_SUCCESS, DELETE_CHALLENGE_RESOURCE_SUCCESS, DELETE_CHALLENGE_RESOURCE_FAILURE, - CREATE_CHALLENGE_RESOURCE_FAILURE, - DELETE_CHALLENGE_SUCCESS, - DELETE_CHALLENGE_FAILURE, - DELETE_CHALLENGE_PENDING + CREATE_CHALLENGE_RESOURCE_FAILURE } from '../config/constants' const initialState = { @@ -45,7 +42,6 @@ const initialState = { attachments: [], challenge: null, filterChallengeName: '', - failedToDelete: false, status: '', perPage: 0, page: 1, @@ -148,27 +144,6 @@ export default function (state = initialState, action) { } case UPDATE_CHALLENGE_DETAILS_FAILURE: return { ...state, isLoading: false, attachments: [], challenge: null, failedToLoad: false, failedToUpdate: true } - - case DELETE_CHALLENGE_PENDING: - return { ...state, failedToLoad: false } - - case DELETE_CHALLENGE_SUCCESS: { - const deletedChallengeDetails = action.challengeDetails.data - const updatedChallenges = state.challenges.filter((challenge) => challenge.id !== deletedChallengeDetails.id) - toastrSuccess('Success', `Challenge deleted successfully.`) - return { - ...state, - challenges: updatedChallenges - } - } - - case DELETE_CHALLENGE_FAILURE: { - return { - ...state, - failedToDelete: true - } - } - case CREATE_CHALLENGE_SUCCESS: { // if we are showing the list of challenges with the same status as we just created, // then add the new challenge to the beginning of the current challenge list diff --git a/src/services/challenges.js b/src/services/challenges.js index e9b58e93..b6a57c98 100644 --- a/src/services/challenges.js +++ b/src/services/challenges.js @@ -160,14 +160,6 @@ export function patchChallenge (challengeId, params) { }) } -/* -* Deletes the challenge with the provided id. -* @param challengeId -*/ -export function deleteChallenge (challengeId) { - return axiosInstance.delete(`${CHALLENGE_API_URL}/${challengeId}`) -} - /** * Api request for fetching challenge terms * @returns {Promise<*>}