async handleIssueEvent()

in functions/src/issues.ts [123:155]


  async handleIssueEvent(
    event: types.github.WebhookEvent,
    action: IssueAction,
    issue: types.internal.Issue,
    repo: types.internal.Repository,
    sender: types.github.Sender
  ): Promise<types.Action[]> {
    switch (action) {
      case IssueAction.OPENED:
        return this.onNewIssue(repo, issue);
      case IssueAction.ASSIGNED:
        return this.onIssueAssigned(repo, issue);
      case IssueAction.CLOSED:
        return this.onIssueStatusChanged(repo, issue, IssueStatus.CLOSED);
      case IssueAction.REOPENED:
        return this.onIssueStatusChanged(repo, issue, IssueStatus.OPEN);
      case IssueAction.LABELED:
        return this.onIssueLabeled(repo, issue, event.label.name);
      case IssueAction.UNASSIGNED:
      /* falls through */
      case IssueAction.UNLABELED:
      /* falls through */
      case IssueAction.EDITED:
      /* falls through */
      default:
        log.debug("Unsupported issue action: " + action);
        log.debug("Issue: " + issue.title);
        break;
    }

    // Return empty action array if no action to be taken.
    return Promise.resolve([]);
  }