Skip to content

Commit 2bd8368

Browse files
author
vikasrohit
authored
Merge pull request #962 from topcoder-platform/develop
Prod Update - multiple fixes
2 parents dd46b60 + 0018c4d commit 2bd8368

File tree

3 files changed

+52
-36
lines changed

3 files changed

+52
-36
lines changed

src/actions/challenges.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -478,6 +478,8 @@ export function replaceResourceInRole (challengeId, roleId, newMember, oldMember
478478
}
479479
}
480480
}
481-
await dispatch(createResource(challengeId, roleId, newMember))
481+
if (newMember) {
482+
await dispatch(createResource(challengeId, roleId, newMember))
483+
}
482484
}
483485
}

src/components/ChallengeEditor/index.js

Lines changed: 47 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ class ChallengeEditor extends Component {
116116
this.onUpdateMetadata = this.onUpdateMetadata.bind(this)
117117
this.getTemplatePhases = this.getTemplatePhases.bind(this)
118118
this.getAvailableTimelineTemplates = this.getAvailableTimelineTemplates.bind(this)
119-
this.autoUpdateChallengeThrottled = _.throttle(this.autoUpdateChallenge.bind(this), 3000) // 3s
119+
this.autoUpdateChallengeThrottled = _.throttle(this.validateAndAutoUpdateChallenge.bind(this), 3000) // 3s
120120
this.updateResource = this.updateResource.bind(this)
121121
}
122122

@@ -128,6 +128,18 @@ class ChallengeEditor extends Component {
128128
this.resetChallengeData(this.setState.bind(this))
129129
}
130130

131+
/**
132+
* Validates challenge and if its valid calling an autosave method
133+
*
134+
* @param {string} changedField changed field
135+
* @param {any} prevValue previous value
136+
*/
137+
async validateAndAutoUpdateChallenge (changedField, prevValue) {
138+
if (this.validateChallenge()) {
139+
this.autoUpdateChallenge(changedField, prevValue)
140+
}
141+
}
142+
131143
async resetChallengeData (setState = () => {}) {
132144
const { isNew, challengeDetails, metadata, attachments, challengeId, assignedMemberDetails } = this.props
133145
if (
@@ -922,35 +934,38 @@ class ChallengeEditor extends Component {
922934
async updateAllChallengeInfo (status, cb = () => {}) {
923935
const { updateChallengeDetails, assignedMemberDetails: oldAssignedMember } = this.props
924936
if (this.state.isSaving) return
925-
this.setState({ isSaving: true })
926-
const challenge = this.collectChallengeData(status)
927-
let newChallenge = _.cloneDeep(this.state.challenge)
928-
newChallenge.status = status
929-
try {
930-
const challengeId = this.getCurrentChallengeId()
931-
const action = await updateChallengeDetails(challengeId, challenge)
932-
const { copilot: previousCopilot, reviewer: previousReviewer } = this.state.draftChallenge.data
933-
const { challenge: { copilot, reviewer }, assignedMemberDetails: assignedMember } = this.state
934-
if (copilot) await this.updateResource(challengeId, 'Copilot', copilot, previousCopilot)
935-
if (reviewer) await this.updateResource(challengeId, 'Reviewer', reviewer, previousReviewer)
936-
const oldMemberHandle = _.get(oldAssignedMember, 'handle')
937-
// assigned member has been updated
938-
if (assignedMember && assignedMember.handle !== oldMemberHandle) {
939-
await this.updateResource(challengeId, 'Submitter', assignedMember.handle, oldMemberHandle)
940-
}
937+
this.setState({ isSaving: true }, async () => {
938+
const challenge = this.collectChallengeData(status)
939+
let newChallenge = _.cloneDeep(this.state.challenge)
940+
newChallenge.status = status
941+
try {
942+
const challengeId = this.getCurrentChallengeId()
943+
// state can have updated assigned member (in cases where user changes assignments without refreshing the page)
944+
const { challenge: { copilot, reviewer }, assignedMemberDetails: assignedMember } = this.state
945+
const oldMemberHandle = _.get(oldAssignedMember, 'handle')
946+
const assignedMemberHandle = _.get(assignedMember, 'handle')
947+
// assigned member has been updated
948+
if (assignedMemberHandle !== oldMemberHandle) {
949+
await this.updateResource(challengeId, 'Submitter', assignedMemberHandle, oldMemberHandle)
950+
}
951+
const action = await updateChallengeDetails(challengeId, challenge)
952+
const { copilot: previousCopilot, reviewer: previousReviewer } = this.state.draftChallenge.data
953+
if (copilot !== previousCopilot) await this.updateResource(challengeId, 'Copilot', copilot, previousCopilot)
954+
if (reviewer !== previousReviewer) await this.updateResource(challengeId, 'Reviewer', reviewer, previousReviewer)
941955

942-
const draftChallenge = { data: action.challengeDetails }
943-
draftChallenge.data.copilot = copilot
944-
draftChallenge.data.reviewer = reviewer
945-
this.setState({ isLaunch: true,
946-
isConfirm: newChallenge.id,
947-
draftChallenge,
948-
challenge: newChallenge,
949-
isSaving: false }, cb)
950-
} catch (e) {
951-
const error = _.get(e, 'response.data.message', `Unable to update the challenge to status ${status}`)
952-
this.setState({ isSaving: false, error }, cb)
953-
}
956+
const draftChallenge = { data: action.challengeDetails }
957+
draftChallenge.data.copilot = copilot
958+
draftChallenge.data.reviewer = reviewer
959+
this.setState({ isLaunch: true,
960+
isConfirm: newChallenge.id,
961+
draftChallenge,
962+
challenge: newChallenge,
963+
isSaving: false }, cb)
964+
} catch (e) {
965+
const error = _.get(e, 'response.data.message', `Unable to update the challenge to status ${status}`)
966+
this.setState({ isSaving: false, error }, cb)
967+
}
968+
})
954969
}
955970

956971
async onActiveChallenge () {
@@ -1043,7 +1058,6 @@ class ChallengeEditor extends Component {
10431058
return <div>Error loading challenge</div>
10441059
}
10451060
const isTask = _.get(challenge, 'task.isTask', false)
1046-
console.log(this.props.assignedMemberDetails)
10471061
const { assignedMemberDetails, error } = this.state
10481062
let isActive = false
10491063
let isDraft = false
@@ -1194,7 +1208,7 @@ class ChallengeEditor extends Component {
11941208
<OutlineButton text={isSaving ? 'Saving...' : 'Save'} type={'success'} onClick={this.onSaveChallenge} />
11951209
</div> */}
11961210
<div className={styles.button}>
1197-
<PrimaryButton text={'Save Draft'} type={'info'} onClick={this.createDraftHandler} />
1211+
<PrimaryButton text={isSaving ? 'Saving...' : 'Save Draft'} type={'info'} onClick={this.createDraftHandler} />
11981212
</div>
11991213
{isDraft && (
12001214
<div className={styles.button}>
@@ -1210,9 +1224,9 @@ class ChallengeEditor extends Component {
12101224
)}
12111225
</div>}
12121226
{!isLoading && isActive && <div className={styles.buttonContainer}>
1213-
{/* <div className={styles.button}>
1227+
<div className={styles.button}>
12141228
<OutlineButton text={isSaving ? 'Saving...' : 'Save'} type={'success'} onClick={this.onSaveChallenge} />
1215-
</div> */}
1229+
</div>
12161230
{isTask && (
12171231
<div className={styles.button}>
12181232
<PrimaryButton text={'Close Task'} type={'danger'} onClick={this.openCloseTaskConfirmation} />

src/components/Sidebar/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ const Sidebar = ({
1717
<div className={styles.title}>Work Manager</div>
1818
<Link to='/'>
1919
<div className={cn(styles.homeLink, { [styles.active]: !projectId })} onClick={resetSidebarActiveParams}>
20-
Active challenges
20+
All Work
2121
</div>
2222
</Link>
23-
<a href='https://forms.gle/CsaVawSDkdR5E92B8' target='_blank' rel='noopener noreferrer' className='chameleon-feedback'>
23+
<a href='https://github.com/topcoder-platform/work-manager/issues/newsid' target='_blank' rel='noopener noreferrer' className='chameleon-feedback'>
2424
<div className={cn(styles.homeLink, { [styles.active]: !projectId })}>
2525
Give Application Feedback
2626
</div>

0 commit comments

Comments
 (0)