Skip to content

Commit a64fee5

Browse files
[AXON-432] Transition issue from the context menu
1 parent f202d60 commit a64fee5

File tree

2 files changed

+44
-2
lines changed

2 files changed

+44
-2
lines changed

package.json

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,11 @@
231231
"title": "Open Jira Issue",
232232
"category": "Atlassian"
233233
},
234+
{
235+
"command": "atlascode.jira.transitionIssue",
236+
"title": "Transition Issue...",
237+
"category": "Atlassian"
238+
},
234239
{
235240
"command": "atlascode.jira.assignIssueToMe",
236241
"title": "Assign Jira Issue to Me",
@@ -602,6 +607,11 @@
602607
"when": "viewItem =~ /(jiraIssue|assignedJiraIssue|jiraIssue_.+|assignedJiraIssue_.+)/ && atlascode:isJiraAuthenticated",
603608
"group": "jiraContextMenuGroup1"
604609
},
610+
{
611+
"command": "atlascode.jira.transitionIssue",
612+
"when": "viewItem =~ /(jiraIssue|assignedJiraIssue|jiraIssue_.+|assignedJiraIssue_.+)/ && atlascode:isJiraAuthenticated",
613+
"group": "jiraContextMenuGroup3"
614+
},
605615
{
606616
"command": "atlascode.jira.createIssue",
607617
"when": "viewItem =~ /(jiraIssue|assignedJiraIssue|jiraIssue_.+|assignedJiraIssue_.+)/ && atlascode:isJiraAuthenticated",
@@ -742,6 +752,10 @@
742752
"command": "atlascode.bb.rerunPipeline",
743753
"when": "false"
744754
},
755+
{
756+
"command": "atlascode.jira.transitionIssue",
757+
"when": "false"
758+
},
745759
{
746760
"command": "atlascode.jira.assignIssueToMe",
747761
"when": "false"
@@ -1389,4 +1403,4 @@
13891403
"webpack-node-externals": "^3.0.0"
13901404
},
13911405
"packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
1392-
}
1406+
}

src/commands.ts

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { isMinimalIssue, MinimalIssue, MinimalIssueOrKeyAndSite } from '@atlassianlabs/jira-pi-common-models';
2-
import { commands, env, ExtensionContext, Uri } from 'vscode';
2+
import { commands, env, ExtensionContext, Uri, window } from 'vscode';
33

44
import {
55
cloneRepositoryButtonEvent,
@@ -19,6 +19,7 @@ import { startWorkOnIssue } from './commands/jira/startWorkOnIssue';
1919
import { configuration } from './config/configuration';
2020
import { HelpTreeViewId } from './constants';
2121
import { Container } from './container';
22+
import { transitionIssue } from './jira/transitionIssue';
2223
import { knownLinkIdMap } from './lib/ipc/models/common';
2324
import { ConfigSection, ConfigSubSection } from './lib/ipc/models/config';
2425
import { AbstractBaseNode } from './views/nodes/abstractBaseNode';
@@ -71,6 +72,7 @@ export enum Commands {
7172
ShowOnboardingPage = 'atlascode.showOnboardingPage',
7273
ShowPullRequestDetailsPage = 'atlascode.showPullRequestDetailsPage',
7374
AssignIssueToMe = 'atlascode.jira.assignIssueToMe',
75+
TransitionIssue = 'atlascode.jira.transitionIssue',
7476
StartWorkOnIssue = 'atlascode.jira.startWorkOnIssue',
7577
CreatePullRequest = 'atlascode.bb.createPullRequest',
7678
RerunPipeline = 'atlascode.bb.rerunPipeline',
@@ -193,6 +195,32 @@ export function registerCommands(vscodeContext: ExtensionContext) {
193195
commands.executeCommand(Commands.ShowIssue, issueNode.issue),
194196
),
195197
commands.registerCommand(Commands.AssignIssueToMe, (issueNode: IssueNode) => assignIssue(issueNode)),
198+
commands.registerCommand(Commands.TransitionIssue, async (issueNode: IssueNode) => {
199+
const issue = issueNode.issue as MinimalIssue<DetailedSiteInfo>;
200+
window
201+
.showQuickPick(
202+
issue.transitions.map((x) => ({
203+
label: x.name,
204+
detail: x.name !== x.to.name ? `${x.to.name}` : '',
205+
})),
206+
{
207+
placeHolder: `Select a transition for ${issue.key}`,
208+
},
209+
)
210+
.then(async (transition) => {
211+
if (!transition) {
212+
return;
213+
}
214+
215+
const target = issue.transitions.find((x) => x.name === transition.label);
216+
if (!target) {
217+
window.showErrorMessage(`Transition ${transition.label} not found`);
218+
return;
219+
}
220+
221+
await transitionIssue(issue, target);
222+
});
223+
}),
196224
commands.registerCommand(
197225
Commands.StartWorkOnIssue,
198226
(issueNodeOrMinimalIssue: IssueNode | MinimalIssue<DetailedSiteInfo>) =>

0 commit comments

Comments
 (0)