Skip to content

Commit b11b769

Browse files
Improves icon and text for launchpad status of branch card PR section
1 parent 2370c72 commit b11b769

File tree

11 files changed

+167
-155
lines changed

11 files changed

+167
-155
lines changed

src/plus/launchpad/launchpad.ts

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -54,23 +54,15 @@ import { executeCommand } from '../../system/vscode/command';
5454
import { configuration } from '../../system/vscode/configuration';
5555
import { openUrl } from '../../system/vscode/utils';
5656
import { ProviderBuildStatusState, ProviderPullRequestReviewState } from '../integrations/providers/models';
57-
import type {
58-
LaunchpadAction,
59-
LaunchpadActionCategory,
60-
LaunchpadCategorizedResult,
61-
LaunchpadGroup,
62-
LaunchpadItem,
63-
LaunchpadTargetAction,
64-
} from './launchpadProvider';
57+
import type { LaunchpadCategorizedResult, LaunchpadItem } from './launchpadProvider';
6558
import {
6659
countLaunchpadItemGroups,
6760
getLaunchpadItemIdHash,
6861
groupAndSortLaunchpadItems,
69-
launchpadGroupIconMap,
70-
launchpadGroupLabelMap,
71-
launchpadGroups,
7262
supportedLaunchpadIntegrations,
7363
} from './launchpadProvider';
64+
import type { LaunchpadAction, LaunchpadActionCategory, LaunchpadGroup, LaunchpadTargetAction } from './models';
65+
import { launchpadGroupIconMap, launchpadGroupLabelMap, launchpadGroups } from './models';
7466
import { isMaybeSupportedLaunchpadPullRequestSearchUrl } from './utils';
7567

7668
const actionGroupMap = new Map<LaunchpadActionCategory, string[]>([

src/plus/launchpad/launchpadIndicator.ts

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,10 @@ import { executeCommand, registerCommand } from '../../system/vscode/command';
1313
import { configuration } from '../../system/vscode/configuration';
1414
import type { ConnectionStateChangeEvent } from '../integrations/integrationService';
1515
import type { LaunchpadCommandArgs } from './launchpad';
16-
import type { LaunchpadGroup, LaunchpadItem, LaunchpadProvider, LaunchpadRefreshEvent } from './launchpadProvider';
17-
import {
18-
groupAndSortLaunchpadItems,
19-
launchpadGroupIconMap,
20-
launchpadPriorityGroups,
21-
supportedLaunchpadIntegrations,
22-
} from './launchpadProvider';
16+
import type { LaunchpadItem, LaunchpadProvider, LaunchpadRefreshEvent } from './launchpadProvider';
17+
import { groupAndSortLaunchpadItems, supportedLaunchpadIntegrations } from './launchpadProvider';
18+
import type { LaunchpadGroup } from './models';
19+
import { launchpadGroupIconMap, launchpadPriorityGroups } from './models';
2320

2421
type LaunchpadIndicatorState = 'idle' | 'disconnected' | 'loading' | 'load' | 'failed';
2522

src/plus/launchpad/launchpadProvider.ts

Lines changed: 8 additions & 121 deletions
Original file line numberDiff line numberDiff line change
@@ -51,129 +51,16 @@ import {
5151
} from '../integrations/providers/models';
5252
import type { EnrichableItem, EnrichedItem } from './enrichmentService';
5353
import { convertRemoteProviderIdToEnrichProvider, isEnrichableRemoteProviderId } from './enrichmentService';
54+
import type { LaunchpadAction, LaunchpadActionCategory, LaunchpadGroup } from './models';
55+
import {
56+
launchpadActionCategories,
57+
launchpadCategoryToGroupMap,
58+
launchpadGroups,
59+
prActionsMap,
60+
sharedCategoryToLaunchpadActionCategoryMap,
61+
} from './models';
5462
import { getPullRequestIdentityFromMaybeUrl } from './utils';
5563

56-
export const launchpadActionCategories = [
57-
'mergeable',
58-
'unassigned-reviewers',
59-
'failed-checks',
60-
'conflicts',
61-
'needs-my-review',
62-
'code-suggestions',
63-
'changes-requested',
64-
'reviewer-commented',
65-
'waiting-for-review',
66-
'draft',
67-
'other',
68-
] as const;
69-
export type LaunchpadActionCategory = (typeof launchpadActionCategories)[number];
70-
71-
export const launchpadGroups = [
72-
'current-branch',
73-
'pinned',
74-
'mergeable',
75-
'blocked',
76-
'follow-up',
77-
'needs-review',
78-
'waiting-for-review',
79-
'draft',
80-
'other',
81-
'snoozed',
82-
] as const;
83-
export type LaunchpadGroup = (typeof launchpadGroups)[number];
84-
85-
export const launchpadPriorityGroups = [
86-
'mergeable',
87-
'blocked',
88-
'follow-up',
89-
'needs-review',
90-
] satisfies readonly LaunchpadPriorityGroup[] as readonly LaunchpadGroup[];
91-
export type LaunchpadPriorityGroup = Extract<LaunchpadGroup, 'mergeable' | 'blocked' | 'follow-up' | 'needs-review'>;
92-
93-
export const launchpadGroupIconMap = new Map<LaunchpadGroup, `$(${string})`>([
94-
['current-branch', '$(git-branch)'],
95-
['pinned', '$(pinned)'],
96-
['mergeable', '$(rocket)'],
97-
['blocked', '$(error)'], //bracket-error
98-
['follow-up', '$(report)'],
99-
['needs-review', '$(comment-unresolved)'], // feedback
100-
['waiting-for-review', '$(gitlens-clock)'],
101-
['draft', '$(git-pull-request-draft)'],
102-
['other', '$(ellipsis)'],
103-
['snoozed', '$(bell-slash)'],
104-
]);
105-
106-
export const launchpadGroupLabelMap = new Map<LaunchpadGroup, string>([
107-
['current-branch', 'Current Branch'],
108-
['pinned', 'Pinned'],
109-
['mergeable', 'Ready to Merge'],
110-
['blocked', 'Blocked'],
111-
['follow-up', 'Requires Follow-up'],
112-
['needs-review', 'Needs Your Review'],
113-
['waiting-for-review', 'Waiting for Review'],
114-
['draft', 'Draft'],
115-
['other', 'Other'],
116-
['snoozed', 'Snoozed'],
117-
]);
118-
119-
export const launchpadCategoryToGroupMap = new Map<LaunchpadActionCategory, LaunchpadGroup>([
120-
['mergeable', 'mergeable'],
121-
['conflicts', 'blocked'],
122-
['failed-checks', 'blocked'],
123-
['unassigned-reviewers', 'blocked'],
124-
['needs-my-review', 'needs-review'],
125-
['code-suggestions', 'follow-up'],
126-
['changes-requested', 'follow-up'],
127-
['reviewer-commented', 'follow-up'],
128-
['waiting-for-review', 'waiting-for-review'],
129-
['draft', 'draft'],
130-
['other', 'other'],
131-
]);
132-
133-
export const sharedCategoryToLaunchpadActionCategoryMap = new Map<string, LaunchpadActionCategory>([
134-
['readyToMerge', 'mergeable'],
135-
['unassignedReviewers', 'unassigned-reviewers'],
136-
['failingCI', 'failed-checks'],
137-
['conflicts', 'conflicts'],
138-
['needsMyReview', 'needs-my-review'],
139-
['changesRequested', 'changes-requested'],
140-
['reviewerCommented', 'reviewer-commented'],
141-
['waitingForReview', 'waiting-for-review'],
142-
['draft', 'draft'],
143-
['other', 'other'],
144-
]);
145-
146-
export type LaunchpadAction =
147-
| 'merge'
148-
| 'open'
149-
| 'soft-open'
150-
| 'switch'
151-
| 'switch-and-code-suggest'
152-
| 'open-worktree'
153-
| 'code-suggest'
154-
| 'show-overview'
155-
| 'open-changes'
156-
| 'open-in-graph';
157-
158-
export type LaunchpadTargetAction = {
159-
action: 'open-suggestion';
160-
target: string;
161-
};
162-
163-
const prActionsMap = new Map<LaunchpadActionCategory, LaunchpadAction[]>([
164-
['mergeable', ['merge']],
165-
['unassigned-reviewers', ['open']],
166-
['failed-checks', ['open']],
167-
['conflicts', ['open']],
168-
['needs-my-review', ['open']],
169-
['code-suggestions', ['open']],
170-
['changes-requested', ['open']],
171-
['reviewer-commented', ['open']],
172-
['waiting-for-review', ['open']],
173-
['draft', ['open']],
174-
['other', []],
175-
]);
176-
17764
export function getSuggestedActions(category: LaunchpadActionCategory, isCurrentBranch: boolean): LaunchpadAction[] {
17865
const actions = [...prActionsMap.get(category)!];
17966
if (isCurrentBranch) {

src/plus/launchpad/models.ts

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
export const launchpadActionCategories = [
2+
'mergeable',
3+
'unassigned-reviewers',
4+
'failed-checks',
5+
'conflicts',
6+
'needs-my-review',
7+
'code-suggestions',
8+
'changes-requested',
9+
'reviewer-commented',
10+
'waiting-for-review',
11+
'draft',
12+
'other',
13+
] as const;
14+
export type LaunchpadActionCategory = (typeof launchpadActionCategories)[number];
15+
16+
export const launchpadGroups = [
17+
'current-branch',
18+
'pinned',
19+
'mergeable',
20+
'blocked',
21+
'follow-up',
22+
'needs-review',
23+
'waiting-for-review',
24+
'draft',
25+
'other',
26+
'snoozed',
27+
] as const;
28+
export type LaunchpadGroup = (typeof launchpadGroups)[number];
29+
30+
export const launchpadPriorityGroups = [
31+
'mergeable',
32+
'blocked',
33+
'follow-up',
34+
'needs-review',
35+
] satisfies readonly LaunchpadPriorityGroup[] as readonly LaunchpadGroup[];
36+
export type LaunchpadPriorityGroup = Extract<LaunchpadGroup, 'mergeable' | 'blocked' | 'follow-up' | 'needs-review'>;
37+
38+
export const launchpadGroupIconMap = new Map<LaunchpadGroup, `$(${string})`>([
39+
['current-branch', '$(git-branch)'],
40+
['pinned', '$(pinned)'],
41+
['mergeable', '$(rocket)'],
42+
['blocked', '$(error)'], //bracket-error
43+
['follow-up', '$(report)'],
44+
['needs-review', '$(comment-unresolved)'], // feedback
45+
['waiting-for-review', '$(gitlens-clock)'],
46+
['draft', '$(git-pull-request-draft)'],
47+
['other', '$(ellipsis)'],
48+
['snoozed', '$(bell-slash)'],
49+
]);
50+
51+
export const launchpadGroupLabelMap = new Map<LaunchpadGroup, string>([
52+
['current-branch', 'Current Branch'],
53+
['pinned', 'Pinned'],
54+
['mergeable', 'Ready to Merge'],
55+
['blocked', 'Blocked'],
56+
['follow-up', 'Requires Follow-up'],
57+
['needs-review', 'Needs Your Review'],
58+
['waiting-for-review', 'Waiting for Review'],
59+
['draft', 'Draft'],
60+
['other', 'Other'],
61+
['snoozed', 'Snoozed'],
62+
]);
63+
64+
export const launchpadCategoryToGroupMap = new Map<LaunchpadActionCategory, LaunchpadGroup>([
65+
['mergeable', 'mergeable'],
66+
['conflicts', 'blocked'],
67+
['failed-checks', 'blocked'],
68+
['unassigned-reviewers', 'blocked'],
69+
['needs-my-review', 'needs-review'],
70+
['code-suggestions', 'follow-up'],
71+
['changes-requested', 'follow-up'],
72+
['reviewer-commented', 'follow-up'],
73+
['waiting-for-review', 'waiting-for-review'],
74+
['draft', 'draft'],
75+
['other', 'other'],
76+
]);
77+
78+
export const sharedCategoryToLaunchpadActionCategoryMap = new Map<string, LaunchpadActionCategory>([
79+
['readyToMerge', 'mergeable'],
80+
['unassignedReviewers', 'unassigned-reviewers'],
81+
['failingCI', 'failed-checks'],
82+
['conflicts', 'conflicts'],
83+
['needsMyReview', 'needs-my-review'],
84+
['changesRequested', 'changes-requested'],
85+
['reviewerCommented', 'reviewer-commented'],
86+
['waitingForReview', 'waiting-for-review'],
87+
['draft', 'draft'],
88+
['other', 'other'],
89+
]);
90+
91+
export type LaunchpadAction =
92+
| 'merge'
93+
| 'open'
94+
| 'soft-open'
95+
| 'switch'
96+
| 'switch-and-code-suggest'
97+
| 'open-worktree'
98+
| 'code-suggest'
99+
| 'show-overview'
100+
| 'open-changes'
101+
| 'open-in-graph';
102+
103+
export type LaunchpadTargetAction = {
104+
action: 'open-suggestion';
105+
target: string;
106+
};
107+
108+
export const prActionsMap = new Map<LaunchpadActionCategory, LaunchpadAction[]>([
109+
['mergeable', ['merge']],
110+
['unassigned-reviewers', ['open']],
111+
['failed-checks', ['open']],
112+
['conflicts', ['open']],
113+
['needs-my-review', ['open']],
114+
['code-suggestions', ['open']],
115+
['changes-requested', ['open']],
116+
['reviewer-commented', ['open']],
117+
['waiting-for-review', ['open']],
118+
['draft', ['open']],
119+
['other', []],
120+
]);

src/plus/launchpad/utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111
} from '../integrations/providers/gitlab/models';
1212
import type { LaunchpadSummaryResult } from './launchpadIndicator';
1313
import { generateLaunchpadSummary } from './launchpadIndicator';
14-
import type { LaunchpadGroup } from './launchpadProvider';
14+
import type { LaunchpadGroup } from './models';
1515

1616
export async function getLaunchpadSummary(container: Container): Promise<LaunchpadSummaryResult | { error: Error }> {
1717
const result = await container.launchpad.getCategorizedItems();

src/views/launchpadView.ts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,10 @@ import { GitUri, unknownGitUri } from '../git/gitUri';
1111
import type { SubscriptionChangeEvent } from '../plus/gk/account/subscriptionService';
1212
import { ensurePlusFeaturesEnabled } from '../plus/gk/utils';
1313
import type { LaunchpadCommandArgs } from '../plus/launchpad/launchpad';
14-
import type { LaunchpadGroup, LaunchpadItem } from '../plus/launchpad/launchpadProvider';
15-
import {
16-
groupAndSortLaunchpadItems,
17-
launchpadGroupIconMap,
18-
launchpadGroupLabelMap,
19-
} from '../plus/launchpad/launchpadProvider';
14+
import type { LaunchpadItem } from '../plus/launchpad/launchpadProvider';
15+
import { groupAndSortLaunchpadItems } from '../plus/launchpad/launchpadProvider';
16+
import type { LaunchpadGroup } from '../plus/launchpad/models';
17+
import { launchpadGroupIconMap, launchpadGroupLabelMap } from '../plus/launchpad/models';
2018
import { createCommand, executeCommand } from '../system/vscode/command';
2119
import { configuration } from '../system/vscode/configuration';
2220
import { CacheableChildrenViewNode } from './nodes/abstract/cacheableChildrenViewNode';

src/views/nodes/abstract/viewNode.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,12 @@ import type { Repository } from '../../../git/models/repository';
1212
import type { GitTag } from '../../../git/models/tag';
1313
import type { GitWorktree } from '../../../git/models/worktree';
1414
import type { Draft } from '../../../gk/models/drafts';
15-
import type { LaunchpadGroup, LaunchpadItem } from '../../../plus/launchpad/launchpadProvider';
15+
import type { LaunchpadItem } from '../../../plus/launchpad/launchpadProvider';
16+
import type { LaunchpadGroup } from '../../../plus/launchpad/models';
1617
import {
1718
launchpadCategoryToGroupMap,
1819
sharedCategoryToLaunchpadActionCategoryMap,
19-
} from '../../../plus/launchpad/launchpadProvider';
20+
} from '../../../plus/launchpad/models';
2021
import type {
2122
CloudWorkspace,
2223
CloudWorkspaceRepositoryDescriptor,

src/views/nodes/launchpadViewGroupingNode.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import type { TreeItem } from 'vscode';
22
import { Disposable, TreeItemCollapsibleState } from 'vscode';
3-
import type { LaunchpadGroup } from '../../plus/launchpad/launchpadProvider';
3+
import type { LaunchpadGroup } from '../../plus/launchpad/models';
44
import type { TreeViewNodeCollapsibleStateChangeEvent, View } from '../viewBase';
55
import type { ViewNode } from './abstract/viewNode';
66
import { GroupingNode } from './groupingNode';

0 commit comments

Comments
 (0)