Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/extensions/git/src/historyItemDetailsProvider.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 { Command, Disposable } from 'vscode';
7
import { AvatarQuery, SourceControlHistoryItemDetailsProvider } from './api/git';
8
import { Repository } from './repository';
9
import { ApiRepository } from './api/api1';
10
11
export interface ISourceControlHistoryItemDetailsProviderRegistry {
12
registerSourceControlHistoryItemDetailsProvider(provider: SourceControlHistoryItemDetailsProvider): Disposable;
13
getSourceControlHistoryItemDetailsProviders(): SourceControlHistoryItemDetailsProvider[];
14
}
15
16
export async function provideSourceControlHistoryItemAvatar(
17
registry: ISourceControlHistoryItemDetailsProviderRegistry,
18
repository: Repository,
19
query: AvatarQuery
20
): Promise<Map<string, string | undefined> | undefined> {
21
for (const provider of registry.getSourceControlHistoryItemDetailsProviders()) {
22
const result = await provider.provideAvatar(new ApiRepository(repository), query);
23
24
if (result) {
25
return result;
26
}
27
}
28
29
return undefined;
30
}
31
32
export async function provideSourceControlHistoryItemHoverCommands(
33
registry: ISourceControlHistoryItemDetailsProviderRegistry,
34
repository: Repository
35
): Promise<Command[] | undefined> {
36
for (const provider of registry.getSourceControlHistoryItemDetailsProviders()) {
37
const result = await provider.provideHoverCommands(new ApiRepository(repository));
38
39
if (result) {
40
return result;
41
}
42
}
43
44
return undefined;
45
}
46
47
export async function provideSourceControlHistoryItemMessageLinks(
48
registry: ISourceControlHistoryItemDetailsProviderRegistry,
49
repository: Repository,
50
message: string
51
): Promise<string | undefined> {
52
for (const provider of registry.getSourceControlHistoryItemDetailsProviders()) {
53
const result = await provider.provideMessageLinks(
54
new ApiRepository(repository), message);
55
56
if (result) {
57
return result;
58
}
59
}
60
61
return undefined;
62
}
63
64