Skip to content

Commit

Permalink
fix: try resolving aliases off EDT
Browse files Browse the repository at this point in the history
  • Loading branch information
JChrist committed Jan 16, 2025
1 parent 0cbd78e commit bdf9f2d
Show file tree
Hide file tree
Showing 24 changed files with 94 additions and 92 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import network.radicle.jetbrains.radiclejetbrainsplugin.config.RadicleSettingsView;
import network.radicle.jetbrains.radiclejetbrainsplugin.dialog.IdentityDialog;
import network.radicle.jetbrains.radiclejetbrainsplugin.models.RadDetails;
import network.radicle.jetbrains.radiclejetbrainsplugin.services.RadicleCliService;
import network.radicle.jetbrains.radiclejetbrainsplugin.services.RadicleProjectService;
import network.radicle.jetbrains.radiclejetbrainsplugin.services.auth.AuthService;
import org.jetbrains.annotations.NotNull;
Expand All @@ -36,10 +37,8 @@ public abstract class RadAction {

protected Project project;
protected GitRepository repo;

public RadAction() {
this(null, null);
}
protected RadicleCliService cli;
protected RadicleProjectService rad;

public RadAction(Project project) {
this(project, null);
Expand All @@ -52,6 +51,8 @@ public RadAction(GitRepository repo) {
public RadAction(Project project, GitRepository repo) {
this.project = project;
this.repo = repo;
this.cli = project.getService(RadicleCliService.class);
this.rad = project.getService(RadicleProjectService.class);
}

public abstract ProcessOutput run();
Expand Down Expand Up @@ -96,7 +97,6 @@ private ProcessOutput unlockIdentity(String radHome, String radPath, IdentityDia
return new ProcessOutput(0);
}
var pr = project != null ? project : repo.getProject();
var rad = pr.getService(RadicleProjectService.class);
var output = rad.self(radHome, radPath);
var lines = output.getStdoutLines(true);
var radDetails = new RadDetails(lines);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import com.intellij.execution.process.ProcessOutput;
import com.intellij.openapi.project.Project;
import network.radicle.jetbrains.radiclejetbrainsplugin.RadicleBundle;
import network.radicle.jetbrains.radiclejetbrainsplugin.services.RadicleProjectService;

public class RadAuth extends RadAction {
private final String alias;
Expand Down Expand Up @@ -49,7 +48,6 @@ public ProcessOutput run() {
}

public ProcessOutput createNewIdentity() {
var rad = project.getService(RadicleProjectService.class);
var output = rad.auth(passphrase, alias, radHome, radPath);
return validateOutput(output);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import com.intellij.execution.process.ProcessOutput;
import git4idea.repo.GitRepository;
import network.radicle.jetbrains.radiclejetbrainsplugin.services.RadicleProjectService;

public class RadCheckout extends RadAction {
private String patchId;

Check warning on line 7 in src/main/java/network/radicle/jetbrains/radiclejetbrainsplugin/actions/rad/RadCheckout.java

View workflow job for this annotation

GitHub Actions / Qodana Community for JVM

Field may be 'final'

Field `patchId` may be 'final'
Expand All @@ -14,7 +13,6 @@ public RadCheckout(GitRepository repo, String patchId) {

@Override
public ProcessOutput run() {
var rad = repo.getProject().getService(RadicleProjectService.class);
return rad.checkout(repo, patchId);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@

import com.intellij.execution.process.ProcessOutput;
import com.intellij.openapi.project.Project;
import network.radicle.jetbrains.radiclejetbrainsplugin.services.RadicleProjectService;


public class RadClone extends RadAction {
private String radUrn;

Check warning on line 7 in src/main/java/network/radicle/jetbrains/radiclejetbrainsplugin/actions/rad/RadClone.java

View workflow job for this annotation

GitHub Actions / Qodana Community for JVM

Field may be 'final'

Field `radUrn` may be 'final'
Expand All @@ -26,7 +24,6 @@ public String getActionName() {

@Override
public ProcessOutput run() {
var rad = project.getService(RadicleProjectService.class);
return rad.clone(radUrn, directory, this.radPath, this.radHome);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import com.intellij.execution.process.ProcessOutput;
import git4idea.repo.GitRepository;
import network.radicle.jetbrains.radiclejetbrainsplugin.services.RadicleProjectService;

public class RadCobList extends RadAction {
private final String projectId;
Expand All @@ -16,7 +15,6 @@ public RadCobList(GitRepository repo, String projectId, Type type) {

@Override
public ProcessOutput run() {
var rad = project.getService(RadicleProjectService.class);
return rad.cobList(repo, projectId, type);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
import com.intellij.execution.process.ProcessOutput;
import com.intellij.openapi.diagnostic.Logger;
import git4idea.repo.GitRepository;
import network.radicle.jetbrains.radiclejetbrainsplugin.models.RadDiscussion;
import network.radicle.jetbrains.radiclejetbrainsplugin.models.RadIssue;
import network.radicle.jetbrains.radiclejetbrainsplugin.models.RadPatch;
import network.radicle.jetbrains.radiclejetbrainsplugin.services.RadicleCliService;
import network.radicle.jetbrains.radiclejetbrainsplugin.services.RadicleProjectService;

public class RadCobShow extends RadAction {
private static final Logger logger = Logger.getInstance(RadCobShow.class);
Expand All @@ -25,7 +25,6 @@ public RadCobShow(GitRepository repo, String projectId, String objectId, RadCobL

@Override
public ProcessOutput run() {
var rad = project.getService(RadicleProjectService.class);
return rad.cobShow(repo, projectId, objectId, type);
}

Expand All @@ -39,8 +38,11 @@ public RadIssue getIssue() {
RadIssue issue = null;
try {
issue = RadicleCliService.MAPPER.readValue(json, new TypeReference<>() { });
var firstDiscussion = issue.discussion.getFirst();
issue.author = firstDiscussion.author;
tryResolveIssueAliases(issue);
if (issue.discussion != null && !issue.discussion.isEmpty()) {
var firstDiscussion = issue.discussion.getFirst();
issue.author = firstDiscussion.author;
}
issue.project = repo.getProject();
issue.repo = repo;
issue.projectId = projectId;
Expand All @@ -61,13 +63,82 @@ public RadPatch getPatch() {
RadPatch patch = null;
try {
patch = RadicleCliService.MAPPER.readValue(json, new TypeReference<>() { });
tryResolvePatchAliases(patch);
return patch;
} catch (Exception e) {
logger.warn("Unable to deserialize patch from json: " + json, e);
}
return patch;
}

public void tryResolveIssueAliases(RadIssue issue) {
if (issue.discussion != null && !issue.discussion.isEmpty()) {
for (var disc : issue.discussion) {
tryResolveDiscussionAliases(disc);
}
}
if (issue.assignees != null && !issue.assignees.isEmpty()) {
for (var as : issue.assignees) {
as.tryResolveAlias(cli);
}
}
}

public void tryResolvePatchAliases(RadPatch patch) {
if (patch.author != null) {
patch.author.tryResolveAlias(cli);
}
if (patch.revisions != null) {
for (var rev : patch.revisions.values()) {
if (rev.author() != null) {
rev.author().tryResolveAlias(cli);
}
if (rev.edits() != null) {
for (var edit : rev.edits()) {
tryResolveEditAliases(edit);
}
}
if (rev.discussion() != null && rev.discussion().comments != null) {
for (var disc : rev.discussion().comments.values()) {
tryResolveDiscussionAliases(disc);
}
}
}
}
}

public void tryResolveEditAliases(RadPatch.Edit edit) {
if (edit == null) {
return;
}
if (edit.author() != null) {
edit.author().tryResolveAlias(cli);
}
}

public void tryResolveDiscussionAliases(RadDiscussion disc) {
if (disc == null) {
return;
}
if (disc.author != null) {
disc.author.tryResolveAlias(cli);
}
if (disc.edits != null) {
for (var ed : disc.edits) {
if (ed.author() != null) {
ed.author().tryResolveAlias(cli);
}
}
}
if (disc.reactions != null) {
for (var react : disc.reactions) {
for (var auth : react.authors()) {
auth.tryResolveAlias(cli);
}
}
}
}

@Override
public String getActionName() {
return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import com.intellij.execution.process.ProcessOutput;
import git4idea.repo.GitRepository;
import network.radicle.jetbrains.radiclejetbrainsplugin.services.RadicleProjectService;

public class RadComment extends RadAction {
private String replyTo;
Expand All @@ -27,7 +26,6 @@ public RadComment(GitRepository repo, String id, String comment, Type type) {

@Override
public ProcessOutput run() {
var rad = repo.getProject().getService(RadicleProjectService.class);
return rad.comment(repo, id, comment, replyTo, type);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import com.intellij.execution.process.ProcessOutput;
import git4idea.repo.GitRepository;
import network.radicle.jetbrains.radiclejetbrainsplugin.services.RadicleProjectService;

public class RadInit extends RadAction {
private final String name;
Expand All @@ -25,7 +24,6 @@ public String getActionName() {

@Override
public ProcessOutput run() {
var rad = repo.getProject().getService(RadicleProjectService.class);
return rad.init(repo, name, description, branch, visibility);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import com.intellij.execution.process.ProcessOutput;
import git4idea.repo.GitRepository;
import network.radicle.jetbrains.radiclejetbrainsplugin.services.RadicleProjectService;

import java.util.List;

Expand All @@ -21,7 +20,6 @@ public RadIssueAssignee(GitRepository repo, String issueId, List<String> addedAs

@Override
public ProcessOutput run() {
var rad = project.getService(RadicleProjectService.class);
return rad.addRemoveIssueAssignee(repo, issueId, addedAssignees, deleteAssignees);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import com.intellij.execution.process.ProcessOutput;
import git4idea.repo.GitRepository;
import network.radicle.jetbrains.radiclejetbrainsplugin.services.RadicleProjectService;

import java.util.List;

Expand All @@ -22,7 +21,6 @@ public RadIssueCreate(GitRepository repo, String title, String description, List

@Override
public ProcessOutput run() {
var rad = project.getService(RadicleProjectService.class);
return rad.createIssue(repo, title, description, assignees, labels);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import com.intellij.execution.process.ProcessOutput;
import git4idea.repo.GitRepository;
import network.radicle.jetbrains.radiclejetbrainsplugin.services.RadicleProjectService;

import java.util.List;

Expand All @@ -20,7 +19,6 @@ public RadIssueLabel(GitRepository repo, String issueId, List<String> addedLabel

@Override
public ProcessOutput run() {
var rad = project.getService(RadicleProjectService.class);
return rad.addRemoveIssueLabels(repo, issueId, addedLabels, deleteLabels);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import com.intellij.execution.process.ProcessOutput;
import git4idea.repo.GitRepository;
import network.radicle.jetbrains.radiclejetbrainsplugin.services.RadicleProjectService;

public class RadIssueState extends RadAction {
private final String issueId;
Expand All @@ -16,7 +15,6 @@ public RadIssueState(GitRepository repo, String issueId, String state) {

@Override
public ProcessOutput run() {
var rad = project.getService(RadicleProjectService.class);
return rad.changeIssueState(repo, issueId, state);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import com.intellij.execution.process.ProcessOutput;
import com.intellij.openapi.project.Project;
import network.radicle.jetbrains.radiclejetbrainsplugin.services.RadicleProjectService;

public class RadNodeStatus extends RadAction {
private final String radPath;
Expand All @@ -14,7 +13,6 @@ public RadNodeStatus(Project project, String radPath) {

@Override
public ProcessOutput run() {
var rad = project.getService(RadicleProjectService.class);
return rad.checkNodeStatus(radPath);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import com.intellij.execution.process.ProcessOutput;
import git4idea.repo.GitRepository;
import network.radicle.jetbrains.radiclejetbrainsplugin.services.RadicleProjectService;

public class RadPatchCreate extends RadAction {
private final String title;
Expand All @@ -18,7 +17,6 @@ public RadPatchCreate(GitRepository repo, String title, String description, Stri

@Override
public ProcessOutput run() {
var rad = project.getService(RadicleProjectService.class);
return rad.createPatch(repo, title, description, branch);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import com.intellij.execution.process.ProcessOutput;
import git4idea.repo.GitRepository;
import network.radicle.jetbrains.radiclejetbrainsplugin.services.RadicleProjectService;

import java.util.List;

Expand All @@ -20,7 +19,6 @@ public RadPatchLabel(GitRepository repo, String patchId, List<String> addedLabel

@Override
public ProcessOutput run() {
var rad = project.getService(RadicleProjectService.class);
return rad.addRemovePatchLabels(repo, patchId, addedLabels, deleteLabels);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import com.intellij.execution.process.ProcessOutput;
import git4idea.repo.GitRepository;
import network.radicle.jetbrains.radiclejetbrainsplugin.services.RadicleProjectService;

public class RadPatchReview extends RadAction {
private final String message;
Expand All @@ -18,7 +17,6 @@ public RadPatchReview(GitRepository repo, String message, String verdict, String

@Override
public ProcessOutput run() {
var rad = project.getService(RadicleProjectService.class);
return rad.addReview(repo, verdict, message, patchId);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import com.intellij.execution.process.ProcessOutput;
import com.intellij.openapi.project.Project;
import network.radicle.jetbrains.radiclejetbrainsplugin.services.RadicleProjectService;

public class RadPath extends RadAction {
private String radPath;

Check warning on line 7 in src/main/java/network/radicle/jetbrains/radiclejetbrainsplugin/actions/rad/RadPath.java

View workflow job for this annotation

GitHub Actions / Qodana Community for JVM

Field may be 'final'

Field `radPath` may be 'final'
Expand All @@ -13,7 +12,6 @@ public RadPath(Project project, String radPath) {

@Override
public ProcessOutput run() {
var rad = project.getService(RadicleProjectService.class);
return rad.homePath(radPath);
}

Expand Down
Loading

0 comments on commit bdf9f2d

Please sign in to comment.