Skip to content

Commit 3f32ca6

Browse files
reject challenge modal wip
1 parent a98a22c commit 3f32ca6

File tree

3 files changed

+58
-14
lines changed

3 files changed

+58
-14
lines changed

src/components/ChallengeEditor/ChallengeView/index.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ const ChallengeView = ({
3939
onCloseTask,
4040
projectPhases,
4141
assignYourselfCopilot,
42-
rejectChallenge
42+
showRejectChallengeModal
4343
}) => {
4444
const selectedType = _.find(metadata.challengeTypes, { id: challenge.typeId })
4545
const challengeTrack = _.find(metadata.challengeTracks, { id: challenge.trackId })
@@ -136,7 +136,7 @@ const ChallengeView = ({
136136
<CopilotField challenge={{
137137
copilot,
138138
selfService: challenge.legacy.selfService
139-
}} copilots={metadata.members} assignYourselfCopilot={assignYourselfCopilot} rejectChallenge={rejectChallenge} readOnly />
139+
}} copilots={metadata.members} assignYourselfCopilot={assignYourselfCopilot} showRejectChallengeModal={showRejectChallengeModal} readOnly />
140140
<div className={cn(styles.row, styles.topRow)}>
141141
<div className={styles.col}>
142142
<span><span
@@ -264,7 +264,7 @@ ChallengeView.propTypes = {
264264
onCloseTask: PropTypes.func,
265265
projectPhases: PropTypes.arrayOf(PropTypes.object),
266266
assignYourselfCopilot: PropTypes.func.isRequired,
267-
rejectChallenge: PropTypes.func.isRequired
267+
showRejectChallengeModal: PropTypes.func.isRequired
268268
}
269269

270270
export default withRouter(ChallengeView)

src/components/ChallengeEditor/ChallengeViewTabs/index.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ const ChallengeViewTabs = ({
4545
onCloseTask,
4646
projectPhases,
4747
assignYourselfCopilot,
48-
rejectChallenge,
48+
showRejectChallengeModal,
4949
loggedInUser
5050
}) => {
5151
const [selectedTab, setSelectedTab] = useState(0)
@@ -155,7 +155,7 @@ const ChallengeViewTabs = ({
155155
<PrimaryButton
156156
text={'Reject challenge'}
157157
type={'danger'}
158-
onClick={rejectChallenge}
158+
onClick={showRejectChallengeModal}
159159
/>
160160
</div>
161161
)}
@@ -227,7 +227,7 @@ const ChallengeViewTabs = ({
227227
onCloseTask={onCloseTask}
228228
projectPhases={projectPhases}
229229
assignYourselfCopilot={assignYourselfCopilot}
230-
rejectChallenge={rejectChallenge}
230+
showRejectChallengeModal={showRejectChallengeModal}
231231
/>
232232
)}
233233
{selectedTab === 1 && (
@@ -266,7 +266,7 @@ ChallengeViewTabs.propTypes = {
266266
onCloseTask: PropTypes.func,
267267
projectPhases: PropTypes.arrayOf(PropTypes.object),
268268
assignYourselfCopilot: PropTypes.func.isRequired,
269-
rejectChallenge: PropTypes.func.isRequired,
269+
showRejectChallengeModal: PropTypes.func.isRequired,
270270
loggedInUser: PropTypes.object.isRequired
271271
}
272272

src/containers/ChallengeEditor/index.js

Lines changed: 51 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import ChallengeViewTabs from '../../components/ChallengeEditor/ChallengeViewTab
88
import Loader from '../../components/Loader'
99
import { checkAdmin, getResourceRoleByName } from '../../util/tc'
1010
import styles from './ChallengeEditor.module.scss'
11+
import modalStyles from '../../components/Modal/ConfirmationModal.module.scss'
1112

1213
import {
1314
loadTimelineTemplates,
@@ -40,6 +41,9 @@ import { SUBMITTER_ROLE_UUID, MESSAGE } from '../../config/constants'
4041
import { patchChallenge } from '../../services/challenges'
4142
import ConfirmationModal from '../../components/Modal/ConfirmationModal'
4243
import AlertModal from '../../components/Modal/AlertModal'
44+
import Modal from '../../components/Modal'
45+
import PrimaryButton from '../../components/Buttons/PrimaryButton'
46+
import OutlineButton from '../../components/Buttons/OutlineButton'
4347

4448
const theme = {
4549
container: styles.modalContainer
@@ -54,7 +58,8 @@ class ChallengeEditor extends Component {
5458
mountedWithCreatePage,
5559
isLaunching: false,
5660
showSuccessModal: false,
57-
showLaunchModal: false
61+
showLaunchModal: false,
62+
showRejectModal: false
5863
}
5964

6065
this.onLaunchChallenge = this.onLaunchChallenge.bind(this)
@@ -67,6 +72,8 @@ class ChallengeEditor extends Component {
6772
this.closeTask = this.closeTask.bind(this)
6873
this.fetchProjectDetails = this.fetchProjectDetails.bind(this)
6974
this.assignYourselfCopilot = this.assignYourselfCopilot.bind(this)
75+
this.showRejectChallengeModal = this.showRejectChallengeModal.bind(this)
76+
this.closeRejectModal = this.closeRejectModal.bind(this)
7077
}
7178

7279
componentDidMount () {
@@ -218,6 +225,10 @@ class ChallengeEditor extends Component {
218225
this.setState({ showSuccessModal: false })
219226
}
220227

228+
closeRejectModal () {
229+
this.setState({ showRejectModal: false })
230+
}
231+
221232
async activateChallenge () {
222233
const { partiallyUpdateChallengeDetails } = this.props
223234
if (this.state.isLaunching) return
@@ -311,11 +322,15 @@ class ChallengeEditor extends Component {
311322
async assignYourselfCopilot () {
312323
const { challengeDetails, loggedInUser, metadata, createResource } = this.props
313324
const copilotRole = getResourceRoleByName(metadata.resourceRoles, 'Copilot')
314-
await createResource(challengeDetails.id, copilotRole.id, loggedInUser.handle)
325+
createResource(challengeDetails.id, copilotRole.id, loggedInUser.handle)
326+
}
327+
328+
showRejectChallengeModal () {
329+
this.setState({ showRejectModal: true })
315330
}
316331

317332
rejectChallenge () {
318-
console.debug('rejecting challenge')
333+
console.debug('rejecting')
319334
}
320335

321336
render () {
@@ -343,7 +358,8 @@ class ChallengeEditor extends Component {
343358
loggedInUser,
344359
projectPhases,
345360
isProjectPhasesLoading,
346-
rejectChallenge
361+
rejectChallenge,
362+
showRejectChallengeModal
347363
// members
348364
} = this.props
349365
const {
@@ -353,7 +369,8 @@ class ChallengeEditor extends Component {
353369
showCloseTaskModal,
354370
showSuccessModal,
355371
suceessMessage,
356-
challengeDetails
372+
challengeDetails,
373+
showRejectModal
357374
} = this.state
358375
if (isProjectLoading || isLoading || isProjectPhasesLoading) return <Loader />
359376
const challengeId = _.get(match.params, 'challengeId', null)
@@ -405,11 +422,36 @@ class ChallengeEditor extends Component {
405422
onClose={this.closeSuccessModal}
406423
/>
407424
)
425+
const rejectModal = (
426+
<Modal theme={theme} onCancel={this.closeRejectModal}>
427+
<div className={modalStyles.contentContainer}>
428+
<div className={modalStyles.title}>Reject Challenge</div>
429+
<span> Please provide a reason for rejecting "{challengeDetails.name}?"</span>
430+
<div className={modalStyles.buttonGroup}>
431+
<div className={modalStyles.buttonSizeA}>
432+
<PrimaryButton
433+
text='Reject challenge'
434+
type='danger'
435+
onClick={this.rejectChallenge}
436+
/>
437+
</div>
438+
<div className={modalStyles.buttonSizeA}>
439+
<OutlineButton
440+
text='Cancel'
441+
type='info'
442+
onClick={this.closeRejectModal}
443+
/>
444+
</div>
445+
</div>
446+
</div>
447+
</Modal>
448+
)
408449
return (
409450
<div>
410451
{showLaunchModal && activateModal}
411452
{showCloseTaskModal && closeTaskModal}
412453
{showSuccessModal && successModal}
454+
{showRejectModal && rejectModal}
413455
<Route
414456
exact
415457
path={this.props.match.path}
@@ -439,6 +481,7 @@ class ChallengeEditor extends Component {
439481
projectPhases={projectPhases}
440482
assignYourselfCopilot={this.assignYourselfCopilot}
441483
rejectChallenge={rejectChallenge}
484+
showRejectChallengeModal={showRejectChallengeModal}
442485
loggedInUser={loggedInUser}
443486
/>
444487
)}
@@ -505,7 +548,7 @@ class ChallengeEditor extends Component {
505548
onLaunchChallenge={this.onLaunchChallenge}
506549
onCloseTask={this.onCloseTask}
507550
assignYourselfCopilot={this.assignYourselfCopilot}
508-
rejectChallenge={this.rejectChallenge}
551+
showRejectChallengeModal={this.showRejectChallengeModal}
509552
loggedInUser={loggedInUser}
510553
/>
511554
)}
@@ -563,7 +606,8 @@ ChallengeEditor.propTypes = {
563606
loadProject: PropTypes.func,
564607
projectPhases: PropTypes.arrayOf(PropTypes.object),
565608
isProjectPhasesLoading: PropTypes.bool,
566-
rejectChallenge: PropTypes.func.isRequired
609+
rejectChallenge: PropTypes.func.isRequired,
610+
showRejectChallengeModal: PropTypes.func
567611
// members: PropTypes.arrayOf(PropTypes.shape())
568612
}
569613

0 commit comments

Comments
 (0)