"use strict";
// P A C K A G E S
// U T I L S
import relativeDate from "../modules/relative-date";
let githubFeed;
let lastGithubFeedUpdate;
updateGithubFeed();
// Update the feed every 5 minutes
setInterval(async () => {
githubFeed = await updateGithubFeed();
}, 5 * 60 * 1000);
// P R O G R A M
function generateEvent(event) {
switch(event.type) {
case "CommitCommentEvent":
return `
${event.actor.display_login} commented on
commit in
`;
case "CreateEvent":
return `
${event.actor.display_login} created ${event.payload.ref_type}
${refToBranch(event.payload.ref)}
in
`;
case "DeleteEvent":
return `
${event.actor.display_login} deleted
${event.payload.ref_type} ${event.payload.ref}
in
`;
case "ForkEvent":
return `
${event.actor.display_login} forked
${event.repo.name} to
${event.payload.forkee.full_name}
`;
case "IssueCommentEvent":
if (event.payload.issue.pull_request) {
return `
${event.actor.display_login} commented on pull request
${escapeSpecialCharacters(event.payload.issue.title)} in
`;
} else {
return `
${event.actor.display_login} commented on issue
${escapeSpecialCharacters(event.payload.issue.title)} in
`;
}
case "IssuesEvent":
return `
${event.actor.display_login} ${event.payload.action} issue
${escapeSpecialCharacters(event.payload.issue.title)} in
`;
case "PullRequestEvent":
return `
${event.actor.display_login} pull request
${escapeSpecialCharacters(event.payload.pull_request.title)} in
`;
case "PullRequestReviewEvent":
return `
${event.actor.display_login} reviewed pull request
${escapeSpecialCharacters(event.payload.pull_request.title)} in
`;
case "PullRequestReviewCommentEvent":
return `
${event.actor.display_login} commented on pull request
${escapeSpecialCharacters(event.payload.pull_request.title)} in
`;
case "PushEvent":
return `
${event.actor.display_login} pushed to
${refToBranch(event.payload.ref)}
in
`;
case "ReleaseEvent":
return `
${event.actor.display_login} released
${event.payload.release.tag_name} in
`;
case "WatchEvent":
return `
${event.actor.display_login} starred the repo
`;
default:
break;
}
}
async function generateGitHubFeed(displayGitHubFeed) {
await githubFeed;
if (!githubFeed) return;
const renderedEvents = [];
for (const event of githubFeed) {
const repoName = `
${event.repo.name}
`;
renderedEvents.push(`
${generateEvent(event)} ${event.type !== "ForkEvent" ? repoName : ""} ${relativeDate(new Date(event.created_at))}