From 316590e3fe37402ba8c08f6acd3c2ea227f9f851 Mon Sep 17 00:00:00 2001 From: Eric Amodio <eamodio@gmail.com> Date: Fri, 8 Jan 2021 03:36:47 -0500 Subject: [PATCH] Fixes refresh issue when going from none to some --- CHANGELOG.md | 1 + src/views/branchesView.ts | 3 +++ src/views/contributorsView.ts | 3 +++ src/views/nodes/viewNode.ts | 10 +++++----- src/views/remotesView.ts | 3 +++ src/views/stashesView.ts | 3 +++ src/views/tagsView.ts | 3 +++ 7 files changed, 21 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e765306..7e985ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this p - Fixes [#1308](https://github.com/eamodio/vscode-gitlens/issues/1308) - Escape quotes for PRs titles - Fixes [#1309](https://github.com/eamodio/vscode-gitlens/issues/1309) - "Fetch" not working on remote branches +- Fixes an issue where many views wouldn't refresh properly when going from no items to some items ## [11.1.3] - 2021-01-05 diff --git a/src/views/branchesView.ts b/src/views/branchesView.ts index 2b18c49..0c2e91a 100644 --- a/src/views/branchesView.ts +++ b/src/views/branchesView.ts @@ -88,6 +88,9 @@ export class BranchesViewNode extends ViewNode<BranchesView> { const branches = await child.repo.getBranches({ filter: b => !b.remote }); if (branches.length === 0) { this.view.message = 'No branches could be found.'; + this.view.title = 'Branches'; + + void child.ensureSubscription(); return []; } diff --git a/src/views/contributorsView.ts b/src/views/contributorsView.ts index 03e4828..409c34f 100644 --- a/src/views/contributorsView.ts +++ b/src/views/contributorsView.ts @@ -67,6 +67,9 @@ export class ContributorsViewNode extends ViewNode<ContributorsView> { const contributors = await child.repo.getContributors(); if (contributors.length === 0) { this.view.message = 'No contributors could be found.'; + this.view.title = 'Contributors'; + + void child.ensureSubscription(); return []; } diff --git a/src/views/nodes/viewNode.ts b/src/views/nodes/viewNode.ts index af2581e..ac08200 100644 --- a/src/views/nodes/viewNode.ts +++ b/src/views/nodes/viewNode.ts @@ -176,7 +176,7 @@ export abstract class SubscribeableViewNode<TView extends View = View> extends V protected disposable: Disposable; protected subscription: Promise<Disposable | undefined> | undefined; - private _loaded: boolean = false; + protected loaded: boolean = false; constructor(uri: GitUri, view: TView, parent?: ViewNode) { super(uri, view, parent); @@ -192,14 +192,14 @@ export abstract class SubscribeableViewNode<TView extends View = View> extends V const getTreeItem = this.getTreeItem; this.getTreeItem = function (this: SubscribeableViewNode<TView>) { - this._loaded = true; + this.loaded = true; void this.ensureSubscription(); return getTreeItem.apply(this); }; const getChildren = this.getChildren; this.getChildren = function (this: SubscribeableViewNode<TView>) { - this._loaded = true; + this.loaded = true; void this.ensureSubscription(); return getChildren.apply(this); }; @@ -217,7 +217,7 @@ export abstract class SubscribeableViewNode<TView extends View = View> extends V @gate() @debug() async triggerChange(reset: boolean = false, force: boolean = false): Promise<void> { - if (!this._loaded) return; + if (!this.loaded) return; await super.triggerChange(reset, force); } @@ -423,7 +423,7 @@ export abstract class RepositoryFolderNode< } if (this.changed(e)) { - void this.triggerChange(true); + void (this.loaded ? this : this.parent ?? this).triggerChange(true); } } } diff --git a/src/views/remotesView.ts b/src/views/remotesView.ts index 4cd678c..2bf9bb4 100644 --- a/src/views/remotesView.ts +++ b/src/views/remotesView.ts @@ -83,6 +83,9 @@ export class RemotesViewNode extends ViewNode<RemotesView> { const remotes = await child.repo.getRemotes(); if (remotes.length === 0) { this.view.message = 'No remotes could be found.'; + this.view.title = 'Remotes'; + + void child.ensureSubscription(); return []; } diff --git a/src/views/stashesView.ts b/src/views/stashesView.ts index aec3323..5109e5a 100644 --- a/src/views/stashesView.ts +++ b/src/views/stashesView.ts @@ -65,6 +65,9 @@ export class StashesViewNode extends ViewNode<StashesView> { const stash = await child.repo.getStash(); if (stash == null) { this.view.message = 'No stashes could be found.'; + this.view.title = 'Stashes'; + + void child.ensureSubscription(); return []; } diff --git a/src/views/tagsView.ts b/src/views/tagsView.ts index ad9ce73..c8c902e 100644 --- a/src/views/tagsView.ts +++ b/src/views/tagsView.ts @@ -66,6 +66,9 @@ export class TagsViewNode extends ViewNode<TagsView> { const tags = await child.repo.getTags(); if (tags.length === 0) { this.view.message = 'No tags could be found.'; + this.view.title = 'Tags'; + + void child.ensureSubscription(); return []; }