Skip to content
This repository was archived by the owner on Mar 13, 2025. It is now read-only.

Commit d079e1f

Browse files
committed
March 2020 release challenge
1 parent 6a9f157 commit d079e1f

File tree

1 file changed

+37
-30
lines changed

1 file changed

+37
-30
lines changed

services/IssueService.js

Lines changed: 37 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -499,7 +499,7 @@ async function handleIssueClose(event, issue) { // eslint-disable-line
499499
} catch (e) {
500500
event.paymentSuccessful = event.paymentSuccessful === true; // if once paid shouldn't be false
501501
// update the issue status to payment failed
502-
if (!event.paymentSuccessful) {
502+
if (!event.paymentSuccessful && dbIssue && dbIssue.id) {
503503
await dbHelper.update(models.Issue, dbIssue.id, {
504504
status: 'challenge_payment_failed',
505505
updatedAt: new Date()
@@ -566,24 +566,25 @@ async function handleIssueCreate(event, issue, forceAssign = false) {
566566
}
567567
issueCreationLock[creationLockKey] = true;
568568

569-
// create issue with challenge creation pending
570-
const issueObject = _.assign({}, _.omit(issue, 'assignee'), {
571-
id: helper.generateIdentifier(),
572-
status: 'challenge_creation_pending'
573-
});
574-
dbIssue = await dbHelper.create(models.Issue, issueObject);
569+
try {
570+
// create issue with challenge creation pending
571+
const issueObject = _.assign({}, _.omit(issue, 'assignee'), {
572+
id: helper.generateIdentifier(),
573+
status: 'challenge_creation_pending'
574+
});
575+
dbIssue = await dbHelper.create(models.Issue, issueObject);
575576

576-
const projectId = project.tcDirectId;
577+
const projectId = project.tcDirectId;
577578

578-
let fullRepoUrl;
579-
if (issue.provider === 'github') {
580-
fullRepoUrl = `https://github.com/${event.data.repository.full_name}`;
581-
} else if (issue.provider === 'gitlab') {
582-
fullRepoUrl = `${config.GITLAB_API_BASE_URL}/${event.data.repository.full_name}`;
583-
}
579+
let fullRepoUrl;
580+
if (issue.provider === 'github') {
581+
fullRepoUrl = `https://github.com/${event.data.repository.full_name}`;
582+
} else if (issue.provider === 'gitlab') {
583+
fullRepoUrl = `${config.GITLAB_API_BASE_URL}/${event.data.repository.full_name}`;
584+
}
584585

585-
logger.debug(`existing project was found with id ${projectId} for repository ${event.data.repository.full_name}`);
586-
try {
586+
logger.debug(`existing project was found with id ${projectId} for repository ${event.data.repository.full_name}`);
587+
587588
// Create a new challenge
588589
issue.challengeId = await topcoderApiHelper.createChallenge({
589590
name: issue.title,
@@ -603,27 +604,31 @@ async function handleIssueCreate(event, issue, forceAssign = false) {
603604
});
604605
} catch (e) {
605606
logger.error(`Challenge creation failure: ${e}`);
607+
delete issueCreationLock[creationLockKey];
606608
await dbHelper.removeIssue(models.Issue, issue.repositoryId, issue.number, issue.provider);
607609
await eventService.handleEventGracefully(event, issue, e);
608-
delete issueCreationLock[creationLockKey];
609610
return;
610611
}
612+
try {
613+
const contestUrl = getUrlForChallengeId(issue.challengeId);
614+
const comment = `Contest ${contestUrl} has been created for this ticket.`;
615+
await gitHelper.createComment(event, issue.number, comment);
611616

612-
const contestUrl = getUrlForChallengeId(issue.challengeId);
613-
const comment = `Contest ${contestUrl} has been created for this ticket.`;
614-
await gitHelper.createComment(event, issue.number, comment);
615-
616-
if (event.provider === 'gitlab' || forceAssign) {
617-
// if assignee is added during issue create then assign as well
618-
if (event.data.issue.assignees && event.data.issue.assignees.length > 0 && event.data.issue.assignees[0].id) {
619-
event.data.assignee = {
620-
id: event.data.issue.assignees[0].id
621-
};
622-
await handleIssueAssignment(event, issue, true);
617+
if (event.provider === 'gitlab' || forceAssign) {
618+
// if assignee is added during issue create then assign as well
619+
if (event.data.issue.assignees && event.data.issue.assignees.length > 0 && event.data.issue.assignees[0].id) {
620+
event.data.assignee = {
621+
id: event.data.issue.assignees[0].id
622+
};
623+
await handleIssueAssignment(event, issue, true);
624+
}
623625
}
626+
delete issueCreationLock[creationLockKey];
627+
} catch (err) {
628+
logger.error(`Comment creation failure: ${e}`);
629+
delete issueCreationLock[creationLockKey];
630+
logger.debug(`new challenge created with id ${issue.challengeId} for issue ${issue.number}`);
624631
}
625-
delete issueCreationLock[creationLockKey];
626-
logger.debug(`new challenge created with id ${issue.challengeId} for issue ${issue.number}`);
627632
}
628633

629634
/**
@@ -780,6 +785,8 @@ async function handleIssueRecreate(event, issue) {
780785
logger.debug(`Adding label ${config.OPEN_FOR_PICKUP_ISSUE_LABEL}`);
781786
await gitHelper.addLabels(event, issue.number, issueLabels);
782787

788+
const creationLockKey = `${issue.provider}-${issue.repositoryId}-${issue.number}`;
789+
delete issueCreationLock[creationLockKey];
783790
await handleIssueCreate(event, issue, false);
784791

785792
if (event.data.issue.assignees && event.data.issue.assignees.length > 0 && event.data.issue.assignees[0].id) {

0 commit comments

Comments
 (0)