Skip to content

Commit 680e23c

Browse files
committed
Adds refresh command for the Graph
1 parent 4719e6e commit 680e23c

File tree

5 files changed

+42
-12
lines changed

5 files changed

+42
-12
lines changed

package.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3965,6 +3965,12 @@
39653965
"category": "GitLens+",
39663966
"icon": "$(gitlens-graph)"
39673967
},
3968+
{
3969+
"command": "gitlens.refreshGraphPage",
3970+
"title": "Refresh",
3971+
"category": "GitLens",
3972+
"icon": "$(refresh)"
3973+
},
39683974
{
39693975
"command": "gitlens.showSettingsPage",
39703976
"title": "Open Settings",
@@ -6424,6 +6430,10 @@
64246430
"command": "gitlens.showGraphPage",
64256431
"when": "gitlens:enabled"
64266432
},
6433+
{
6434+
"command": "gitlens.refreshGraphPage",
6435+
"when": "false"
6436+
},
64276437
{
64286438
"command": "gitlens.showSettingsPage#views",
64296439
"when": "false"
@@ -8159,6 +8169,11 @@
81598169
"command": "gitlens.refreshTimelinePage",
81608170
"when": "gitlens:timelinePage:focused",
81618171
"group": "navigation@-99"
8172+
},
8173+
{
8174+
"command": "gitlens.refreshGraphPage",
8175+
"when": "gitlens:graphPage:focused",
8176+
"group": "navigation@-99"
81628177
}
81638178
],
81648179
"editor/title/context": [

src/constants.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,9 @@ export const enum Commands {
152152
PlusStartPreviewTrial = 'gitlens.plus.startPreviewTrial',
153153
PlusValidate = 'gitlens.plus.validate',
154154
QuickOpenFileHistory = 'gitlens.quickOpenFileHistory',
155+
RefreshGraphPage = 'gitlens.refreshGraphPage',
155156
RefreshHover = 'gitlens.refreshHover',
157+
RefreshTimelinePage = 'gitlens.refreshTimelinePage',
156158
ResetAvatarCache = 'gitlens.resetAvatarCache',
157159
ResetSuppressedWarnings = 'gitlens.resetSuppressedWarnings',
158160
ResetTrackedUsage = 'gitlens.resetTrackedUsage',
@@ -199,7 +201,6 @@ export const enum Commands {
199201
ShowStashesView = 'gitlens.showStashesView',
200202
ShowTagsView = 'gitlens.showTagsView',
201203
ShowWorktreesView = 'gitlens.showWorktreesView',
202-
RefreshTimelinePage = 'gitlens.refreshTimelinePage',
203204
ShowCommitDetailsView = 'gitlens.showCommitDetailsView',
204205
ShowTimelinePage = 'gitlens.showTimelinePage',
205206
ShowTimelineView = 'gitlens.showTimelineView',
@@ -246,6 +247,7 @@ export const enum ContextKeys {
246247
DisabledToggleCodeLens = 'gitlens:disabledToggleCodeLens',
247248
Disabled = 'gitlens:disabled',
248249
Enabled = 'gitlens:enabled',
250+
GraphPageFocused = 'gitlens:graphPage:focused',
249251
HasConnectedRemotes = 'gitlens:hasConnectedRemotes',
250252
HasRemotes = 'gitlens:hasRemotes',
251253
HasRichRemotes = 'gitlens:hasRichRemotes',

src/plus/webviews/graph/graphWebview.ts

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,10 @@ export class GraphWebview extends WebviewBase<State> {
132132
return this.getState();
133133
}
134134

135+
protected override registerCommands(): Disposable[] {
136+
return [registerCommand(Commands.RefreshGraphPage, () => this.refresh(true))];
137+
}
138+
135139
protected override onInitializing(): Disposable[] | undefined {
136140
this._theme = window.activeColorTheme;
137141
return [window.onDidChangeActiveColorTheme(this.onThemeChanged, this)];
@@ -158,9 +162,18 @@ export class GraphWebview extends WebviewBase<State> {
158162
}
159163

160164
protected override onFocusChanged(focused: boolean): void {
161-
if (focused && this.selection != null) {
162-
void GitActions.Commit.showDetailsView(this.selection[0], { pin: true, preserveFocus: true });
165+
if (focused) {
166+
// If we are becoming focused, delay it a bit to give the UI time to update
167+
setTimeout(() => void setContext(ContextKeys.GraphPageFocused, focused), 0);
168+
169+
if (this.selection != null) {
170+
void GitActions.Commit.showDetailsView(this.selection[0], { pin: true, preserveFocus: true });
171+
}
172+
173+
return;
163174
}
175+
176+
void setContext(ContextKeys.GraphPageFocused, focused);
164177
}
165178

166179
protected override onVisibilityChanged(visible: boolean): void {

src/plus/webviews/timeline/timelineWebview.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ export class TimelineWebview extends WebviewBase<State> {
106106
}
107107

108108
protected override registerCommands(): Disposable[] {
109-
return [registerCommand(Commands.RefreshTimelinePage, () => this.refresh())];
109+
return [registerCommand(Commands.RefreshTimelinePage, () => this.refresh(true))];
110110
}
111111

112112
protected override onFocusChanged(focused: boolean): void {

src/webviews/webviewBase.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -103,12 +103,7 @@ export abstract class WebviewBase<State> implements Disposable {
103103

104104
this._panel.webview.html = await this.getHtml(this._panel.webview);
105105
} else {
106-
const html = await this.getHtml(this._panel.webview);
107-
108-
// Reset the html to get the webview to reload
109-
this._panel.webview.html = '';
110-
this._panel.webview.html = html;
111-
106+
await this.refresh(true);
112107
this._panel.reveal(this._panel.viewColumn ?? ViewColumn.Active, false);
113108
}
114109
}
@@ -131,10 +126,15 @@ export abstract class WebviewBase<State> implements Disposable {
131126
protected includeBody?(): string | Promise<string>;
132127
protected includeEndOfBody?(): string | Promise<string>;
133128

134-
protected async refresh(): Promise<void> {
129+
protected async refresh(force?: boolean): Promise<void> {
135130
if (this._panel == null) return;
136131

137-
this._panel.webview.html = await this.getHtml(this._panel.webview);
132+
const html = await this.getHtml(this._panel.webview);
133+
if (force) {
134+
// Reset the html to get the webview to reload
135+
this._panel.webview.html = '';
136+
}
137+
this._panel.webview.html = html;
138138
}
139139

140140
private onPanelDisposed() {

0 commit comments

Comments
 (0)