diff --git a/src/components/ChallengeEditor/index.js b/src/components/ChallengeEditor/index.js
index 76223c11..2d4bdef7 100644
--- a/src/components/ChallengeEditor/index.js
+++ b/src/components/ChallengeEditor/index.js
@@ -655,7 +655,11 @@ class ChallengeEditor extends Component {
toggleLaunch (e) {
e.preventDefault()
if (this.validateChallenge()) {
- this.setState({ isLaunch: true })
+ if (!this.props.isBillingAccountExpired) {
+ this.setState({ isLaunch: true })
+ } else {
+ this.setState({ isLaunch: true, error: 'Unable to activate challenge as Billing Account is not active.' })
+ }
}
}
@@ -1279,6 +1283,7 @@ class ChallengeEditor extends Component {
errorMessage={this.state.error}
onCancel={this.resetModal}
onConfirm={this.onActiveChallenge}
+ disableConfirmButton={isBillingAccountExpired}
/>
)
}
diff --git a/src/components/ChallengesComponent/ChallengeCard/index.js b/src/components/ChallengesComponent/ChallengeCard/index.js
index 5a1258ae..4a0695a2 100644
--- a/src/components/ChallengesComponent/ChallengeCard/index.js
+++ b/src/components/ChallengesComponent/ChallengeCard/index.js
@@ -209,7 +209,11 @@ class ChallengeCard extends React.Component {
onUpdateLaunch () {
if (!this.state.isLaunch) {
- this.setState({ isLaunch: true })
+ if (!this.props.isBillingAccountExpired) {
+ this.setState({ isLaunch: true })
+ } else {
+ this.setState({ isLaunch: true, error: 'Unable to activate challenge as Billing Account is not active.' })
+ }
}
}
@@ -272,7 +276,7 @@ class ChallengeCard extends React.Component {
render () {
const { isLaunch, isConfirm, isSaving, isDeleteLaunch, isCheckChalengePermission, hasEditChallengePermission } = this.state
- const { challenge, shouldShowCurrentPhase, reloadChallengeList } = this.props
+ const { challenge, shouldShowCurrentPhase, reloadChallengeList, isBillingAccountExpired } = this.props
const { phaseMessage, endTime } = getPhaseInfo(challenge)
const deleteMessage = isCheckChalengePermission
? 'Checking permissions...'
@@ -305,6 +309,7 @@ class ChallengeCard extends React.Component {
errorMessage={this.state.error}
onCancel={this.resetModal}
onConfirm={this.onLaunchChallenge}
+ disableConfirmButton={isBillingAccountExpired}
/>
)
}
@@ -364,7 +369,8 @@ ChallengeCard.propTypes = {
shouldShowCurrentPhase: PropTypes.bool,
reloadChallengeList: PropTypes.func,
partiallyUpdateChallengeDetails: PropTypes.func.isRequired,
- deleteChallenge: PropTypes.func.isRequired
+ deleteChallenge: PropTypes.func.isRequired,
+ isBillingAccountExpired: PropTypes.bool
}
export default withRouter(ChallengeCard)
diff --git a/src/components/ChallengesComponent/ChallengeList/index.js b/src/components/ChallengesComponent/ChallengeList/index.js
index 941c27eb..e7c355a2 100644
--- a/src/components/ChallengesComponent/ChallengeList/index.js
+++ b/src/components/ChallengesComponent/ChallengeList/index.js
@@ -103,7 +103,8 @@ class ChallengeList extends Component {
perPage,
totalChallenges,
partiallyUpdateChallengeDetails,
- deleteChallenge
+ deleteChallenge,
+ isBillingAccountExpired
} = this.props
if (warnMessage) {
return
@@ -215,6 +216,7 @@ class ChallengeList extends Component {
reloadChallengeList={this.reloadChallengeList}
partiallyUpdateChallengeDetails={partiallyUpdateChallengeDetails}
deleteChallenge={deleteChallenge}
+ isBillingAccountExpired={isBillingAccountExpired}
/>
)
@@ -258,7 +260,8 @@ ChallengeList.propTypes = {
perPage: PropTypes.number.isRequired,
totalChallenges: PropTypes.number.isRequired,
partiallyUpdateChallengeDetails: PropTypes.func.isRequired,
- deleteChallenge: PropTypes.func.isRequired
+ deleteChallenge: PropTypes.func.isRequired,
+ isBillingAccountExpired: PropTypes.bool
}
export default ChallengeList
diff --git a/src/components/ChallengesComponent/index.js b/src/components/ChallengesComponent/index.js
index eb386d49..d96f9850 100644
--- a/src/components/ChallengesComponent/index.js
+++ b/src/components/ChallengesComponent/index.js
@@ -27,7 +27,8 @@ const ChallengesComponent = ({
perPage,
totalChallenges,
partiallyUpdateChallengeDetails,
- deleteChallenge
+ deleteChallenge,
+ isBillingAccountExpired
}) => {
return (
@@ -88,6 +89,7 @@ const ChallengesComponent = ({
totalChallenges={totalChallenges}
partiallyUpdateChallengeDetails={partiallyUpdateChallengeDetails}
deleteChallenge={deleteChallenge}
+ isBillingAccountExpired={isBillingAccountExpired}
/>
)}
@@ -112,7 +114,8 @@ ChallengesComponent.propTypes = {
perPage: PropTypes.number.isRequired,
totalChallenges: PropTypes.number.isRequired,
partiallyUpdateChallengeDetails: PropTypes.func.isRequired,
- deleteChallenge: PropTypes.func.isRequired
+ deleteChallenge: PropTypes.func.isRequired,
+ isBillingAccountExpired: PropTypes.bool
}
ChallengesComponent.defaultProps = {
diff --git a/src/containers/ChallengeEditor/index.js b/src/containers/ChallengeEditor/index.js
index cbe144b1..3be5fd34 100644
--- a/src/containers/ChallengeEditor/index.js
+++ b/src/containers/ChallengeEditor/index.js
@@ -148,7 +148,11 @@ class ChallengeEditor extends Component {
}
onLaunchChallenge () {
- this.setState({ showLaunchModal: true })
+ if (!this.props.isBillingAccountExpired) {
+ this.setState({ showLaunchModal: true })
+ } else {
+ this.setState({ showLaunchModal: true, launchError: 'Unable to activate challenge as Billing Account is not active.' })
+ }
}
onCloseTask () {
@@ -289,6 +293,7 @@ class ChallengeEditor extends Component {
errorMessage={this.state.launchError}
onCancel={this.closeLaunchModal}
onConfirm={this.activateChallenge}
+ disableConfirmButton={isBillingAccountExpired}
/>
const closeTaskModal =
}
@@ -176,7 +178,8 @@ Challenges.propTypes = {
loadProjects: PropTypes.func.isRequired,
setActiveProject: PropTypes.func.isRequired,
partiallyUpdateChallengeDetails: PropTypes.func.isRequired,
- deleteChallenge: PropTypes.func.isRequired
+ deleteChallenge: PropTypes.func.isRequired,
+ isBillingAccountExpired: PropTypes.bool
}
const mapStateToProps = ({ challenges, sidebar, projects }) => ({
@@ -184,7 +187,8 @@ const mapStateToProps = ({ challenges, sidebar, projects }) => ({
challengeProjectId: challenges.projectId,
activeProjectId: sidebar.activeProjectId,
projects: sidebar.projects,
- projectDetail: projects.projectDetail
+ projectDetail: projects.projectDetail,
+ isBillingAccountExpired: projects.isBillingAccountExpired
})
const mapDispatchToProps = {