Create contributions instead of proposals #27

Merged
raucao merged 5 commits from feature/26-contributions into master 2019-04-08 13:01:08 +00:00
Showing only changes of commit dcbce66796 - Show all commits

View File

@ -1,6 +1,10 @@
const util = require('util'); const util = require('util');
const fetch = require('node-fetch'); const fetch = require('node-fetch');
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
module.exports = async function(robot, kredits) { module.exports = async function(robot, kredits) {
function messageRoom(message) { function messageRoom(message) {
@ -76,7 +80,7 @@ module.exports = async function(robot, kredits) {
return amount; return amount;
} }
function handleGitHubIssueClosed(data) { async function handleGitHubIssueClosed(data) {
let recipients; let recipients;
let issue = data.issue; let issue = data.issue;
let assignees = issue.assignees.map(a => a.login); let assignees = issue.assignees.map(a => a.login);
@ -100,15 +104,15 @@ module.exports = async function(robot, kredits) {
recipients = [issue.user.login]; recipients = [issue.user.login];
} }
let contributionPromises = []; for (const recipient of recipients) {
recipients.forEach(recipient => { try {
contributionPromises.push( await createContribution(recipient, amount, description, web_url, issue);
createContribution(recipient, amount, description, web_url, issue) await sleep(60000);
.catch(err => robot.logger.error(err)) }
); catch (err) { robot.logger.error(err); }
}); }
return Promise.all(contributionPromises); return Promise.resolve();
} }
function handleGitHubPullRequestClosed(data) { function handleGitHubPullRequestClosed(data) {
@ -131,7 +135,7 @@ module.exports = async function(robot, kredits) {
} }
return response.json(); return response.json();
}) })
.then(issue => { .then(async (issue) => {
let amount = amountFromIssueLabels(issue); let amount = amountFromIssueLabels(issue);
let repoName = pull_request.base.repo.full_name; let repoName = pull_request.base.repo.full_name;
let description = `${repoName}: ${pull_request.title}`; let description = `${repoName}: ${pull_request.title}`;
@ -144,16 +148,15 @@ module.exports = async function(robot, kredits) {
return Promise.resolve(); return Promise.resolve();
} }
let contributionPromises = []; for (const recipient of recipients) {
recipients.forEach(recipient => { try {
robot.logger.debug(`[hubot-kredits] Creating contribution token for ${recipient}...`); await createContribution(recipient, amount, description, web_url, pull_request);
contributionPromises.push( await sleep(60000);
createContribution(recipient, amount, description, web_url, pull_request) }
.catch(err => robot.logger.error(err)) catch (err) { robot.logger.error(err); }
); }
});
return Promise.all(contributionPromises); return Promise.resolve();
}); });
} }
@ -167,10 +170,12 @@ module.exports = async function(robot, kredits) {
robot.logger.info(`Received GitHub hook. Event: ${evt}, action: ${data.action}`); robot.logger.info(`Received GitHub hook. Event: ${evt}, action: ${data.action}`);
if (evt === 'pull_request' && data.action === 'closed') { if (evt === 'pull_request' && data.action === 'closed') {
handleGitHubPullRequestClosed(data).then(() => res.send(200)); handleGitHubPullRequestClosed(data);
res.send(200);
} }
else if (evt === 'issues' && data.action === 'closed') { else if (evt === 'issues' && data.action === 'closed') {
handleGitHubIssueClosed(data).then(() => res.send(200)); handleGitHubIssueClosed(data);
res.send(200);
} else { } else {
res.send(200); res.send(200);
} }