export function setReviewerDetails()

in lib/utils/milestones.js [122:160]


export function setReviewerDetails(issue) {
  issue.reviewers = [];
  const reviewersListSeen = [];

  if (issue.state === 'CLOSED') {
    issue.timelineItems.edges.forEach((timelineItem) => {
      if (!timelineItem.event.source.reviews) {
        // This is not a pull request item.
        return;
      }
      const { bodyText } = timelineItem.event.source;
      const issueTestRx = new RegExp(`Fix(?:es)? #${issue.number}`, 'i');

      // Only add the review if the PR contains a `Fixes #num` or `Fix #num` line that
      // matches the original issue.
      if (issueTestRx.test(bodyText)) {
        timelineItem.event.source.reviews.edges.forEach(
          ({ review: { author } }) => {
            if (!reviewersListSeen.includes(author.login)) {
              reviewersListSeen.push(author.login);
              issue.reviewers.push({
                author,
                prLink: timelineItem.event.source.permalink,
              });
            }
          },
        );
      }
    });
  }

  // Quick and dirty way to provide a sortable key for reviewers.
  issue.reviewersNames = '';
  if (issue.reviewers.length) {
    issue.reviewersNames = issue.reviewers
      .map((review) => review.author.login)
      .join('-');
  }
}