Path: blob/main/src/vs/workbench/contrib/editTelemetry/browser/telemetry/scmAdapter.ts
4798 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { WeakCachedFunction } from '../../../../../base/common/cache.js';6import { Event } from '../../../../../base/common/event.js';7import { observableSignalFromEvent, IReader, IObservable, derived } from '../../../../../base/common/observable.js';8import { URI } from '../../../../../base/common/uri.js';9import { ISCMRepository, ISCMService } from '../../../scm/common/scm.js';1011export class ScmAdapter {12private readonly _repos = new WeakCachedFunction((repo: ISCMRepository) => new ScmRepoAdapter(repo));1314private readonly _reposChangedSignal;1516constructor(17@ISCMService private readonly _scmService: ISCMService18) {19this._reposChangedSignal = observableSignalFromEvent(this, Event.any(this._scmService.onDidAddRepository, this._scmService.onDidRemoveRepository));20}2122public getRepo(uri: URI, reader: IReader | undefined): ScmRepoAdapter | undefined {23this._reposChangedSignal.read(reader);24const repo = this._scmService.getRepository(uri);25if (!repo) {26return undefined;27}28return this._repos.get(repo);29}30}3132export class ScmRepoAdapter {33public readonly headBranchNameObs: IObservable<string | undefined> = derived(reader => this._repo.provider.historyProvider.read(reader)?.historyItemRef.read(reader)?.name);34public readonly headCommitHashObs: IObservable<string | undefined> = derived(reader => this._repo.provider.historyProvider.read(reader)?.historyItemRef.read(reader)?.revision);3536constructor(37private readonly _repo: ISCMRepository38) {39}4041async isIgnored(uri: URI): Promise<boolean> {42return false;43}44}454647