Skip to content

Commit 7dfc857

Browse files
Uses associated issues from git config in home view
1 parent 410acc8 commit 7dfc857

File tree

4 files changed

+70
-18
lines changed

4 files changed

+70
-18
lines changed

src/webviews/apps/plus/home/components/active-work.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ export class GlActiveWork extends SignalWatcher(LitElement) {
179179
}
180180

181181
private renderRepoBranchCard(branch: GetOverviewBranch, repo: string, isFetching: boolean) {
182-
const { name, pr, autolinks, state, workingTreeState, upstream } = branch;
182+
const { name, pr, autolinks, issues, state, workingTreeState, upstream } = branch;
183183
return html`
184184
<gl-card class="branch-item" active>
185185
<div class="branch-item__container">
@@ -203,26 +203,26 @@ export class GlActiveWork extends SignalWatcher(LitElement) {
203203
</p>
204204
</div>`;
205205
})}
206-
${when(autolinks, () => this.renderAutolinks(autolinks))}
206+
${when(issues || autolinks, () => this.renderIssues(issues?.length ? issues : autolinks))}
207207
${when(workingTreeState, () => this.renderStatus(workingTreeState, state))}
208208
</div>
209209
${this.renderActions(branch, repo)}
210210
</gl-card>
211211
`;
212212
}
213213

214-
private renderAutolinks(autolinks: { id: string; title: string; state: string; url: string }[] | undefined) {
215-
if (!autolinks) return nothing;
214+
private renderIssues(issues: { id: string; title: string; state: string; url: string }[] | undefined) {
215+
if (!issues) return nothing;
216216
return html`
217217
<div class="branch-item__section">
218-
${autolinks.map(autolink => {
218+
${issues.map(issue => {
219219
return html`
220220
<p class="branch-item__grouping">
221221
<span class="branch-item__icon">
222-
<issue-icon state=${autolink.state} issue-id=${autolink.id}></issue-icon>
222+
<issue-icon state=${issue.state} issue-id=${issue.id}></issue-icon>
223223
</span>
224-
<a href=${autolink.url} class="branch-item__name">${autolink.title}</a>
225-
<span class="branch-item__identifier">#${autolink.id}</span>
224+
<a href=${issue.url} class="branch-item__name">${issue.title}</a>
225+
<span class="branch-item__identifier">#${issue.id}</span>
226226
</p>
227227
`;
228228
})}

src/webviews/apps/plus/home/components/branch-section.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ export class GlBranchCard extends LitElement {
221221
}
222222

223223
override render() {
224-
const { name, pr, autolinks, opened: active, timestamp: date } = this.branch;
224+
const { name, pr, autolinks, issues, opened: active, timestamp: date } = this.branch;
225225
return html`
226226
<gl-card class="branch-item" .active=${active}>
227227
<div class="branch-item__container">
@@ -236,7 +236,8 @@ export class GlBranchCard extends LitElement {
236236
() => html`<span class="branch-item__name">${name}</span>`,
237237
)}
238238
</p>
239-
${this.renderPrBranch(this.branch)} ${when(autolinks, () => this.renderAutolinks(autolinks))}
239+
${this.renderPrBranch(this.branch)}
240+
${when(issues || autolinks, () => this.renderIssues(issues?.length ? issues : autolinks))}
240241
</div>
241242
<div class="branch-item__section branch-item__section--details">
242243
${this.renderChanges(this.branch)}
@@ -254,17 +255,17 @@ export class GlBranchCard extends LitElement {
254255
`;
255256
}
256257

257-
private renderAutolinks(autolinks: { id: string; title: string; state: string; url: string }[] | undefined) {
258-
if (!autolinks) return nothing;
258+
private renderIssues(issues: { id: string; title: string; state: string; url: string }[] | undefined) {
259+
if (!issues) return nothing;
259260
return html`
260-
${autolinks.map(autolink => {
261+
${issues.map(issue => {
261262
return html`
262263
<p class="branch-item__grouping branch-item__grouping--secondary">
263264
<span class="branch-item__icon">
264-
<issue-icon state=${autolink.state} issue-id=${autolink.id}></issue-icon>
265+
<issue-icon state=${issue.state} issue-id=${issue.id}></issue-icon>
265266
</span>
266-
<a href=${autolink.url} class="branch-item__name">${autolink.title}</a>
267-
<span class="branch-item__identifier">#${autolink.id}</span>
267+
<a href=${issue.url} class="branch-item__name">${issue.title}</a>
268+
<span class="branch-item__identifier">#${issue.id}</span>
268269
</p>
269270
`;
270271
})}

src/webviews/home/homeWebview.ts

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ import { openComparisonChanges } from '../../git/actions/commit';
2020
import * as RepoActions from '../../git/actions/repository';
2121
import type { BranchContributorOverview } from '../../git/gitProvider';
2222
import type { GitBranch } from '../../git/models/branch';
23+
import { getAssociatedIssuesForBranch } from '../../git/models/branch.utils';
24+
import type { Issue } from '../../git/models/issue';
2325
import type { PullRequest } from '../../git/models/pullRequest';
2426
import { getComparisonRefsForPullRequest } from '../../git/models/pullRequest';
2527
import { getReferenceFromBranch } from '../../git/models/reference.utils';
@@ -1028,6 +1030,7 @@ async function getOverviewBranches(
10281030
let repoStatusPromise: Promise<GitStatus | undefined> | undefined;
10291031
const prPromises = new Map<string, Promise<PullRequest | undefined>>();
10301032
const autolinkPromises = new Map<string, Promise<Map<string, EnrichedAutolink> | undefined>>();
1033+
const issuePromises = new Map<string, Promise<Issue[] | undefined>>();
10311034
const statusPromises = new Map<string, Promise<GitStatus | undefined>>();
10321035
const contributorPromises = new Map<string, Promise<BranchContributorOverview | undefined>>();
10331036

@@ -1044,6 +1047,10 @@ async function getOverviewBranches(
10441047
if (options?.isPro !== false) {
10451048
prPromises.set(branch.id, branch.getAssociatedPullRequest({ avatarSize: 16 }));
10461049
autolinkPromises.set(branch.id, branch.getEnrichedAutolinks());
1050+
issuePromises.set(
1051+
branch.id,
1052+
getAssociatedIssuesForBranch(container, branch).then(issues => issues.value),
1053+
);
10471054
contributorPromises.set(
10481055
branch.id,
10491056
container.git.getBranchContributorOverview(branch.repoPath, branch.ref),
@@ -1077,6 +1084,10 @@ async function getOverviewBranches(
10771084
if (options?.isPro !== false) {
10781085
prPromises.set(branch.id, branch.getAssociatedPullRequest());
10791086
autolinkPromises.set(branch.id, branch.getEnrichedAutolinks());
1087+
issuePromises.set(
1088+
branch.id,
1089+
getAssociatedIssuesForBranch(container, branch).then(issues => issues.value),
1090+
);
10801091
contributorPromises.set(
10811092
branch.id,
10821093
container.git.getBranchContributorOverview(branch.repoPath, branch.ref),
@@ -1120,6 +1131,10 @@ async function getOverviewBranches(
11201131

11211132
if (options?.isPro !== false) {
11221133
autolinkPromises.set(branch.id, branch.getEnrichedAutolinks());
1134+
issuePromises.set(
1135+
branch.id,
1136+
getAssociatedIssuesForBranch(container, branch).then(issues => issues.value),
1137+
);
11231138
}
11241139

11251140
const timestamp = branch.date?.getTime();
@@ -1160,7 +1175,14 @@ async function getOverviewBranches(
11601175
}
11611176
}
11621177

1163-
await enrichOverviewBranches(overviewBranches, prPromises, autolinkPromises, statusPromises, contributorPromises);
1178+
await enrichOverviewBranches(
1179+
overviewBranches,
1180+
prPromises,
1181+
autolinkPromises,
1182+
issuePromises,
1183+
statusPromises,
1184+
contributorPromises,
1185+
);
11641186

11651187
return overviewBranches;
11661188
}
@@ -1170,16 +1192,20 @@ async function enrichOverviewBranches(
11701192
overviewBranches: GetOverviewBranches,
11711193
prPromises: Map<string, Promise<PullRequest | undefined>>,
11721194
autolinkPromises: Map<string, Promise<Map<string, EnrichedAutolink> | undefined>>,
1195+
issuePromises: Map<string, Promise<Issue[] | undefined>>,
11731196
statusPromises: Map<string, Promise<GitStatus | undefined>>,
11741197
contributorPromises: Map<string, Promise<BranchContributorOverview | undefined>>,
11751198
) {
1176-
const [prResults, autolinkResults, statusResults, contributorResults] = await Promise.allSettled([
1199+
const [prResults, autolinkResults, issueResults, statusResults, contributorResults] = await Promise.allSettled([
11771200
Promise.allSettled(map(prPromises, ([id, pr]) => pr.then<[string, PullRequest | undefined]>(pr => [id, pr]))),
11781201
Promise.allSettled(
11791202
map(autolinkPromises, ([id, autolinks]) =>
11801203
autolinks.then<[string, Map<string, EnrichedAutolink> | undefined]>(a => [id, a]),
11811204
),
11821205
),
1206+
Promise.allSettled(
1207+
map(issuePromises, ([id, issues]) => issues.then<[string, Issue[] | undefined]>(issues => [id, issues])),
1208+
),
11831209
Promise.allSettled(
11841210
map(statusPromises, ([id, status]) => status.then<[string, GitStatus | undefined]>(status => [id, status])),
11851211
),
@@ -1240,6 +1266,22 @@ async function enrichOverviewBranches(
12401266
);
12411267
}
12421268

1269+
const issues = new Map(
1270+
getSettledValue(issueResults)
1271+
?.filter(r => r.status === 'fulfilled')
1272+
.map(({ value: [issueId, issues] }) => [
1273+
issueId,
1274+
issues
1275+
? (issues.map(issue => ({
1276+
id: issue.id,
1277+
title: issue.title,
1278+
state: issue.state,
1279+
url: issue.url,
1280+
})) satisfies GetOverviewBranch['issues'])
1281+
: undefined,
1282+
]),
1283+
);
1284+
12431285
const statuses = new Map(
12441286
getSettledValue(statusResults)
12451287
?.filter(r => r.status === 'fulfilled')
@@ -1259,6 +1301,9 @@ async function enrichOverviewBranches(
12591301
const autolinksForBranch = autolinks.get(branch.id);
12601302
branch.autolinks = autolinksForBranch;
12611303

1304+
const issuesForBranch = issues.get(branch.id);
1305+
branch.issues = issuesForBranch;
1306+
12621307
const status = statuses.get(branch.id);
12631308
if (status != null) {
12641309
branch.workingTreeState = status.getDiffStatus();

src/webviews/home/protocol.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,12 @@ export interface GetOverviewBranch {
113113
state: string;
114114
hasIssue: boolean;
115115
}[];
116+
issues?: {
117+
id: string;
118+
title: string;
119+
url: string;
120+
state: string;
121+
}[];
116122
worktree?: {
117123
name: string;
118124
uri: string;

0 commit comments

Comments
 (0)