From 525976a34faf8a74d718ac3131ebf52518fa62ed Mon Sep 17 00:00:00 2001 From: Suleman Date: Mon, 25 Mar 2024 00:56:49 +0000 Subject: [PATCH 1/6] Added support for "complete" and "not planned" issue states --- .../features/github/GitHubReference.java | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/features/github/GitHubReference.java b/application/src/main/java/org/togetherjava/tjbot/features/github/GitHubReference.java index c2cdb7b2ad..30ada8cfb2 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/github/GitHubReference.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/github/GitHubReference.java @@ -45,6 +45,9 @@ public final class GitHubReference extends MessageReceiverAdapter { Pattern.compile("#(?<%s>\\d{1,5})".formatted(ID_GROUP)); private static final int ISSUE_OPEN = Color.green.getRGB(); private static final int ISSUE_CLOSE = Color.red.getRGB(); + private static final int ISSUE_COMPLETE = Color.magenta.getRGB(); + private static final int ISSUE_NOT_PLANNED = Color.gray.getRGB(); + /** * A constant representing the date and time formatter used for formatting the creation date of @@ -167,9 +170,7 @@ MessageEmbed generateReply(GHIssue issue) throws UncheckedIOException { String dateOfCreation = FORMATTER.format(createdAt); String footer = "%s • %s • %s".formatted(labels, assignees, dateOfCreation); - - return new EmbedBuilder() - .setColor(issue.getState() == GHIssueState.OPEN ? ISSUE_OPEN : ISSUE_CLOSE) + return new EmbedBuilder().setColor(getIssueState(issue)) .setTitle(title, titleUrl) .setDescription(description) .setAuthor(issue.getUser().getName(), null, issue.getUser().getAvatarUrl()) @@ -181,6 +182,19 @@ MessageEmbed generateReply(GHIssue issue) throws UncheckedIOException { } } + /** + * Returns the state of the issue + */ + private int getIssueState(GHIssue issue) { + if (issue.getStateReason() == GHIssueStateReason.COMPLETED) { + return ISSUE_COMPLETE; + } else if (issue.getStateReason() == GHIssueStateReason.NOT_PLANNED) { + return ISSUE_NOT_PLANNED; + } else { + return issue.getState() == GHIssueState.OPEN ? ISSUE_OPEN : ISSUE_CLOSE; + } + } + /** * Either properly gathers the name of a user or throws a UncheckedIOException. */ From 31a82a541ed654d71605c5d13a122b344ae1aa94 Mon Sep 17 00:00:00 2001 From: Suleman Date: Wed, 27 Mar 2024 23:13:35 +0000 Subject: [PATCH 2/6] Changed the purple embed color --- .../org/togetherjava/tjbot/features/github/GitHubReference.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/features/github/GitHubReference.java b/application/src/main/java/org/togetherjava/tjbot/features/github/GitHubReference.java index 30ada8cfb2..259cb01c68 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/github/GitHubReference.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/github/GitHubReference.java @@ -45,7 +45,7 @@ public final class GitHubReference extends MessageReceiverAdapter { Pattern.compile("#(?<%s>\\d{1,5})".formatted(ID_GROUP)); private static final int ISSUE_OPEN = Color.green.getRGB(); private static final int ISSUE_CLOSE = Color.red.getRGB(); - private static final int ISSUE_COMPLETE = Color.magenta.getRGB(); + private static final int ISSUE_COMPLETE = new Color(141, 106, 187).getRGB(); private static final int ISSUE_NOT_PLANNED = Color.gray.getRGB(); From bc50dd1845ade13a13c823236fceaaf31d1798c7 Mon Sep 17 00:00:00 2001 From: Suleman Date: Sun, 31 Mar 2024 15:05:42 +0100 Subject: [PATCH 3/6] Enabled support for PR embed colors and their different states --- .../features/github/GitHubReference.java | 44 ++++++++++++++----- 1 file changed, 32 insertions(+), 12 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/features/github/GitHubReference.java b/application/src/main/java/org/togetherjava/tjbot/features/github/GitHubReference.java index 259cb01c68..5d73c00c60 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/github/GitHubReference.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/github/GitHubReference.java @@ -43,10 +43,13 @@ public final class GitHubReference extends MessageReceiverAdapter { */ static final Pattern ISSUE_REFERENCE_PATTERN = Pattern.compile("#(?<%s>\\d{1,5})".formatted(ID_GROUP)); - private static final int ISSUE_OPEN = Color.green.getRGB(); - private static final int ISSUE_CLOSE = Color.red.getRGB(); - private static final int ISSUE_COMPLETE = new Color(141, 106, 187).getRGB(); - private static final int ISSUE_NOT_PLANNED = Color.gray.getRGB(); + + // Representing different GitHub states of an Issue/PR + private static final int OPEN_STATE = Color.green.getRGB(); + private static final int CLOSE_STATE = Color.red.getRGB(); + private static final int MERGED_STATE = new Color(141, 106, 187).getRGB(); + private static final int NOT_PLANNED_STATE = new Color(72, 72, 72).getRGB(); + private static final int DRAFT_STATE = Color.gray.getRGB(); /** @@ -183,15 +186,25 @@ MessageEmbed generateReply(GHIssue issue) throws UncheckedIOException { } /** - * Returns the state of the issue + * Returns the state of the issue/PR */ - private int getIssueState(GHIssue issue) { - if (issue.getStateReason() == GHIssueStateReason.COMPLETED) { - return ISSUE_COMPLETE; - } else if (issue.getStateReason() == GHIssueStateReason.NOT_PLANNED) { - return ISSUE_NOT_PLANNED; + private int getIssueState(GHIssue issue) throws IOException { + if (issue instanceof GHPullRequest pR) { + if (pR.isMerged()) { + return MERGED_STATE; + } else if (pR.isDraft()) { + return DRAFT_STATE; + } else { + return issue.getState() == GHIssueState.OPEN ? OPEN_STATE : CLOSE_STATE; + } } else { - return issue.getState() == GHIssueState.OPEN ? ISSUE_OPEN : ISSUE_CLOSE; + if (issue.getStateReason() == GHIssueStateReason.COMPLETED) { + return MERGED_STATE; + } else if (issue.getStateReason() == GHIssueStateReason.NOT_PLANNED) { + return NOT_PLANNED_STATE; + } else { + return issue.getState() == GHIssueState.OPEN ? OPEN_STATE : CLOSE_STATE; + } } } @@ -213,6 +226,9 @@ Optional findIssue(int id, String targetIssueTitle) { return repositories.stream().map(repository -> { try { GHIssue issue = repository.getIssue(id); + if (issue.isPullRequest()) { + issue = repository.getPullRequest(id); + } if (issue.getTitle().equals(targetIssueTitle)) { return Optional.of(issue); } @@ -230,7 +246,11 @@ Optional findIssue(int id, long defaultRepoId) { .filter(repository -> repository.getId() == defaultRepoId) .map(repository -> { try { - return Optional.of(repository.getIssue(id)); + GHIssue issue = repository.getIssue(id); + if (issue.isPullRequest()) { + issue = repository.getPullRequest(id); + } + return Optional.of(issue); } catch (FileNotFoundException ignored) { return Optional.empty(); } catch (IOException ex) { From 7871f6b55854b93e3d581ca250da50e73ba7a71b Mon Sep 17 00:00:00 2001 From: Suleman Date: Sun, 31 Mar 2024 15:19:24 +0100 Subject: [PATCH 4/6] Reduced cognitive complexity of getIssueState method --- .../togetherjava/tjbot/features/github/GitHubReference.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/features/github/GitHubReference.java b/application/src/main/java/org/togetherjava/tjbot/features/github/GitHubReference.java index 5d73c00c60..9c6b719220 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/github/GitHubReference.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/github/GitHubReference.java @@ -194,18 +194,15 @@ private int getIssueState(GHIssue issue) throws IOException { return MERGED_STATE; } else if (pR.isDraft()) { return DRAFT_STATE; - } else { - return issue.getState() == GHIssueState.OPEN ? OPEN_STATE : CLOSE_STATE; } } else { if (issue.getStateReason() == GHIssueStateReason.COMPLETED) { return MERGED_STATE; } else if (issue.getStateReason() == GHIssueStateReason.NOT_PLANNED) { return NOT_PLANNED_STATE; - } else { - return issue.getState() == GHIssueState.OPEN ? OPEN_STATE : CLOSE_STATE; } } + return issue.getState() == GHIssueState.OPEN ? OPEN_STATE : CLOSE_STATE; } /** From 934aacb0e21c10c1fdd8004805b3b90f6e358e7f Mon Sep 17 00:00:00 2001 From: Suleman Date: Sun, 31 Mar 2024 15:58:07 +0100 Subject: [PATCH 5/6] Added @SquidXTV changes --- .../features/github/GitHubReference.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/features/github/GitHubReference.java b/application/src/main/java/org/togetherjava/tjbot/features/github/GitHubReference.java index 9c6b719220..d31df6a0ea 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/github/GitHubReference.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/github/GitHubReference.java @@ -45,11 +45,11 @@ public final class GitHubReference extends MessageReceiverAdapter { Pattern.compile("#(?<%s>\\d{1,5})".formatted(ID_GROUP)); // Representing different GitHub states of an Issue/PR - private static final int OPEN_STATE = Color.green.getRGB(); - private static final int CLOSE_STATE = Color.red.getRGB(); - private static final int MERGED_STATE = new Color(141, 106, 187).getRGB(); - private static final int NOT_PLANNED_STATE = new Color(72, 72, 72).getRGB(); - private static final int DRAFT_STATE = Color.gray.getRGB(); + private static final Color OPEN_STATE = Color.green; + private static final Color CLOSE_STATE = Color.red; + private static final Color MERGED_STATE = new Color(141, 106, 187); + private static final Color NOT_PLANNED_STATE = new Color(72, 72, 72); + private static final Color DRAFT_STATE = Color.gray; /** @@ -173,7 +173,7 @@ MessageEmbed generateReply(GHIssue issue) throws UncheckedIOException { String dateOfCreation = FORMATTER.format(createdAt); String footer = "%s • %s • %s".formatted(labels, assignees, dateOfCreation); - return new EmbedBuilder().setColor(getIssueState(issue)) + return new EmbedBuilder().setColor(getIssueStateColor(issue)) .setTitle(title, titleUrl) .setDescription(description) .setAuthor(issue.getUser().getName(), null, issue.getUser().getAvatarUrl()) @@ -188,11 +188,11 @@ MessageEmbed generateReply(GHIssue issue) throws UncheckedIOException { /** * Returns the state of the issue/PR */ - private int getIssueState(GHIssue issue) throws IOException { - if (issue instanceof GHPullRequest pR) { - if (pR.isMerged()) { + private Color getIssueStateColor(GHIssue issue) throws IOException { + if (issue instanceof GHPullRequest pr) { + if (pr.isMerged()) { return MERGED_STATE; - } else if (pR.isDraft()) { + } else if (pr.isDraft()) { return DRAFT_STATE; } } else { From 843b593b7c72f75ad27055f2759af079ce4ee86a Mon Sep 17 00:00:00 2001 From: Suleman Date: Thu, 4 Apr 2024 14:17:18 +0100 Subject: [PATCH 6/6] Added @ankitsmt211 changes --- .../org/togetherjava/tjbot/features/github/GitHubReference.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/src/main/java/org/togetherjava/tjbot/features/github/GitHubReference.java b/application/src/main/java/org/togetherjava/tjbot/features/github/GitHubReference.java index d31df6a0ea..5f9ae9a4bb 100644 --- a/application/src/main/java/org/togetherjava/tjbot/features/github/GitHubReference.java +++ b/application/src/main/java/org/togetherjava/tjbot/features/github/GitHubReference.java @@ -186,7 +186,7 @@ MessageEmbed generateReply(GHIssue issue) throws UncheckedIOException { } /** - * Returns the state of the issue/PR + * Returns the color based on the state of the issue/PR */ private Color getIssueStateColor(GHIssue issue) throws IOException { if (issue instanceof GHPullRequest pr) {