Skip to content

Commit 23aa131

Browse files
committed
Adds home.preview.enabled setting
1 parent cea6253 commit 23aa131

File tree

6 files changed

+60
-7
lines changed

6 files changed

+60
-7
lines changed

package.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1223,6 +1223,20 @@
12231223
}
12241224
}
12251225
},
1226+
{
1227+
"id": "home",
1228+
"title": "Home",
1229+
"order": 55,
1230+
"properties": {
1231+
"gitlens.home.preview.enabled": {
1232+
"type": "boolean",
1233+
"default": false,
1234+
"markdownDescription": "Specifies whether to enable the new home preview",
1235+
"scope": "window",
1236+
"order": 10
1237+
}
1238+
}
1239+
},
12261240
{
12271241
"id": "launchpad",
12281242
"title": "Launchpad (ᴘʀᴏ)",

src/config.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,11 @@ export interface Config {
8989
readonly command: string | null;
9090
readonly dismissOnEscape: boolean;
9191
};
92+
readonly home: {
93+
readonly preview: {
94+
readonly enabled: boolean;
95+
};
96+
};
9297
readonly launchpad: {
9398
readonly allowMultiple: boolean;
9499
readonly includedOrganizations: string[];

src/webviews/apps/home/home.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import './home.scss';
33
import { provide } from '@lit/context';
44
import { html } from 'lit';
55
import { customElement, query } from 'lit/decorators.js';
6+
import { when } from 'lit/directives/when.js';
67
import type { State } from '../../home/protocol';
78
import { DidFocusAccount } from '../../home/protocol';
89
import { OverviewState, overviewStateContext } from '../plus/home/components/overviewState';
@@ -68,13 +69,15 @@ export class GlHomeApp extends GlApp<State> {
6869
<main class="home__main scrollable" id="main">
6970
<gl-onboarding></gl-onboarding>
7071
<gl-integration-banner></gl-integration-banner>
71-
<gl-active-work></gl-active-work>
72-
<gl-launchpad></gl-launchpad>
73-
<gl-overview></gl-overview>
74-
<details>
75-
<summary>GitLens Features</summary>
76-
<gl-feature-nav .badgeSource=${this.badgeSource}></gl-feature-nav>
77-
</details>
72+
${when(
73+
this.state.previewEnabled,
74+
() => html`
75+
<gl-active-work></gl-active-work>
76+
<gl-launchpad></gl-launchpad>
77+
<gl-overview></gl-overview>
78+
`,
79+
() => html` <gl-feature-nav .badgeSource=${this.badgeSource}></gl-feature-nav> `,
80+
)}
7881
</main>
7982
8083
<footer class="home__footer">

src/webviews/apps/home/stateProvider.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import type { State } from '../../home/protocol';
44
import {
55
DidChangeIntegrationsConnections,
66
DidChangeOrgSettings,
7+
DidChangePreviewEnabled,
78
DidChangeRepositories,
89
DidChangeSubscription,
910
DidChangeWalkthroughProgress,
@@ -62,6 +63,14 @@ export class HomeStateProvider implements Disposable {
6263

6364
this.provider.setValue(this.state, true);
6465
break;
66+
67+
case DidChangePreviewEnabled.is(msg):
68+
this.state.previewEnabled = msg.params;
69+
this.state.timestamp = Date.now();
70+
71+
this.provider.setValue(this.state, true);
72+
host.requestUpdate?.();
73+
break;
6574
}
6675
});
6776
}

src/webviews/home/homeWebview.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import type { ConfigurationChangeEvent } from 'vscode';
12
import { Disposable, workspace } from 'vscode';
23
import { getAvatarUriFromGravatarEmail } from '../../avatars';
34
import type { ContextKeys } from '../../constants.context';
@@ -14,6 +15,7 @@ import { getLaunchpadSummary } from '../../plus/launchpad/utils';
1415
import { map } from '../../system/iterable';
1516
import { getSettledValue } from '../../system/promise';
1617
import { registerCommand } from '../../system/vscode/command';
18+
import { configuration } from '../../system/vscode/configuration';
1719
import { getContext, onDidChangeContext } from '../../system/vscode/context';
1820
import type { IpcMessage } from '../protocol';
1921
import type { WebviewHost, WebviewProvider, WebviewShowingArgs } from '../webviewProvider';
@@ -30,6 +32,7 @@ import {
3032
CollapseSectionCommand,
3133
DidChangeIntegrationsConnections,
3234
DidChangeOrgSettings,
35+
DidChangePreviewEnabled,
3336
DidChangeRepositories,
3437
DidChangeSubscription,
3538
DidChangeWalkthroughProgress,
@@ -63,6 +66,7 @@ export class HomeWebviewProvider implements WebviewProvider<State, State, HomeWe
6366
onDidChangeContext(this.onContextChanged, this),
6467
this.container.integrations.onDidChangeConnectionState(this.onChangeConnectionState, this),
6568
this.container.walkthrough.onProgressChanged(this.onWalkthroughChanged, this),
69+
configuration.onDidChange(this.onDidChangeConfig, this),
6670
);
6771
}
6872

@@ -105,6 +109,12 @@ export class HomeWebviewProvider implements WebviewProvider<State, State, HomeWe
105109
this.notifyDidChangeProgress();
106110
}
107111

112+
private onDidChangeConfig(e?: ConfigurationChangeEvent) {
113+
if (configuration.changed(e, 'home.preview.enabled')) {
114+
this.notifyDidChangeConfig();
115+
}
116+
}
117+
108118
registerCommands(): Disposable[] {
109119
return [
110120
registerCommand(`${this.host.id}.refresh`, () => this.host.refresh(true), this),
@@ -233,9 +243,14 @@ export class HomeWebviewProvider implements WebviewProvider<State, State, HomeWe
233243
progress: this.container.walkthrough.progress,
234244
},
235245
showWalkthroughProgress: !this.getWalkthroughDismissed(),
246+
previewEnabled: this.getPreviewEnabled(),
236247
};
237248
}
238249

250+
private getPreviewEnabled() {
251+
return configuration.get('home.preview.enabled') ?? false;
252+
}
253+
239254
private getRepositoriesState(): DidChangeRepositoriesParams {
240255
return {
241256
count: this.container.git.repositoryCount,
@@ -287,6 +302,10 @@ export class HomeWebviewProvider implements WebviewProvider<State, State, HomeWe
287302
});
288303
}
289304

305+
private notifyDidChangeConfig() {
306+
void this.host.notify(DidChangePreviewEnabled, this.getPreviewEnabled());
307+
}
308+
290309
private notifyDidChangeOnboardingIntegration() {
291310
// force rechecking
292311
const isConnected = this.isAnyIntegrationConnected(true);

src/webviews/home/protocol.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ export interface State extends WebviewState {
2424
progress: number;
2525
};
2626
showWalkthroughProgress?: boolean;
27+
previewEnabled?: boolean;
2728
}
2829

2930
// REQUESTS
@@ -120,6 +121,8 @@ export const DismissWalkthroughSection = new IpcCommand<void>(scope, 'walkthroug
120121

121122
// NOTIFICATIONS
122123

124+
export const DidChangePreviewEnabled = new IpcNotification<boolean>(scope, 'previewEnabled/didChange');
125+
123126
export interface DidChangeRepositoriesParams {
124127
count: number;
125128
openCount: number;

0 commit comments

Comments
 (0)