Files
vscode/extensions/git/src/historyItemDetailsProvider.ts
2026-02-26 14:10:15 -08:00

63 lines
2.1 KiB
TypeScript

/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { Command, Disposable } from 'vscode';
import type { AvatarQuery, SourceControlHistoryItemDetailsProvider } from './api/git';
import { Repository } from './repository';
import { ApiRepository } from './api/api1';
export interface ISourceControlHistoryItemDetailsProviderRegistry {
registerSourceControlHistoryItemDetailsProvider(provider: SourceControlHistoryItemDetailsProvider): Disposable;
getSourceControlHistoryItemDetailsProviders(): SourceControlHistoryItemDetailsProvider[];
}
export async function provideSourceControlHistoryItemAvatar(
registry: ISourceControlHistoryItemDetailsProviderRegistry,
repository: Repository,
query: AvatarQuery
): Promise<Map<string, string | undefined> | undefined> {
for (const provider of registry.getSourceControlHistoryItemDetailsProviders()) {
const result = await provider.provideAvatar(new ApiRepository(repository), query);
if (result) {
return result;
}
}
return undefined;
}
export async function provideSourceControlHistoryItemHoverCommands(
registry: ISourceControlHistoryItemDetailsProviderRegistry,
repository: Repository
): Promise<Command[] | undefined> {
for (const provider of registry.getSourceControlHistoryItemDetailsProviders()) {
const result = await provider.provideHoverCommands(new ApiRepository(repository));
if (result) {
return result;
}
}
return undefined;
}
export async function provideSourceControlHistoryItemMessageLinks(
registry: ISourceControlHistoryItemDetailsProviderRegistry,
repository: Repository,
message: string
): Promise<string | undefined> {
for (const provider of registry.getSourceControlHistoryItemDetailsProviders()) {
const result = await provider.provideMessageLinks(
new ApiRepository(repository), message);
if (result) {
return result;
}
}
return undefined;
}