Skip to content

Commit f752931

Browse files
committed
refactor(issues): Disable functionality missing from CLI
- Disable editing issue comments - Disable removing issue reactions - Move changing issue title/description to CLI (not working yet!) Signed-off-by: jchrist <jchrist@cytech.gr>
1 parent f4b0645 commit f752931

File tree

5 files changed

+49
-230
lines changed

5 files changed

+49
-230
lines changed

src/main/java/network/radicle/jetbrains/radiclejetbrainsplugin/issues/overview/IssueComponent.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -132,20 +132,22 @@ public JComponent createCommentSection(List<RadDiscussion> discussionList) {
132132
verticalPanel.add(replyPanel);
133133
panel.addToBottom(verticalPanel);
134134
var panelHandle = new EditablePanelHandler.PanelBuilder(radIssue.project, panel,
135-
RadicleBundle.message("save"), new SingleValueModel<>(com.body), (field) -> {
135+
RadicleBundle.message("save"), new SingleValueModel<>(com.body), f -> true).build();
136+
// TODO: disabling editing issue comment
137+
/*(field) -> {
136138
var edited = api.editIssueComment(radIssue, field.getText(), com.id, field.getEmbedList());
137139
final boolean success = edited != null;
138140
if (success) {
139141
issueModel.setValue(radIssue);
140142
}
141143
return success;
142-
}).build();
143-
var contentPanel = panelHandle.panel;
144+
}*/
144145
var actionsPanel = CollaborationToolsUIUtilKt.HorizontalListPanel(CodeReviewCommentUIUtil.Actions.HORIZONTAL_GAP);
145-
actionsPanel.add(CodeReviewCommentUIUtil.INSTANCE.createEditButton(e -> {
146+
/* actionsPanel.add(CodeReviewCommentUIUtil.INSTANCE.createEditButton(e -> {
146147
panelHandle.showAndFocusEditor();
147148
return null;
148-
}));
149+
})); */
150+
var contentPanel = panelHandle.panel;
149151
mainPanel.add(createTimeLineItem(contentPanel, actionsPanel, com.author.generateLabelText(), com.timestamp));
150152
}
151153
return mainPanel;
@@ -193,10 +195,7 @@ private JComponent getHeader() {
193195
RadicleBundle.message("issue.change.title"),
194196
new SingleValueModel<>(radIssue.title), (field) -> {
195197
// TODO: this will not work
196-
// var edited = cli.changeIssueTitleDescription(radIssue, field.getText(), radIssue.getDescription());
197-
var issue = new RadIssue(radIssue);
198-
issue.title = field.getText();
199-
var edited = api.changeIssueTitle(issue);
198+
var edited = cli.changeIssueTitleDescription(radIssue, field.getText(), radIssue.getDescription());
200199
final boolean success = edited != null;
201200
if (success) {
202201
issueModel.setValue(edited);
@@ -271,7 +270,8 @@ public RadIssue addEmoji(Emoji emoji, String discussionId) {
271270

272271
@Override
273272
public RadIssue removeEmoji(String emojiUnicode, String discussionId) {
274-
return api.issueCommentReact(radIssue, discussionId, emojiUnicode, false);
273+
//return api.issueCommentReact(radIssue, discussionId, emojiUnicode, false);
274+
return cli.issueCommentReact(radIssue, discussionId, emojiUnicode, false);
275275
}
276276

277277
@Override

src/main/java/network/radicle/jetbrains/radiclejetbrainsplugin/services/RadicleProjectApi.java

Lines changed: 0 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package network.radicle.jetbrains.radiclejetbrainsplugin.services;
22

3-
import com.fasterxml.jackson.core.type.TypeReference;
43
import com.fasterxml.jackson.databind.DeserializationFeature;
54
import com.fasterxml.jackson.databind.ObjectMapper;
65
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
@@ -11,7 +10,6 @@
1110
import com.intellij.openapi.application.ApplicationManager;
1211
import com.intellij.openapi.project.Project;
1312
import com.intellij.serviceContainer.NonInjectable;
14-
import git4idea.repo.GitRepository;
1513
import network.radicle.jetbrains.radiclejetbrainsplugin.RadicleBundle;
1614
import network.radicle.jetbrains.radiclejetbrainsplugin.actions.rad.RadSelf;
1715
import network.radicle.jetbrains.radiclejetbrainsplugin.config.RadicleProjectSettingsHandler;
@@ -93,55 +91,6 @@ public SeedNodeInfo checkApi(SeedNode node, boolean showNotif) {
9391
}
9492
}
9593

96-
public RadIssue editIssueComment(RadIssue issue, String comment, String id, List<Embed> embedList) {
97-
var session = createAuthenticatedSession();
98-
if (session == null) {
99-
return null;
100-
}
101-
try {
102-
var issueReq = new HttpPatch(getHttpNodeUrl() + "/api/v1/projects/" + issue.projectId + "/issues/" + issue.id);
103-
issueReq.setHeader("Authorization", "Bearer " + session.sessionId);
104-
var patchIssueData = Map.of("type", "comment.edit", "id", id, "body", comment, "replyTo", issue.id, "embeds", embedList);
105-
var json = MAPPER.writeValueAsString(patchIssueData);
106-
issueReq.setEntity(new StringEntity(json, ContentType.APPLICATION_JSON));
107-
var resp = makeRequest(issueReq, RadicleBundle.message("commentEditError"), RadicleBundle.message("commentDescError"));
108-
if (!resp.isSuccess()) {
109-
logger.warn("error editing comment: {} to issue:{} resp:{}", comment, issue, resp);
110-
return null;
111-
}
112-
return issue;
113-
} catch (Exception e) {
114-
logger.warn("error editing issue comment: {}", issue, e);
115-
}
116-
return null;
117-
}
118-
119-
public String createPatch(String title, String description, List<String> labels, String baseOid, String patchOid, GitRepository repo, String projectId) {
120-
var session = createAuthenticatedSession();
121-
if (session == null) {
122-
return null;
123-
}
124-
try {
125-
var patchReq = new HttpPost(getHttpNodeUrl() + "/api/v1/projects/" + projectId + "/patches");
126-
patchReq.setHeader("Authorization", "Bearer " + session.sessionId);
127-
var patchIssueData = Map.of("title", title, "description", description, "oid", patchOid, "target", baseOid, "labels", labels);
128-
var json = MAPPER.writeValueAsString(patchIssueData);
129-
patchReq.setEntity(new StringEntity(json, ContentType.APPLICATION_JSON));
130-
var resp = makeRequest(patchReq, RadicleBundle.message("createPatchError"));
131-
if (!resp.isSuccess()) {
132-
logger.warn("error creating new patch title:{} description:{} base_oid:{} patch_oid:{} repo:{} projectId:{}",
133-
title, description, baseOid, patchOid, repo, projectId);
134-
return null;
135-
}
136-
var map = (Map<String, String>) MAPPER.readValue(resp.body, new TypeReference<>() { });
137-
return map.get("id");
138-
} catch (Exception e) {
139-
logger.warn("exception creating new patch title:{} description:{} base_oid:{} patch_oid:{} repo:{} projectId:{}",
140-
title, description, baseOid, patchOid, repo, projectId, e);
141-
}
142-
return null;
143-
}
144-
14594
public RadPatch deleteRevisionComment(RadPatch patch, String revId, String commentId) {
14695
var session = createAuthenticatedSession();
14796
if (session == null) {
@@ -189,53 +138,6 @@ public RadPatch patchCommentReact(RadPatch patch, String commendId, String revId
189138
return null;
190139
}
191140

192-
public RadIssue issueCommentReact(RadIssue issue, String discussionId, String reaction, boolean active) {
193-
var session = createAuthenticatedSession();
194-
if (session == null) {
195-
return null;
196-
}
197-
try {
198-
var issueReq = new HttpPatch(getHttpNodeUrl() + "/api/v1/projects/" + issue.projectId + "/issues/" + issue.id);
199-
issueReq.setHeader("Authorization", "Bearer " + session.sessionId);
200-
var issueData = Map.of("type", "comment.react", "id", discussionId, "reaction", reaction, "active", active);
201-
var json = MAPPER.writeValueAsString(issueData);
202-
issueReq.setEntity(new StringEntity(json, ContentType.APPLICATION_JSON));
203-
var resp = makeRequest(issueReq, RadicleBundle.message("reactionError"));
204-
if (!resp.isSuccess()) {
205-
logger.warn("error reacting to discussion:{} resp:{}", discussionId, resp);
206-
return null;
207-
}
208-
return issue;
209-
} catch (Exception e) {
210-
logger.warn("error reacting to discussion: {}", discussionId, e);
211-
}
212-
213-
return null;
214-
}
215-
216-
public RadIssue changeIssueTitle(RadIssue issue) {
217-
var session = createAuthenticatedSession();
218-
if (session == null) {
219-
return null;
220-
}
221-
try {
222-
var issueReq = new HttpPatch(getHttpNodeUrl() + "/api/v1/projects/" + issue.projectId + "/issues/" + issue.id);
223-
issueReq.setHeader("Authorization", "Bearer " + session.sessionId);
224-
var patchEditData = Map.of("type", "edit", "title", issue.title);
225-
var json = MAPPER.writeValueAsString(patchEditData);
226-
issueReq.setEntity(new StringEntity(json, ContentType.APPLICATION_JSON));
227-
var resp = makeRequest(issueReq, RadicleBundle.message("issueTitleError"));
228-
if (!resp.isSuccess()) {
229-
logger.warn("received invalid response with status:{} and body:{} while editing patch: {}",
230-
resp.status, resp.body, issue);
231-
}
232-
return issue;
233-
} catch (Exception e) {
234-
logger.warn("error changing issue title: {}", issue, e);
235-
}
236-
return null;
237-
}
238-
239141
public RadPatch changePatchComment(String revisionId, String commentId, String body, RadPatch patch, List<Embed> embedList) {
240142
var session = createAuthenticatedSession();
241143
if (session == null) {

src/main/java/network/radicle/jetbrains/radiclejetbrainsplugin/services/RadicleProjectService.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -379,9 +379,9 @@ public ProcessOutput editPatchTitleDescription(GitRepository repo, String patchI
379379
}
380380

381381
public ProcessOutput editIssueTitleDescription(GitRepository repo, String issueId, String title, String description) {
382-
// TODO: this is not going to work, as `rad issue edit` does not support `--message`
383-
return executeCommandFromFile(repo, List.of("issue", "edit", issueId, "--message",
384-
ExecUtil.escapeUnixShellArgument(Strings.nullToEmpty(title) + "\n\n" + Strings.nullToEmpty(description))));
382+
// TODO: this is not going to work, as `rad issue edit` does not support `--title` and `--description` yet
383+
return executeCommandFromFile(repo, List.of("issue", "edit", issueId, "--title", ExecUtil.escapeUnixShellArgument(Strings.nullToEmpty(title)),
384+
"--description", ExecUtil.escapeUnixShellArgument(Strings.nullToEmpty(description))));
385385
}
386386

387387
public ProcessOutput addRemovePatchLabels(GitRepository root, String patchId, List<String> addedLabels, List<String> deletedLabels) {

src/test/java/network/radicle/jetbrains/radiclejetbrainsplugin/AbstractIT.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package network.radicle.jetbrains.radiclejetbrainsplugin;
22

3+
import com.google.common.base.Strings;
34
import com.intellij.execution.configurations.GeneralCommandLine;
45
import com.intellij.notification.Notification;
56
import com.intellij.notification.Notifications;
@@ -34,7 +35,6 @@
3435
import network.radicle.jetbrains.radiclejetbrainsplugin.services.RadicleProjectApi;
3536
import network.radicle.jetbrains.radiclejetbrainsplugin.services.auth.AuthService;
3637
import org.apache.http.impl.client.CloseableHttpClient;
37-
import org.assertj.core.util.Strings;
3838
import org.jetbrains.annotations.NotNull;
3939
import org.junit.After;
4040
import org.junit.Before;
@@ -241,11 +241,8 @@ public void replaceCliService(String head) {
241241
var cliService = new RadicleCliService(myProject) {
242242
@Override
243243
public RadProject getRadRepo(GitRepository repo) {
244-
if (Strings.isNullOrEmpty(head)) {
245-
return new RadProject(RAD_PROJECT_ID, "test", "", "", PatchListPanelTest.getTestProjects().get(0).delegates);
246-
} else {
247-
return new RadProject(RAD_PROJECT_ID, "TestProject", "", "main", head, PatchListPanelTest.getTestProjects().get(0).delegates);
248-
}
244+
return new RadProject(RAD_PROJECT_ID, "TestProject", "TestProjectDescr", "main",
245+
Strings.nullToEmpty(head), PatchListPanelTest.getTestProjects().get(0).delegates);
249246
}
250247
};
251248
ServiceContainerUtil.replaceService(myProject, RadicleCliService.class, cliService, this.getTestRootDisposable());

0 commit comments

Comments
 (0)