33 * Licensed under the MIT License. See License.txt in the project root for license information.
44 *--------------------------------------------------------------------------------------------*/
55
6+ import * as vscode from 'vscode' ;
67import { ExtensionServiceDefinition , ExtensionServiceImplementation , GetWorkspaceAuthInfoRequest , GetWorkspaceAuthInfoResponse , LocalSSHServiceDefinition , PingRequest , SendErrorReportRequest , SendLocalSSHUserFlowStatusRequest , SendLocalSSHUserFlowStatusRequest_Code , SendLocalSSHUserFlowStatusRequest_ConnType , SendLocalSSHUserFlowStatusRequest_Status } from '../../proto/typescript/ipc/v1/ipc' ;
78import { Disposable } from '../../common/dispose' ;
89import { retry , timeout } from '../../common/async' ;
@@ -17,7 +18,7 @@ import { CallContext, ServerError, Status } from 'nice-grpc-common';
1718import { IHostService } from '../../services/hostService' ;
1819import { Server , createClient , createServer , createChannel } from 'nice-grpc' ;
1920import { INotificationService } from '../../services/notificationService' ;
20- import { showWsNotRunningDialog } from '../../remote' ;
21+ import { getGitpodRemoteWindowConnectionInfo , showWsNotRunningDialog } from '../../remote' ;
2122import { ITelemetryService , UserFlowTelemetry } from '../../services/telemetryService' ;
2223import { ExperimentalSettings } from '../../experiments' ;
2324import { Configuration } from '../../configuration' ;
@@ -38,9 +39,13 @@ const phaseMap: Record<WorkspaceInstanceStatus_Phase, WorkspaceInstancePhase | u
3839export 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