From 7929ce07028f04364707536288ff6717cca08b4b Mon Sep 17 00:00:00 2001 From: doctorhilarius Date: Thu, 20 Jan 2022 09:23:38 -0800 Subject: [PATCH 1/8] style and wire up reject button --- .../ChallengeEditor/ChallengeView/index.js | 8 +++++--- .../ChallengeEditor/ChallengeViewTabs/index.js | 16 ++++++++++------ src/containers/ChallengeEditor/index.js | 12 ++++++++++-- 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/src/components/ChallengeEditor/ChallengeView/index.js b/src/components/ChallengeEditor/ChallengeView/index.js index 761bbe29..6f877844 100644 --- a/src/components/ChallengeEditor/ChallengeView/index.js +++ b/src/components/ChallengeEditor/ChallengeView/index.js @@ -38,7 +38,8 @@ const ChallengeView = ({ onLaunchChallenge, onCloseTask, projectPhases, - assignYourselfCopilit + assignYourselfCopilit, + rejectChallenge }) => { const selectedType = _.find(metadata.challengeTypes, { id: challenge.typeId }) const challengeTrack = _.find(metadata.challengeTracks, { id: challenge.trackId }) @@ -135,7 +136,7 @@ const ChallengeView = ({ + }} copilots={metadata.members} assignYourselfCopilit={assignYourselfCopilit} rejectChallenge={rejectChallenge} readOnly />
{ const [selectedTab, setSelectedTab] = useState(0) @@ -147,14 +148,15 @@ const ChallengeViewTabs = ({ {enableEdit && !isSelfService && ( )} - {isSelfService && isDraft && - ( + {isSelfService && isDraft && ( +
- )} +
+ )}
@@ -223,6 +225,7 @@ const ChallengeViewTabs = ({ onCloseTask={onCloseTask} projectPhases={projectPhases} assignYourselfCopilit={assignYourselfCopilit} + rejectChallenge={rejectChallenge} /> )} {selectedTab === 1 && ( @@ -260,7 +263,8 @@ ChallengeViewTabs.propTypes = { cancelChallenge: PropTypes.func.isRequired, onCloseTask: PropTypes.func, projectPhases: PropTypes.arrayOf(PropTypes.object), - assignYourselfCopilit: PropTypes.func.isRequired + assignYourselfCopilit: PropTypes.func.isRequired, + rejectChallenge: PropTypes.func.isRequired } export default ChallengeViewTabs diff --git a/src/containers/ChallengeEditor/index.js b/src/containers/ChallengeEditor/index.js index 7e942ce9..211859bd 100644 --- a/src/containers/ChallengeEditor/index.js +++ b/src/containers/ChallengeEditor/index.js @@ -310,6 +310,10 @@ class ChallengeEditor extends Component { console.debug('assign copilit') } + rejectChallenge () { + console.debug('rejecting challenge') + } + render () { const { match, @@ -335,7 +339,8 @@ class ChallengeEditor extends Component { loggedInUser, projectPhases, isProjectPhasesLoading, - assignYourselfCopilit + assignYourselfCopilit, + rejectChallenge // members } = this.props const { @@ -430,6 +435,7 @@ class ChallengeEditor extends Component { partiallyUpdateChallengeDetails={partiallyUpdateChallengeDetails} projectPhases={projectPhases} assignYourselfCopilit={assignYourselfCopilit} + rejectChallenge={rejectChallenge} /> )} /> @@ -494,6 +500,7 @@ class ChallengeEditor extends Component { onLaunchChallenge={this.onLaunchChallenge} onCloseTask={this.onCloseTask} assignYourselfCopilit={this.assignYourselfCopilit} + rejectChallenge={this.rejectChallenge} /> )} /> @@ -549,7 +556,8 @@ ChallengeEditor.propTypes = { loadProject: PropTypes.func, projectPhases: PropTypes.arrayOf(PropTypes.object), isProjectPhasesLoading: PropTypes.bool, - assignYourselfCopilit: PropTypes.func.isRequired + assignYourselfCopilit: PropTypes.func.isRequired, + rejectChallenge: PropTypes.func.isRequired // members: PropTypes.arrayOf(PropTypes.shape()) } From 7fa4ba5c95d2596cca72d5cd52092dbe77493785 Mon Sep 17 00:00:00 2001 From: doctorhilarius Date: Thu, 20 Jan 2022 10:01:34 -0800 Subject: [PATCH 2/8] =?UTF-8?q?fix=20typo=20copilot;=20Only=20show=20the?= =?UTF-8?q?=20launch,=20reject=20(action)=20buttons=20if=20the=20challenge?= =?UTF-8?q?=20is=20self=20service=20and=20the=20challenge.legacy.selfServi?= =?UTF-8?q?ceCopilot=20=20matches=20the=20logged=20in=20user=E2=80=99s=20u?= =?UTF-8?q?sername=20(handle)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ChallengeEditor/ChallengeView/index.js | 6 +++--- .../ChallengeViewTabs/index.js | 19 +++++++++++-------- .../ChallengeEditor/Copilot-Field/index.js | 6 +++--- src/containers/ChallengeEditor/index.js | 14 ++++++++------ 4 files changed, 25 insertions(+), 20 deletions(-) diff --git a/src/components/ChallengeEditor/ChallengeView/index.js b/src/components/ChallengeEditor/ChallengeView/index.js index 6f877844..272b9ea1 100644 --- a/src/components/ChallengeEditor/ChallengeView/index.js +++ b/src/components/ChallengeEditor/ChallengeView/index.js @@ -38,7 +38,7 @@ const ChallengeView = ({ onLaunchChallenge, onCloseTask, projectPhases, - assignYourselfCopilit, + assignYourselfCopilot, rejectChallenge }) => { const selectedType = _.find(metadata.challengeTypes, { id: challenge.typeId }) @@ -136,7 +136,7 @@ const ChallengeView = ({ + }} copilots={metadata.members} assignYourselfCopilot={assignYourselfCopilot} rejectChallenge={rejectChallenge} readOnly />
{ const [selectedTab, setSelectedTab] = useState(0) @@ -85,6 +86,7 @@ const ChallengeViewTabs = ({ const isSelfService = challenge.legacy.selfService const isDraft = challenge.status.toUpperCase() === CHALLENGE_STATUS.DRAFT const launchText = `${isSelfService && isDraft ? 'Approve and ' : ''}Launch` + const isCopilot = challenge.legacy.selfServiceCopilot === loggedInUser.handle return (
@@ -113,9 +115,9 @@ const ChallengeViewTabs = ({ styles.actionButtonsRight )} > - {(challenge.status === 'Draft' || challenge.status === 'New') && !isSelfService && + {(isDraft || challenge.status === 'New') && !isSelfService && (
)} - {challenge.status === 'Draft' && ( + {isDraft && (!isSelfService || isCopilot) && (
{challenge.legacyId || isTask ? ( )} - {isSelfService && isDraft && ( + {isSelfService && isDraft && isCopilot && (
)} @@ -263,8 +265,9 @@ ChallengeViewTabs.propTypes = { cancelChallenge: PropTypes.func.isRequired, onCloseTask: PropTypes.func, projectPhases: PropTypes.arrayOf(PropTypes.object), - assignYourselfCopilit: PropTypes.func.isRequired, - rejectChallenge: PropTypes.func.isRequired + assignYourselfCopilot: PropTypes.func.isRequired, + rejectChallenge: PropTypes.func.isRequired, + loggedInUser: PropTypes.object.isRequired } export default ChallengeViewTabs diff --git a/src/components/ChallengeEditor/Copilot-Field/index.js b/src/components/ChallengeEditor/Copilot-Field/index.js index 9e89c7dd..86a0f0eb 100644 --- a/src/components/ChallengeEditor/Copilot-Field/index.js +++ b/src/components/ChallengeEditor/Copilot-Field/index.js @@ -6,7 +6,7 @@ import cn from 'classnames' import _ from 'lodash' import CopilotCard from '../../CopilotCard' -const CopilotField = ({ copilots, challenge, onUpdateOthers, readOnly, assignYourselfCopilit }) => { +const CopilotField = ({ copilots, challenge, onUpdateOthers, readOnly, assignYourselfCopilot }) => { let errMessage = 'Please set a copilot' const selectedCopilot = _.find(copilots, { handle: challenge.copilot }) const copilotFee = _.find(challenge.prizeSets, p => p.type === 'copilot', []) @@ -23,7 +23,7 @@ const CopilotField = ({ copilots, challenge, onUpdateOthers, readOnly, assignYou {(selfService && )}
)}
@@ -65,7 +65,7 @@ CopilotField.propTypes = { challenge: PropTypes.shape().isRequired, onUpdateOthers: PropTypes.func, readOnly: PropTypes.bool, - assignYourselfCopilit: PropTypes.func.isRequired + assignYourselfCopilot: PropTypes.func.isRequired } export default CopilotField diff --git a/src/containers/ChallengeEditor/index.js b/src/containers/ChallengeEditor/index.js index 211859bd..35f60d73 100644 --- a/src/containers/ChallengeEditor/index.js +++ b/src/containers/ChallengeEditor/index.js @@ -306,8 +306,8 @@ class ChallengeEditor extends Component { } } - assignYourselfCopilit () { - console.debug('assign copilit') + assignYourselfCopilot () { + console.debug('assign copilot') } rejectChallenge () { @@ -339,7 +339,7 @@ class ChallengeEditor extends Component { loggedInUser, projectPhases, isProjectPhasesLoading, - assignYourselfCopilit, + assignYourselfCopilot, rejectChallenge // members } = this.props @@ -434,8 +434,9 @@ class ChallengeEditor extends Component { replaceResourceInRole={replaceResourceInRole} partiallyUpdateChallengeDetails={partiallyUpdateChallengeDetails} projectPhases={projectPhases} - assignYourselfCopilit={assignYourselfCopilit} + assignYourselfCopilot={assignYourselfCopilot} rejectChallenge={rejectChallenge} + loggedInUser={loggedInUser} /> )} /> @@ -499,8 +500,9 @@ class ChallengeEditor extends Component { enableEdit={enableEdit} onLaunchChallenge={this.onLaunchChallenge} onCloseTask={this.onCloseTask} - assignYourselfCopilit={this.assignYourselfCopilit} + assignYourselfCopilot={this.assignYourselfCopilot} rejectChallenge={this.rejectChallenge} + loggedInUser={loggedInUser} /> )} /> @@ -556,7 +558,7 @@ ChallengeEditor.propTypes = { loadProject: PropTypes.func, projectPhases: PropTypes.arrayOf(PropTypes.object), isProjectPhasesLoading: PropTypes.bool, - assignYourselfCopilit: PropTypes.func.isRequired, + assignYourselfCopilot: PropTypes.func.isRequired, rejectChallenge: PropTypes.func.isRequired // members: PropTypes.arrayOf(PropTypes.shape()) } From 8ba6acb332ded89e79b0a1f8ad31b0719e19d58e Mon Sep 17 00:00:00 2001 From: doctorhilarius Date: Thu, 20 Jan 2022 13:30:38 -0800 Subject: [PATCH 3/8] create resource --- src/containers/ChallengeEditor/index.js | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/containers/ChallengeEditor/index.js b/src/containers/ChallengeEditor/index.js index 35f60d73..02c2dc53 100644 --- a/src/containers/ChallengeEditor/index.js +++ b/src/containers/ChallengeEditor/index.js @@ -6,7 +6,7 @@ import moment from 'moment' import ChallengeEditorComponent from '../../components/ChallengeEditor' import ChallengeViewTabs from '../../components/ChallengeEditor/ChallengeViewTabs' import Loader from '../../components/Loader' -import { checkAdmin } from '../../util/tc' +import { checkAdmin, getResourceRoleByName } from '../../util/tc' import styles from './ChallengeEditor.module.scss' import { @@ -27,7 +27,8 @@ import { partiallyUpdateChallengeDetails, deleteChallenge, createChallenge, - replaceResourceInRole + replaceResourceInRole, + createResource } from '../../actions/challenges' import { loadSubmissions } from '../../actions/challengeSubmissions' @@ -65,6 +66,7 @@ class ChallengeEditor extends Component { this.onCloseTask = this.onCloseTask.bind(this) this.closeTask = this.closeTask.bind(this) this.fetchProjectDetails = this.fetchProjectDetails.bind(this) + this.assignYourselfCopilot = this.assignYourselfCopilot.bind(this) } componentDidMount () { @@ -306,8 +308,10 @@ class ChallengeEditor extends Component { } } - assignYourselfCopilot () { - console.debug('assign copilot') + async assignYourselfCopilot () { + const { challengeDetails, loggedInUser, metadata } = this.props + const copilotRole = getResourceRoleByName(metadata.resourceRoles, 'Copilot') + await createResource(challengeDetails.id, copilotRole.id, loggedInUser.handle) } rejectChallenge () { @@ -475,6 +479,7 @@ class ChallengeEditor extends Component { deleteChallenge={deleteChallenge} loggedInUser={loggedInUser} projectPhases={projectPhases} + assignYourselfCopilot={assignYourselfCopilot} /> )} /> @@ -617,7 +622,8 @@ const mapDispatchToProps = { deleteChallenge, createChallenge, replaceResourceInRole, - loadProject + loadProject, + createResource } export default withRouter( From edc20f37ed7b3317cb5d7a97bd8f3eb1ee16d2ab Mon Sep 17 00:00:00 2001 From: doctorhilarius Date: Thu, 20 Jan 2022 13:40:03 -0800 Subject: [PATCH 4/8] remove copilot query from drafts --- src/actions/challenges.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/actions/challenges.js b/src/actions/challenges.js index e41678fe..7c7e3d66 100644 --- a/src/actions/challenges.js +++ b/src/actions/challenges.js @@ -46,7 +46,8 @@ import { DELETE_CHALLENGE_PENDING, DELETE_CHALLENGE_SUCCESS, DELETE_CHALLENGE_FAILURE, - LOAD_CHALLENGE_RESOURCES + LOAD_CHALLENGE_RESOURCES, + CHALLENGE_STATUS } from '../config/constants' import { loadProject } from './projects' import { removeChallengeFromPhaseProduct, saveChallengeAsPhaseProduct } from '../services/projects' @@ -87,7 +88,7 @@ export function loadChallengesByPage (page, projectId, status, filterChallengeNa } if (selfService) { filters.selfService = true - if (userHandle) { + if (userHandle && filters.status.toUpperCase() !== CHALLENGE_STATUS.DRAFT) { filters.selfServiceCopilot = userHandle } } From a98a22c1c88f82f481a12c1a99e903c4fc283769 Mon Sep 17 00:00:00 2001 From: doctorhilarius Date: Thu, 20 Jan 2022 15:50:12 -0800 Subject: [PATCH 5/8] fix import of create resource --- src/components/ChallengeEditor/index.js | 8 +++++--- src/containers/ChallengeEditor/index.js | 9 ++++----- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/components/ChallengeEditor/index.js b/src/components/ChallengeEditor/index.js index 5d2958b8..099ee7ad 100644 --- a/src/components/ChallengeEditor/index.js +++ b/src/components/ChallengeEditor/index.js @@ -1233,7 +1233,8 @@ class ChallengeEditor extends Component { projectDetail, attachments, projectPhases, - challengeId + challengeId, + assignYourselfCopilot } = this.props if (_.isEmpty(challenge)) { return
Error loading challenge
@@ -1514,7 +1515,7 @@ class ChallengeEditor extends Component { /> )} {projectDetail.version === 'v4' && } - + @@ -479,7 +478,7 @@ class ChallengeEditor extends Component { deleteChallenge={deleteChallenge} loggedInUser={loggedInUser} projectPhases={projectPhases} - assignYourselfCopilot={assignYourselfCopilot} + assignYourselfCopilot={this.assignYourselfCopilot} /> )} /> @@ -517,6 +516,7 @@ class ChallengeEditor extends Component { } ChallengeEditor.propTypes = { + createResource: PropTypes.func.isRequired, match: PropTypes.shape({ path: PropTypes.string, params: PropTypes.shape({ @@ -563,7 +563,6 @@ ChallengeEditor.propTypes = { loadProject: PropTypes.func, projectPhases: PropTypes.arrayOf(PropTypes.object), isProjectPhasesLoading: PropTypes.bool, - assignYourselfCopilot: PropTypes.func.isRequired, rejectChallenge: PropTypes.func.isRequired // members: PropTypes.arrayOf(PropTypes.shape()) } From 3f32ca64a1dbe6844ec3aadadd9e14e8a25174d4 Mon Sep 17 00:00:00 2001 From: doctorhilarius Date: Thu, 20 Jan 2022 16:12:25 -0800 Subject: [PATCH 6/8] reject challenge modal wip --- .../ChallengeEditor/ChallengeView/index.js | 6 +- .../ChallengeViewTabs/index.js | 8 +-- src/containers/ChallengeEditor/index.js | 58 ++++++++++++++++--- 3 files changed, 58 insertions(+), 14 deletions(-) diff --git a/src/components/ChallengeEditor/ChallengeView/index.js b/src/components/ChallengeEditor/ChallengeView/index.js index 272b9ea1..94f4e0f6 100644 --- a/src/components/ChallengeEditor/ChallengeView/index.js +++ b/src/components/ChallengeEditor/ChallengeView/index.js @@ -39,7 +39,7 @@ const ChallengeView = ({ onCloseTask, projectPhases, assignYourselfCopilot, - rejectChallenge + showRejectChallengeModal }) => { const selectedType = _.find(metadata.challengeTypes, { id: challenge.typeId }) const challengeTrack = _.find(metadata.challengeTracks, { id: challenge.trackId }) @@ -136,7 +136,7 @@ const ChallengeView = ({ + }} copilots={metadata.members} assignYourselfCopilot={assignYourselfCopilot} showRejectChallengeModal={showRejectChallengeModal} readOnly />
{ const [selectedTab, setSelectedTab] = useState(0) @@ -155,7 +155,7 @@ const ChallengeViewTabs = ({
)} @@ -227,7 +227,7 @@ const ChallengeViewTabs = ({ onCloseTask={onCloseTask} projectPhases={projectPhases} assignYourselfCopilot={assignYourselfCopilot} - rejectChallenge={rejectChallenge} + showRejectChallengeModal={showRejectChallengeModal} /> )} {selectedTab === 1 && ( @@ -266,7 +266,7 @@ ChallengeViewTabs.propTypes = { onCloseTask: PropTypes.func, projectPhases: PropTypes.arrayOf(PropTypes.object), assignYourselfCopilot: PropTypes.func.isRequired, - rejectChallenge: PropTypes.func.isRequired, + showRejectChallengeModal: PropTypes.func.isRequired, loggedInUser: PropTypes.object.isRequired } diff --git a/src/containers/ChallengeEditor/index.js b/src/containers/ChallengeEditor/index.js index 2e18df59..2fe64774 100644 --- a/src/containers/ChallengeEditor/index.js +++ b/src/containers/ChallengeEditor/index.js @@ -8,6 +8,7 @@ import ChallengeViewTabs from '../../components/ChallengeEditor/ChallengeViewTab import Loader from '../../components/Loader' import { checkAdmin, getResourceRoleByName } from '../../util/tc' import styles from './ChallengeEditor.module.scss' +import modalStyles from '../../components/Modal/ConfirmationModal.module.scss' import { loadTimelineTemplates, @@ -40,6 +41,9 @@ import { SUBMITTER_ROLE_UUID, MESSAGE } from '../../config/constants' import { patchChallenge } from '../../services/challenges' import ConfirmationModal from '../../components/Modal/ConfirmationModal' import AlertModal from '../../components/Modal/AlertModal' +import Modal from '../../components/Modal' +import PrimaryButton from '../../components/Buttons/PrimaryButton' +import OutlineButton from '../../components/Buttons/OutlineButton' const theme = { container: styles.modalContainer @@ -54,7 +58,8 @@ class ChallengeEditor extends Component { mountedWithCreatePage, isLaunching: false, showSuccessModal: false, - showLaunchModal: false + showLaunchModal: false, + showRejectModal: false } this.onLaunchChallenge = this.onLaunchChallenge.bind(this) @@ -67,6 +72,8 @@ class ChallengeEditor extends Component { this.closeTask = this.closeTask.bind(this) this.fetchProjectDetails = this.fetchProjectDetails.bind(this) this.assignYourselfCopilot = this.assignYourselfCopilot.bind(this) + this.showRejectChallengeModal = this.showRejectChallengeModal.bind(this) + this.closeRejectModal = this.closeRejectModal.bind(this) } componentDidMount () { @@ -218,6 +225,10 @@ class ChallengeEditor extends Component { this.setState({ showSuccessModal: false }) } + closeRejectModal () { + this.setState({ showRejectModal: false }) + } + async activateChallenge () { const { partiallyUpdateChallengeDetails } = this.props if (this.state.isLaunching) return @@ -311,11 +322,15 @@ class ChallengeEditor extends Component { async assignYourselfCopilot () { const { challengeDetails, loggedInUser, metadata, createResource } = this.props const copilotRole = getResourceRoleByName(metadata.resourceRoles, 'Copilot') - await createResource(challengeDetails.id, copilotRole.id, loggedInUser.handle) + createResource(challengeDetails.id, copilotRole.id, loggedInUser.handle) + } + + showRejectChallengeModal () { + this.setState({ showRejectModal: true }) } rejectChallenge () { - console.debug('rejecting challenge') + console.debug('rejecting') } render () { @@ -343,7 +358,8 @@ class ChallengeEditor extends Component { loggedInUser, projectPhases, isProjectPhasesLoading, - rejectChallenge + rejectChallenge, + showRejectChallengeModal // members } = this.props const { @@ -353,7 +369,8 @@ class ChallengeEditor extends Component { showCloseTaskModal, showSuccessModal, suceessMessage, - challengeDetails + challengeDetails, + showRejectModal } = this.state if (isProjectLoading || isLoading || isProjectPhasesLoading) return const challengeId = _.get(match.params, 'challengeId', null) @@ -405,11 +422,36 @@ class ChallengeEditor extends Component { onClose={this.closeSuccessModal} /> ) + const rejectModal = ( + +
+
Reject Challenge
+ Please provide a reason for rejecting "{challengeDetails.name}?" +
+
+ +
+
+ +
+
+
+
+ ) return (
{showLaunchModal && activateModal} {showCloseTaskModal && closeTaskModal} {showSuccessModal && successModal} + {showRejectModal && rejectModal} )} @@ -505,7 +548,7 @@ class ChallengeEditor extends Component { onLaunchChallenge={this.onLaunchChallenge} onCloseTask={this.onCloseTask} assignYourselfCopilot={this.assignYourselfCopilot} - rejectChallenge={this.rejectChallenge} + showRejectChallengeModal={this.showRejectChallengeModal} loggedInUser={loggedInUser} /> )} @@ -563,7 +606,8 @@ ChallengeEditor.propTypes = { loadProject: PropTypes.func, projectPhases: PropTypes.arrayOf(PropTypes.object), isProjectPhasesLoading: PropTypes.bool, - rejectChallenge: PropTypes.func.isRequired + rejectChallenge: PropTypes.func.isRequired, + showRejectChallengeModal: PropTypes.func // members: PropTypes.arrayOf(PropTypes.shape()) } From b936b4ceb01b367c537043e9d9f18371df97983a Mon Sep 17 00:00:00 2001 From: doctorhilarius Date: Thu, 20 Jan 2022 16:36:39 -0800 Subject: [PATCH 7/8] update UI after challenge is assigned to self --- src/components/ChallengeEditor/ChallengeView/index.js | 2 +- src/components/ChallengeEditor/Copilot-Field/index.js | 2 +- src/containers/ChallengeEditor/index.js | 9 ++++++++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/components/ChallengeEditor/ChallengeView/index.js b/src/components/ChallengeEditor/ChallengeView/index.js index 94f4e0f6..fab8d15c 100644 --- a/src/components/ChallengeEditor/ChallengeView/index.js +++ b/src/components/ChallengeEditor/ChallengeView/index.js @@ -76,7 +76,7 @@ const ChallengeView = ({ const reviewerFromResources = reviewerResource ? reviewerResource.memberHandle : '' let copilot, reviewer if (challenge) { - copilot = challenge.copilot + copilot = challenge.copilot || (challenge.legacy && challenge.legacy.selfServiceCopilot) reviewer = challenge.reviewer } copilot = copilot || copilotFromResources diff --git a/src/components/ChallengeEditor/Copilot-Field/index.js b/src/components/ChallengeEditor/Copilot-Field/index.js index 86a0f0eb..31031b20 100644 --- a/src/components/ChallengeEditor/Copilot-Field/index.js +++ b/src/components/ChallengeEditor/Copilot-Field/index.js @@ -20,7 +20,7 @@ const CopilotField = ({ copilots, challenge, onUpdateOthers, readOnly, assignYou
{(selectedCopilot || selfService) && (
{(selectedCopilot && )} - {(selfService && Date: Thu, 20 Jan 2022 16:55:57 -0800 Subject: [PATCH 8/8] wire up reject modal --- src/containers/ChallengeEditor/index.js | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/containers/ChallengeEditor/index.js b/src/containers/ChallengeEditor/index.js index 3a48cda2..137e887b 100644 --- a/src/containers/ChallengeEditor/index.js +++ b/src/containers/ChallengeEditor/index.js @@ -74,6 +74,7 @@ class ChallengeEditor extends Component { this.assignYourselfCopilot = this.assignYourselfCopilot.bind(this) this.showRejectChallengeModal = this.showRejectChallengeModal.bind(this) this.closeRejectModal = this.closeRejectModal.bind(this) + this.rejectChallenge = this.rejectChallenge.bind(this) } componentDidMount () { @@ -321,14 +322,19 @@ class ChallengeEditor extends Component { async assignYourselfCopilot () { const { challengeDetails, loggedInUser, metadata, createResource } = this.props + + // create the role resource const copilotRole = getResourceRoleByName(metadata.resourceRoles, 'Copilot') const copilotHandle = loggedInUser.handle await createResource(challengeDetails.id, copilotRole.id, copilotHandle) - const updatedChallenge = await patchChallenge(challengeDetails.id, { + + // update the challenge + const partialChallenge = { legacy: { selfServiceCopilot: copilotHandle } - }) + } + const updatedChallenge = await patchChallenge(challengeDetails.id, partialChallenge) this.setState({ challengeDetails: updatedChallenge }) } @@ -336,8 +342,15 @@ class ChallengeEditor extends Component { this.setState({ showRejectModal: true }) } - rejectChallenge () { - console.debug('rejecting') + async rejectChallenge () { + const { challengeDetails } = this.props + const partialChallenge = { + status: 'Cancelled - Requirements Infeasible', + cancelReason: 'TODO' // TODO + } + const updatedChallenge = await patchChallenge(challengeDetails.id, partialChallenge) + this.setState({ challengeDetails: updatedChallenge }) + this.closeRejectModal() } render () {