Skip to content

Commit

Permalink
fix(issues): Fix issue assignees
Browse files Browse the repository at this point in the history
Properly parse issue assignee as a list of author (id, alias),
instead of plain string (did).

Signed-off-by: jchrist <jchrist@cytech.gr>
  • Loading branch information
JChrist committed Apr 8, 2024
1 parent 7470a54 commit 0cb19ad
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import net.miginfocom.layout.LC;
import net.miginfocom.swing.MigLayout;
import network.radicle.jetbrains.radiclejetbrainsplugin.RadicleBundle;
import network.radicle.jetbrains.radiclejetbrainsplugin.models.RadAuthor;
import network.radicle.jetbrains.radiclejetbrainsplugin.models.RadIssue;
import network.radicle.jetbrains.radiclejetbrainsplugin.services.RadicleProjectApi;
import network.radicle.jetbrains.radiclejetbrainsplugin.toolwindow.LabeledListPanelHandle;
Expand All @@ -34,6 +35,7 @@
import java.util.Arrays;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;

public class IssuePanel {
protected RadIssue issue;
Expand Down Expand Up @@ -105,7 +107,8 @@ private JComponent getIssueInfo() {
}

if (!issue.assignees.isEmpty()) {
var issueAssignees = getLabelPanel(RadicleBundle.message("issueAssignees", String.join(",", issue.assignees)));
var issueAssignees = getLabelPanel(RadicleBundle.message("issueAssignees",
issue.assignees.stream().map(RadAuthor::generateLabelText).collect(Collectors.joining(","))));
detailsSection.add(issueAssignees, new CC().gapBottom(String.valueOf(UI.scale(4))));
}

Expand Down Expand Up @@ -321,8 +324,12 @@ public String getPopupTitle() {
@Override
public String getSelectedValues() {
var formattedDid = new ArrayList<String>();
for (var delegate : issue.assignees) {
formattedDid.add(Utils.formatDid(delegate));
for (var as : issue.assignees) {
if (!Strings.isNullOrEmpty(as.alias)) {
formattedDid.add(as.alias);
} else {
formattedDid.add(Utils.formatDid(as.id));
}
}
return String.join(",", formattedDid);
}
Expand Down Expand Up @@ -376,12 +383,12 @@ public CompletableFuture<List<SelectionListCellRenderer.SelectableWrapper<Assign
var selectableWrapper = new SelectionListCellRenderer.SelectableWrapper<>(assignee, isSelected);
assignees.add(selectableWrapper);
}
for (var delegate : issue.assignees) {
var exist = assignees.stream().anyMatch(el -> el.value.name.equals(delegate));
for (var assign : issue.assignees) {
var exist = assignees.stream().anyMatch(el -> el.value.name.equals(assign.alias) || el.value.name.equals(assign.id));
if (exist) {
continue;
}
var assignee = new AssigneesSelect.Assignee(delegate);
var assignee = new AssigneesSelect.Assignee(assign.generateLabelText());
var selectableWrapper = new SelectionListCellRenderer.SelectableWrapper<>(assignee, true);
assignees.add(selectableWrapper);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,16 +78,16 @@ public CompletableFuture<List<String>> getStateLabels() {

public CompletableFuture<List<String>> getAssignees() {
return CompletableFuture.supplyAsync(() -> {
List<String> assigness = new ArrayList<>();
List<String> assignees = new ArrayList<>();
var filteredList = filterListByProject();
for (var issue : filteredList) {
for (var assignee : issue.assignees) {
if (!assigness.contains(assignee)) {
assigness.add(assignee);
if (!assignees.contains(assignee.id) && !assignees.contains(assignee.alias)) {
assignees.add(assignee.generateLabelText());
}
}
}
return assigness;
return assignees;
});
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ public class RadIssue {
public RadAuthor author;
public String title;
public State state;
public List<String> assignees;
public List<RadAuthor> assignees;
public List<String> labels;
public List<RadDiscussion> discussion;
public GitRepository repo;
Expand All @@ -26,7 +26,7 @@ public RadIssue() {
}

public RadIssue(String id, RadAuthor author, String title, State state,
List<String> assignees, List<String> labels, List<RadDiscussion> discussion) {
List<RadAuthor> assignees, List<String> labels, List<RadDiscussion> discussion) {
this.id = id;
this.author = author;
this.title = title;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -265,9 +265,9 @@ public void testTag() {
public static List<RadIssue> getTestIssues() {
var discussion = createDiscussion("123", AUTHOR, "Figure it out, i dont care");
var discussion1 = createDiscussion("321", AUTHOR1, "This is a feature not a bug");
var radIssue = new RadIssue("c5df12", new RadAuthor(AUTHOR), "Title1", RadIssue.State.OPEN, List.of(AUTHOR, AUTHOR1),
var radIssue = new RadIssue("c5df12", new RadAuthor(AUTHOR), "Title1", RadIssue.State.OPEN, List.of(new RadAuthor(AUTHOR), new RadAuthor(AUTHOR1)),
List.of("tag1", "tag2"), List.of(discussion));
var radIssue1 = new RadIssue("123ca", new RadAuthor(AUTHOR1), "Title", RadIssue.State.CLOSED, List.of(AUTHOR1, AUTHOR2),
var radIssue1 = new RadIssue("123ca", new RadAuthor(AUTHOR1), "Title", RadIssue.State.CLOSED, List.of(new RadAuthor(AUTHOR1), new RadAuthor(AUTHOR2)),
List.of("tag3", "tag4"), List.of(discussion1));
issues = List.of(radIssue, radIssue1);
return issues;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -474,7 +474,11 @@ public void addRemoveAssignersTest() throws InterruptedException {
var assigneeValuesLabel = (JLabel) myPanel.getComponents()[0];
var formattedDid = new ArrayList<String>();
for (var delegate : issue.assignees) {
formattedDid.add(Utils.formatDid(delegate));
if (!Strings.isNullOrEmpty(delegate.alias)) {
formattedDid.add(delegate.alias);
} else {
formattedDid.add(Utils.formatDid(delegate.id));
}
}
assertThat(assigneeValuesLabel.getText()).contains(String.join(",", formattedDid));

Expand Down Expand Up @@ -835,7 +839,7 @@ private RadIssue createIssue() {
discussions.add(firstDiscussion);
discussions.add(secondDiscussion);
var myIssue = new RadIssue("321", new RadAuthor(AUTHOR), "My Issue",
RadIssue.State.OPEN, List.of("did:key:test", "did:key:assignee2"), List.of("tag1", "tag2"), discussions);
RadIssue.State.OPEN, List.of(new RadAuthor("did:key:test"), new RadAuthor("did:key:assignee2")), List.of("tag1", "tag2"), discussions);
myIssue.project = getProject();
myIssue.projectId = UUID.randomUUID().toString();
myIssue.repo = firstRepo;
Expand Down

0 comments on commit 0cb19ad

Please sign in to comment.