Skip to content

Commit cc8cc91

Browse files
Copilotalexr00
andcommitted
Hide repositories without matching issues in the Issues view
Co-authored-by: alexr00 <38270282+alexr00@users.noreply.github.com>
1 parent 48ae83b commit cc8cc91

1 file changed

Lines changed: 15 additions & 4 deletions

File tree

src/issues/issuesView.ts

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ export class IssuesTreeData
157157

158158
getChildren(
159159
element: FolderRepositoryManager | QueryNode | IssueGroupNode | IssueItem | undefined,
160-
): FolderRepositoryManager[] | QueryNode[] | Promise<IssueItem[] | IssueGroupNode[]> {
160+
): FolderRepositoryManager[] | QueryNode[] | Promise<FolderRepositoryManager[] | QueryNode[] | IssueItem[] | IssueGroupNode[]> {
161161
if (element === undefined && this.manager.state !== ReposManagerState.RepositoriesLoaded) {
162162
return this.getStateChildren();
163163
} else {
@@ -185,12 +185,23 @@ export class IssuesTreeData
185185
}
186186
}
187187

188-
private getRootChildren(): FolderRepositoryManager[] | QueryNode[] | Promise<IssueItem[] | IssueGroupNode[]> {
188+
private async getRootChildren(): Promise<FolderRepositoryManager[] | QueryNode[] | IssueItem[] | IssueGroupNode[]> {
189189
// If there's only one folder manager go straight to the query nodes
190190
if (this.manager.folderManagers.length === 1) {
191191
return this.getRepoChildren(this.manager.folderManagers[0]);
192192
} else if (this.manager.folderManagers.length > 1) {
193-
return this.manager.folderManagers;
193+
// Hide repositories that have no matching issues in any query
194+
const managersWithIssues: FolderRepositoryManager[] = [];
195+
for (const fm of this.manager.folderManagers) {
196+
const issueCol = this.stateManager.getIssueCollection(fm.repository.rootUri);
197+
const queryResultPromises = Array.from(issueCol.values());
198+
const queryResults = await Promise.all(queryResultPromises);
199+
const hasMatchingIssues = queryResults.some(r => r.issues && r.issues.length > 0);
200+
if (hasMatchingIssues) {
201+
managersWithIssues.push(fm);
202+
}
203+
}
204+
return managersWithIssues;
194205
} else {
195206
return [];
196207
}
@@ -246,7 +257,7 @@ export class IssuesTreeData
246257

247258
getIssuesChildren(
248259
element: FolderRepositoryManager | QueryNode | IssueGroupNode | IssueItem | undefined,
249-
): FolderRepositoryManager[] | QueryNode[] | Promise<IssueItem[] | IssueGroupNode[]> {
260+
): FolderRepositoryManager[] | QueryNode[] | Promise<FolderRepositoryManager[] | QueryNode[] | IssueItem[] | IssueGroupNode[]> {
250261
if (element === undefined) {
251262
return this.getRootChildren();
252263
} else if (element instanceof FolderRepositoryManager) {

0 commit comments

Comments
 (0)