Skip to content

Commit da2fd9b

Browse files
authored
Only show workspace stopping notification if window is correct remote window (#51)
1 parent cadeef6 commit da2fd9b

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

src/extension.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ export async function activate(context: vscode.ExtensionContext) {
8989
const remoteConnector = new RemoteConnector(context, sessionService, hostService, experiments, logger, telemetryService, notificationService);
9090
context.subscriptions.push(remoteConnector);
9191

92-
const extensionIPCService = new ExtensionServiceServer(logger, sessionService, hostService, notificationService, telemetryService, experiments);
92+
const extensionIPCService = new ExtensionServiceServer(context, logger, sessionService, hostService, notificationService, telemetryService, experiments);
9393
context.subscriptions.push(extensionIPCService);
9494

9595
context.subscriptions.push(vscode.window.registerUriHandler({

src/local-ssh/ipc/extension.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6+
import * as vscode from 'vscode';
67
import { ExtensionServiceDefinition, ExtensionServiceImplementation, GetWorkspaceAuthInfoRequest, GetWorkspaceAuthInfoResponse, LocalSSHServiceDefinition, PingRequest, SendErrorReportRequest, SendLocalSSHUserFlowStatusRequest, SendLocalSSHUserFlowStatusRequest_Code, SendLocalSSHUserFlowStatusRequest_ConnType, SendLocalSSHUserFlowStatusRequest_Status } from '../../proto/typescript/ipc/v1/ipc';
78
import { Disposable } from '../../common/dispose';
89
import { retry, timeout } from '../../common/async';
@@ -17,7 +18,7 @@ import { CallContext, ServerError, Status } from 'nice-grpc-common';
1718
import { IHostService } from '../../services/hostService';
1819
import { Server, createClient, createServer, createChannel } from 'nice-grpc';
1920
import { INotificationService } from '../../services/notificationService';
20-
import { showWsNotRunningDialog } from '../../remote';
21+
import { getGitpodRemoteWindowConnectionInfo, showWsNotRunningDialog } from '../../remote';
2122
import { ITelemetryService, UserFlowTelemetry } from '../../services/telemetryService';
2223
import { ExperimentalSettings } from '../../experiments';
2324
import { Configuration } from '../../configuration';
@@ -38,9 +39,13 @@ const phaseMap: Record<WorkspaceInstanceStatus_Phase, WorkspaceInstancePhase | u
3839
export class ExtensionServiceImpl implements ExtensionServiceImplementation {
3940
private notificationGapSet = new Set<string>();
4041

41-
constructor(private logService: ILogService, private sessionService: ISessionService, private hostService: IHostService, private notificationService: INotificationService, private experiments: ExperimentalSettings, private telemetryService: ITelemetryService) { }
42+
constructor(private readonly context: vscode.ExtensionContext, private logService: ILogService, private sessionService: ISessionService, private hostService: IHostService, private notificationService: INotificationService, private experiments: ExperimentalSettings, private telemetryService: ITelemetryService) { }
4243

4344
private canShowNotification(id: string) {
45+
let remoteConnectionInfo = getGitpodRemoteWindowConnectionInfo(this.context);
46+
if (!remoteConnectionInfo || remoteConnectionInfo.connectionInfo.workspaceId !== id) {
47+
return false;
48+
}
4449
if (this.notificationGapSet.has(id)) {
4550
return false;
4651
}
@@ -156,6 +161,7 @@ export class ExtensionServiceServer extends Disposable {
156161
private localSSHServiceClient = createClient(LocalSSHServiceDefinition, createChannel('127.0.0.1:' + Configuration.getLocalSshIpcPort()));
157162

158163
constructor(
164+
private readonly context: vscode.ExtensionContext,
159165
private readonly logService: ILogService,
160166
private readonly sessionService: ISessionService,
161167
private readonly hostService: IHostService,
@@ -173,7 +179,7 @@ export class ExtensionServiceServer extends Disposable {
173179

174180
private getServer(): Server {
175181
const server = createServer();
176-
const serviceImpl = new ExtensionServiceImpl(this.logService, this.sessionService, this.hostService, this.notificationService, this.experiments, this.telemetryService);
182+
const serviceImpl = new ExtensionServiceImpl(this.context, this.logService, this.sessionService, this.hostService, this.notificationService, this.experiments, this.telemetryService);
177183
server.add(ExtensionServiceDefinition, serviceImpl);
178184
return server;
179185
}

0 commit comments

Comments
 (0)