Skip to content

Commit 446f6cc

Browse files
committed
Fixes timing issues with first time loading
1 parent 32472c3 commit 446f6cc

File tree

7 files changed

+69
-56
lines changed

7 files changed

+69
-56
lines changed

src/views/branchesView.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import type { GitCommit } from '../git/models/commit';
88
import { isCommit } from '../git/models/commit';
99
import type { GitBranchReference, GitRevisionReference } from '../git/models/reference';
1010
import { getReferenceLabel } from '../git/models/reference';
11-
import type { Repository, RepositoryChangeEvent } from '../git/models/repository';
11+
import type { RepositoryChangeEvent } from '../git/models/repository';
1212
import { groupRepositories, RepositoryChange, RepositoryChangeComparisonMode } from '../git/models/repository';
1313
import { getWorktreesByBranch } from '../git/models/worktree';
1414
import { gate } from '../system/decorators/gate';
@@ -56,22 +56,22 @@ export class BranchesViewNode extends RepositoriesSubscribeableNode<BranchesView
5656
this.view.message = undefined;
5757

5858
if (this.children == null) {
59-
let grouped: Map<Repository, Map<string, Repository>> | undefined;
60-
61-
let repositories = this.view.container.git.openRepositories;
62-
if (configuration.get('views.collapseWorktreesWhenPossible')) {
63-
grouped = await groupRepositories(repositories);
64-
repositories = [...grouped.keys()];
59+
if (this.view.container.git.isDiscoveringRepositories) {
60+
this.view.message = 'Loading branches...';
61+
await this.view.container.git.isDiscoveringRepositories;
6562
}
6663

64+
let repositories = this.view.container.git.openRepositories;
6765
if (repositories.length === 0) {
68-
this.view.message = this.view.container.git.isDiscoveringRepositories
69-
? 'Loading branches...'
70-
: 'No branches could be found.';
71-
66+
this.view.message = 'No branches could be found.';
7267
return [];
7368
}
7469

70+
if (configuration.get('views.collapseWorktreesWhenPossible')) {
71+
const grouped = await groupRepositories(repositories);
72+
repositories = [...grouped.keys()];
73+
}
74+
7575
// Get all the worktree branches (and track if they are opened) to pass along downstream, e.g. in the BranchNode to display an indicator
7676
const worktreesByBranch = await getWorktreesByBranch(repositories, { includeDefault: true });
7777
this.updateContext({

src/views/commitsView.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -125,15 +125,18 @@ export class CommitsRepositoryNode extends RepositoryFolderNode<CommitsView, Bra
125125

126126
export class CommitsViewNode extends RepositoriesSubscribeableNode<CommitsView, CommitsRepositoryNode> {
127127
async getChildren(): Promise<ViewNode[]> {
128+
this.view.description = this.view.getViewDescription();
129+
this.view.message = undefined;
130+
128131
if (this.children == null) {
129-
this.view.description = this.view.getViewDescription();
130-
this.view.message = undefined;
132+
if (this.view.container.git.isDiscoveringRepositories) {
133+
this.view.message = 'Loading commits...';
134+
await this.view.container.git.isDiscoveringRepositories;
135+
}
131136

132137
const repositories = this.view.container.git.openRepositories;
133138
if (repositories.length === 0) {
134-
this.view.message = this.view.container.git.isDiscoveringRepositories
135-
? 'Loading commits...'
136-
: 'No commits could be found.';
139+
this.view.message = 'No commits could be found.';
137140

138141
return [];
139142
}

src/views/contributorsView.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,17 @@ export class ContributorsViewNode extends RepositoriesSubscribeableNode<Contribu
5757
this.view.message = undefined;
5858

5959
if (this.children == null) {
60+
if (this.view.container.git.isDiscoveringRepositories) {
61+
this.view.message = 'Loading contributors...';
62+
await this.view.container.git.isDiscoveringRepositories;
63+
}
64+
6065
let repositories = this.view.container.git.openRepositories;
66+
if (repositories.length === 0) {
67+
this.view.message = 'No contributors could be found.';
68+
return [];
69+
}
70+
6171
if (
6272
configuration.get('views.collapseWorktreesWhenPossible') &&
6373
configuration.get('views.contributors.showAllBranches')
@@ -66,14 +76,6 @@ export class ContributorsViewNode extends RepositoriesSubscribeableNode<Contribu
6676
repositories = [...grouped.keys()];
6777
}
6878

69-
if (repositories.length === 0) {
70-
this.view.message = this.view.container.git.isDiscoveringRepositories
71-
? 'Loading contributors...'
72-
: 'No contributors could be found.';
73-
74-
return [];
75-
}
76-
7779
const splat = repositories.length === 1;
7880
this.children = repositories.map(
7981
r => new ContributorsRepositoryNode(GitUri.fromRepoPath(r.path), this.view, this, r, splat),

src/views/remotesView.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -52,20 +52,22 @@ export class RemotesViewNode extends RepositoriesSubscribeableNode<RemotesView,
5252
this.view.message = undefined;
5353

5454
if (this.children == null) {
55-
let repositories = this.view.container.git.openRepositories;
56-
if (configuration.get('views.collapseWorktreesWhenPossible')) {
57-
const grouped = await groupRepositories(repositories);
58-
repositories = [...grouped.keys()];
55+
if (this.view.container.git.isDiscoveringRepositories) {
56+
this.view.message = 'Loading remotes...';
57+
await this.view.container.git.isDiscoveringRepositories;
5958
}
6059

60+
let repositories = this.view.container.git.openRepositories;
6161
if (repositories.length === 0) {
62-
this.view.message = this.view.container.git.isDiscoveringRepositories
63-
? 'Loading remotes...'
64-
: 'No remotes could be found.';
65-
62+
this.view.message = 'No remotes could be found.';
6663
return [];
6764
}
6865

66+
if (configuration.get('views.collapseWorktreesWhenPossible')) {
67+
const grouped = await groupRepositories(repositories);
68+
repositories = [...grouped.keys()];
69+
}
70+
6971
const splat = repositories.length === 1;
7072
this.children = repositories.map(
7173
r => new RemotesRepositoryNode(GitUri.fromRepoPath(r.path), this.view, this, r, splat),

src/views/stashesView.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,20 +38,22 @@ export class StashesViewNode extends RepositoriesSubscribeableNode<StashesView,
3838
this.view.message = undefined;
3939

4040
if (this.children == null) {
41-
let repositories = this.view.container.git.openRepositories;
42-
if (configuration.get('views.collapseWorktreesWhenPossible')) {
43-
const grouped = await groupRepositories(repositories);
44-
repositories = [...grouped.keys()];
41+
if (this.view.container.git.isDiscoveringRepositories) {
42+
this.view.message = 'Loading stashes...';
43+
await this.view.container.git.isDiscoveringRepositories;
4544
}
4645

46+
let repositories = this.view.container.git.openRepositories;
4747
if (repositories.length === 0) {
48-
this.view.message = this.view.container.git.isDiscoveringRepositories
49-
? 'Loading stashes...'
50-
: 'No stashes could be found.';
51-
48+
this.view.message = 'No stashes could be found.';
5249
return [];
5350
}
5451

52+
if (configuration.get('views.collapseWorktreesWhenPossible')) {
53+
const grouped = await groupRepositories(repositories);
54+
repositories = [...grouped.keys()];
55+
}
56+
5557
const splat = repositories.length === 1;
5658
this.children = repositories.map(
5759
r => new StashesRepositoryNode(GitUri.fromRepoPath(r.path), this.view, this, r, splat),

src/views/tagsView.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -39,20 +39,22 @@ export class TagsViewNode extends RepositoriesSubscribeableNode<TagsView, TagsRe
3939
this.view.message = undefined;
4040

4141
if (this.children == null) {
42-
let repositories = this.view.container.git.openRepositories;
43-
if (configuration.get('views.collapseWorktreesWhenPossible')) {
44-
const grouped = await groupRepositories(repositories);
45-
repositories = [...grouped.keys()];
42+
if (this.view.container.git.isDiscoveringRepositories) {
43+
this.view.message = 'Loading tags...';
44+
await this.view.container.git.isDiscoveringRepositories;
4645
}
4746

47+
let repositories = this.view.container.git.openRepositories;
4848
if (repositories.length === 0) {
49-
this.view.message = this.view.container.git.isDiscoveringRepositories
50-
? 'Loading tags...'
51-
: 'No tags could be found.';
52-
49+
this.view.message = 'No tags could be found.';
5350
return [];
5451
}
5552

53+
if (configuration.get('views.collapseWorktreesWhenPossible')) {
54+
const grouped = await groupRepositories(repositories);
55+
repositories = [...grouped.keys()];
56+
}
57+
5658
const splat = repositories.length === 1;
5759
this.children = repositories.map(
5860
r => new TagsRepositoryNode(GitUri.fromRepoPath(r.path), this.view, this, r, splat),

src/views/worktreesView.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -58,20 +58,22 @@ export class WorktreesViewNode extends RepositoriesSubscribeableNode<WorktreesVi
5858
const access = await this.view.container.git.access(PlusFeatures.Worktrees);
5959
if (access.allowed === false) return [];
6060

61-
let repositories = this.view.container.git.openRepositories;
62-
if (configuration.get('views.collapseWorktreesWhenPossible')) {
63-
const grouped = await groupRepositories(repositories);
64-
repositories = [...grouped.keys()];
61+
if (this.view.container.git.isDiscoveringRepositories) {
62+
this.view.message = 'Loading worktrees...';
63+
await this.view.container.git.isDiscoveringRepositories;
6564
}
6665

66+
let repositories = this.view.container.git.openRepositories;
6767
if (repositories.length === 0) {
68-
this.view.message = this.view.container.git.isDiscoveringRepositories
69-
? 'Loading worktrees...'
70-
: 'No worktrees could be found.';
71-
68+
this.view.message = 'No worktrees could be found.';
7269
return [];
7370
}
7471

72+
if (configuration.get('views.collapseWorktreesWhenPossible')) {
73+
const grouped = await groupRepositories(repositories);
74+
repositories = [...grouped.keys()];
75+
}
76+
7577
const splat = repositories.length === 1;
7678
this.children = repositories.map(
7779
r => new WorktreesRepositoryNode(GitUri.fromRepoPath(r.path), this.view, this, r, splat),

0 commit comments

Comments
 (0)