Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/extensions/git-base/src/model.ts
3314 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 { EventEmitter, Disposable } from 'vscode';
7
import { toDisposable } from './util';
8
import { RemoteSourceProvider } from './api/git-base';
9
import { IRemoteSourceProviderRegistry } from './remoteProvider';
10
11
export class Model implements IRemoteSourceProviderRegistry {
12
13
private remoteSourceProviders = new Set<RemoteSourceProvider>();
14
15
private _onDidAddRemoteSourceProvider = new EventEmitter<RemoteSourceProvider>();
16
readonly onDidAddRemoteSourceProvider = this._onDidAddRemoteSourceProvider.event;
17
18
private _onDidRemoveRemoteSourceProvider = new EventEmitter<RemoteSourceProvider>();
19
readonly onDidRemoveRemoteSourceProvider = this._onDidRemoveRemoteSourceProvider.event;
20
21
registerRemoteSourceProvider(provider: RemoteSourceProvider): Disposable {
22
this.remoteSourceProviders.add(provider);
23
this._onDidAddRemoteSourceProvider.fire(provider);
24
25
return toDisposable(() => {
26
this.remoteSourceProviders.delete(provider);
27
this._onDidRemoveRemoteSourceProvider.fire(provider);
28
});
29
}
30
31
getRemoteProviders(): RemoteSourceProvider[] {
32
return [...this.remoteSourceProviders.values()];
33
}
34
}
35
36