private Maybe buildIssueListItem()

in dashboard/server/src/main/java/build/bazel/dashboard/github/notification/NotificationTask.java [241:302]


  private Maybe<String> buildIssueListItem(GithubIssueList.Item issue) {
    GithubIssue.Data data;
    try {
      data = GithubIssue.parseData(objectMapper, issue.getData());
    } catch (JsonProcessingException e) {
      return Maybe.empty();
    }

    return findParticipants(issue, data)
        .map(
            participants -> {
              StringBuilder body = new StringBuilder();
              body.append("<tr style=\"vertical-align: baseline\">");

              body.append("<td>");
              String repo = "";
              if (!(issue.getOwner().equals("bazelbuild") && issue.getRepo().equals("bazel"))) {
                repo = issue.getRepo();
              }
              appendLink(
                  body,
                  String.format(
                      "https://github.com/%s/%s/issues/%s",
                      issue.getOwner(), issue.getRepo(), issue.getIssueNumber()),
                   repo + "#" + issue.getIssueNumber());
              body.append("</td>");

              body.append("<td style=\"white-space: nowrap;\">");
              String title = data.getTitle();
              if (title.length() > 80) {
                title = title.substring(0, 77) + "...";
              }
              boolean isPullRequest = issue.getData().get("pull_request") != null;
              body.append(isPullRequest ? "PR: " : "Issue: ");
              body.append(title);
              body.append("</td>");

              body.append("<td>");
              body.append("@");
              body.append(data.getUser().getLogin());
              body.append("</td>");

              body.append("<td>");
              for (String participant : participants) {
                body.append("@");
                body.append(participant);
                body.append(" ");
              }
              body.append("</td>");

              body.append("<td>");
              for (Label label : data.getLabels()) {
                appendLabel(body, label);
              }
              body.append("</td>");

              body.append("</tr>");

              return body.toString();
            })
        .toMaybe();
  }