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();
}