mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-23 01:58:53 +01:00
sessions - support to open a session in a protocol link opened window (#296962)
This commit is contained in:
@@ -110,6 +110,7 @@ import { ExtensionsScannerService } from '../../platform/extensionManagement/nod
|
||||
import { UserDataProfilesHandler } from '../../platform/userDataProfile/electron-main/userDataProfilesHandler.js';
|
||||
import { ProfileStorageChangesListenerChannel } from '../../platform/userDataProfile/electron-main/userDataProfileStorageIpc.js';
|
||||
import { Promises, RunOnceScheduler, runWhenGlobalIdle } from '../../base/common/async.js';
|
||||
import { CancellationToken } from '../../base/common/cancellation.js';
|
||||
import { resolveMachineId, resolveSqmId, resolveDevDeviceId, validateDevDeviceId } from '../../platform/telemetry/electron-main/telemetryUtils.js';
|
||||
import { ExtensionsProfileScannerService } from '../../platform/extensionManagement/node/extensionsProfileScannerService.js';
|
||||
import { LoggerChannel } from '../../platform/log/electron-main/logIpc.js';
|
||||
@@ -927,6 +928,15 @@ export class CodeApplication extends Disposable {
|
||||
this.environmentMainService.continueOn = continueOn ?? undefined;
|
||||
}
|
||||
|
||||
// Extract session parameter to open a specific chat session in the target window
|
||||
const session = params.get('session');
|
||||
if (session !== null) {
|
||||
this.logService.trace(`app#handleProtocolUrl() found 'session' as parameter:`, uri.toString(true));
|
||||
|
||||
params.delete('session');
|
||||
uri = uri.with({ query: params.toString() });
|
||||
}
|
||||
|
||||
// Check if the protocol URL is a window openable to open...
|
||||
const windowOpenableFromProtocolUrl = this.getWindowOpenableFromProtocolUrl(uri);
|
||||
if (windowOpenableFromProtocolUrl) {
|
||||
@@ -948,6 +958,11 @@ export class CodeApplication extends Disposable {
|
||||
|
||||
window?.focus(); // this should help ensuring that the right window gets focus when multiple are opened
|
||||
|
||||
// Open chat session in the target window if requested
|
||||
if (window && session) {
|
||||
window.sendWhenReady('vscode:openChatSession', CancellationToken.None, session);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user