Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/workbench/api/browser/mainThreadEditSessionIdentityParticipant.ts
3296 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import { CancellationToken } from '../../../base/common/cancellation.js';
7
import { localize } from '../../../nls.js';
8
import { IInstantiationService } from '../../../platform/instantiation/common/instantiation.js';
9
import { extHostCustomer, IExtHostContext } from '../../services/extensions/common/extHostCustomers.js';
10
import { IDisposable } from '../../../base/common/lifecycle.js';
11
import { raceCancellationError } from '../../../base/common/async.js';
12
import { IEditSessionIdentityCreateParticipant, IEditSessionIdentityService } from '../../../platform/workspace/common/editSessions.js';
13
import { ExtHostContext, ExtHostWorkspaceShape } from '../common/extHost.protocol.js';
14
import { WorkspaceFolder } from '../../../platform/workspace/common/workspace.js';
15
16
class ExtHostEditSessionIdentityCreateParticipant implements IEditSessionIdentityCreateParticipant {
17
18
private readonly _proxy: ExtHostWorkspaceShape;
19
private readonly timeout = 20000;
20
21
constructor(extHostContext: IExtHostContext) {
22
this._proxy = extHostContext.getProxy(ExtHostContext.ExtHostWorkspace);
23
}
24
25
async participate(workspaceFolder: WorkspaceFolder, token: CancellationToken): Promise<void> {
26
const p = new Promise<any>((resolve, reject) => {
27
28
setTimeout(
29
() => reject(new Error(localize('timeout.onWillCreateEditSessionIdentity', "Aborted onWillCreateEditSessionIdentity-event after 10000ms"))),
30
this.timeout
31
);
32
this._proxy.$onWillCreateEditSessionIdentity(workspaceFolder.uri, token, this.timeout).then(resolve, reject);
33
});
34
35
return raceCancellationError(p, token);
36
}
37
}
38
39
@extHostCustomer
40
export class EditSessionIdentityCreateParticipant {
41
42
private _saveParticipantDisposable: IDisposable;
43
44
constructor(
45
extHostContext: IExtHostContext,
46
@IInstantiationService instantiationService: IInstantiationService,
47
@IEditSessionIdentityService private readonly _editSessionIdentityService: IEditSessionIdentityService
48
) {
49
this._saveParticipantDisposable = this._editSessionIdentityService.addEditSessionIdentityCreateParticipant(instantiationService.createInstance(ExtHostEditSessionIdentityCreateParticipant, extHostContext));
50
}
51
52
dispose(): void {
53
this._saveParticipantDisposable.dispose();
54
}
55
}
56
57