diff --git a/.gitignore b/.gitignore index 8cefbfc1..5937d309 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ node_modules/ -logs/ \ No newline at end of file +logs/ +.idea/ diff --git a/achievements/doubleReview.achievement.js b/achievements/doubleReview.achievement.js index 34fe74f5..027b3308 100644 --- a/achievements/doubleReview.achievement.js +++ b/achievements/doubleReview.achievement.js @@ -9,7 +9,7 @@ var doubleReview = { avatar : 'images/achievements/doubleReview.achievement.gif', name : 'We\'re ready, master', short : _.escape('"This way!"-"No, that way!"'), - description : 'double headed code review.
It doesn\'t matter who added you, apperantly, both of you are needed for a one man job 😇', + description : 'double headed code review.
It doesn\'t matter who added you, apparently, both of you are needed for a one man job 😇', relatedPullRequest: pullRequest.id }; diff --git a/achievements/helpingHand.achievement.js b/achievements/helpingHand.achievement.js new file mode 100644 index 00000000..1c97f3e2 --- /dev/null +++ b/achievements/helpingHand.achievement.js @@ -0,0 +1,58 @@ +var _ = require('lodash'); + +var helpingHand = { + name: 'Helping Hand', + check: function(pullRequest, shall) { + var committedReviewers = reviewersWhoCommittedToPullRequest(pullRequest); + + if (!_.isEmpty(committedReviewers)) { + + var isMultipleCommittedReviewers = committedReviewers.length > 1 ? 's ' : ' '; + + var reviewerAchievement = { + avatar: 'images/achievements/helpingHandHelloThere.achievement.jpg', + name: 'Helping Hand', + short: 'Hello there. Slow going?', + description: [ + 'You\'ve committed to ', pullRequest.creator.username, + '\'s Pull Request you are reviewing' + ].join(''), + relatedPullRequest: pullRequest._id + }; + + var committerAchievement = { + avatar: 'images/achievements/helpingHandManInBlack.achievement.jpg', + name: 'Helping Hand', + short: 'Look, I don\'t mean to be rude but this is not as easy as it looks', + description: [ + 'Your reviewer', isMultipleCommittedReviewers, + _.map(committedReviewers, 'username').join(', '), + ' committed to your Pull Request' + ].join(''), + relatedPullRequest: pullRequest._id + }; + + _.forEach(committedReviewers, function(reviewer) { + shall.grant(reviewer.username, reviewerAchievement); + }); + + shall.grant(pullRequest.creator.username, committerAchievement); + } + } +}; + + +function reviewersWhoCommittedToPullRequest(pullRequest) { + var committedReviewers = []; + + _.forEach(pullRequest.commits, function(commit) { + if (commit.author.username !== pullRequest.creator.username && + _.find(pullRequest.reviewers, {username: commit.author.username})) { + committedReviewers.push(commit.author); + } + }); + + return committedReviewers; +} + +module.exports = helpingHand; diff --git a/achievements/neverGoFullRetard.achievement.js b/achievements/neverGoFullRetard.achievement.js index 0d1ca25d..cdd8c746 100644 --- a/achievements/neverGoFullRetard.achievement.js +++ b/achievements/neverGoFullRetard.achievement.js @@ -14,7 +14,7 @@ var neverGoFullRetard = { relatedPullRequest: pullRequest.id }; shall.grant(pullRequest.creator.username, achieve); - _.forEach(pullRequest.reviewer, function(reviewer) { + _.forEach(pullRequest.reviewers, function(reviewer) { shall.grant(reviewer.username, achieve); }); } diff --git a/eventManager.js b/eventManager.js index e65a1865..a32811fd 100644 --- a/eventManager.js +++ b/eventManager.js @@ -292,7 +292,7 @@ var EventManager = function() { var allPRUsers = [pullRequests[id].creator]; if (_.isArray(pullRequests[id].reviewers)) { - allPRUsers.concat(pullRequests[id].reviewers); + allPRUsers = allPRUsers.concat(pullRequests[id].reviewers); } grantAchievements(allPRUsers, pullRequests[id], io); }); diff --git a/public/images/achievements/helpingHandHelloThere.achievement.jpg b/public/images/achievements/helpingHandHelloThere.achievement.jpg new file mode 100644 index 00000000..1b699fb2 Binary files /dev/null and b/public/images/achievements/helpingHandHelloThere.achievement.jpg differ diff --git a/public/images/achievements/helpingHandManInBlack.achievement.jpg b/public/images/achievements/helpingHandManInBlack.achievement.jpg new file mode 100644 index 00000000..09f40190 Binary files /dev/null and b/public/images/achievements/helpingHandManInBlack.achievement.jpg differ