Skip to content

Commit fa60de4

Browse files
authored
fix(vscode): make sure diff is closed alongside the ai fix view (#2578)
1 parent b29bb65 commit fa60de4

File tree

3 files changed

+30
-5
lines changed

3 files changed

+30
-5
lines changed

libs/vscode/nx-cloud-fix-webview/src/main.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ export class Root extends LitElement {
3030
super.connectedCallback();
3131
// Listen for messages from the extension
3232
window.addEventListener('message', (event) => {
33-
console.log('Received message from extension:', event);
3433
if (event.data.type === 'update-details') {
3534
globalThis.fixDetails = event.data.details as NxCloudFixData;
3635
this.requestUpdate();

libs/vscode/nx-cloud-view/src/init-nx-cloud-view.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,14 @@ import { CloudOnboardingViewProvider } from './cloud-onboarding-view';
2929
import { CloudRecentCIPEProvider } from './cloud-recent-cipe-view';
3030
import { machine } from './cloud-view-state-machine';
3131
import { TelemetryEventSource } from '@nx-console/shared-telemetry';
32-
import { NxCloudFixWebview } from './nx-cloud-fix-webview';
32+
import {
33+
closeCloudFixDiffTab,
34+
NxCloudFixWebview,
35+
} from './nx-cloud-fix-webview';
3336

3437
export function initNxCloudView(context: ExtensionContext) {
38+
closeCloudFixDiffTab();
39+
3540
// set up state machine & listeners
3641
const actor = createActor(
3742
machine.provide({

libs/vscode/nx-cloud-view/src/nx-cloud-fix-webview.ts

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,16 @@ import { getNxCloudStatus } from '@nx-console/vscode-nx-workspace';
1111
import { outputLogger } from '@nx-console/vscode-output-channels';
1212
import { getTelemetry } from '@nx-console/vscode-telemetry';
1313
import { getWorkspacePath, GitExtension } from '@nx-console/vscode-utils';
14+
import { unlink, writeFile } from 'fs/promises';
15+
import { tmpdir } from 'os';
1416
import { join } from 'path';
1517
import { xhr } from 'request-light';
1618
import {
1719
commands,
1820
EventEmitter,
1921
ExtensionContext,
2022
extensions,
23+
Tab,
2124
Uri,
2225
ViewColumn,
2326
WebviewPanel,
@@ -27,8 +30,6 @@ import {
2730
import { ActorRef, EventObject } from 'xstate';
2831
import { DiffContentProvider, parseGitDiff } from './diffs/diff-provider';
2932
import { createUnifiedDiffView } from './nx-cloud-fix-tree-item';
30-
import { unlink, writeFile } from 'fs/promises';
31-
import { tmpdir } from 'os';
3233

3334
export interface NxCloudFixDetails {
3435
cipe: CIPEInfo;
@@ -110,10 +111,13 @@ export class NxCloudFixWebview {
110111
},
111112
);
112113

113-
this.webviewPanel.onDidDispose(() => {
114+
this.webviewPanel.onDidDispose(async () => {
114115
this.webviewPanel = undefined;
115116
this.currentFixDetails = undefined;
116117
this._onDispose.fire();
118+
119+
// Close the diff tab associated with this fix
120+
await closeCloudFixDiffTab();
117121
});
118122

119123
this.webviewPanel.webview.html = this.getWebviewHtml(
@@ -567,3 +571,20 @@ async function updateSuggestedFix(
567571
return false;
568572
}
569573
}
574+
575+
export async function closeCloudFixDiffTab() {
576+
const diffTab = window.tabGroups.all
577+
.flatMap((g) => g.tabs)
578+
.find((t) => isCloudFixTab(t));
579+
580+
if (diffTab) {
581+
await window.tabGroups.close(diffTab, true);
582+
}
583+
}
584+
585+
function isCloudFixTab(tab: Tab): boolean {
586+
return (
587+
(tab as any)?.input?.textDiffs?.[0]?.original?.scheme ===
588+
'nx-cloud-fix-before'
589+
);
590+
}

0 commit comments

Comments
 (0)