mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-02 08:15:56 +01:00
Refactor chat input and session actions to use ISCMService for repository checks
This commit is contained in:
@@ -39,9 +39,8 @@ import { ChatSendResult, IChatService } from '../../common/chatService/chatServi
|
||||
import { ResolvedChatSessionsExtensionPoint, IChatSessionsService } from '../../common/chatSessionsService.js';
|
||||
import { ChatAgentLocation } from '../../common/constants.js';
|
||||
import { PROMPT_LANGUAGE_ID } from '../../common/promptSyntax/promptTypes.js';
|
||||
import { Iterable } from '../../../../../base/common/iterator.js';
|
||||
import { AgentSessionProviders, getAgentSessionProvider, getAgentSessionProviderIcon, getAgentSessionProviderName } from '../agentSessions/agentSessions.js';
|
||||
import { IGitService } from '../../../git/common/gitService.js';
|
||||
import { ISCMService } from '../../../scm/common/scm.js';
|
||||
import { IAgentSessionsService } from '../agentSessions/agentSessionsService.js';
|
||||
import { IChatWidget, IChatWidgetService, isIChatViewViewContext } from '../chat.js';
|
||||
import { ctxHasEditorModification } from '../chatEditing/chatEditingEditorContextKeys.js';
|
||||
@@ -166,11 +165,10 @@ export class ChatContinueInSessionActionItem extends ActionWidgetDropdownActionV
|
||||
@IInstantiationService instantiationService: IInstantiationService,
|
||||
@IOpenerService openerService: IOpenerService,
|
||||
@ITelemetryService telemetryService: ITelemetryService,
|
||||
@IGitService gitService: IGitService,
|
||||
@IChatWidgetService chatWidgetService: IChatWidgetService,
|
||||
@ISCMService scmService: ISCMService,
|
||||
) {
|
||||
super(action, {
|
||||
actionProvider: ChatContinueInSessionActionItem.actionProvider(chatSessionsService, instantiationService, gitService, chatWidgetService, location),
|
||||
actionProvider: ChatContinueInSessionActionItem.actionProvider(chatSessionsService, instantiationService, scmService, location),
|
||||
actionBarActions: ChatContinueInSessionActionItem.getActionBarActions(openerService),
|
||||
reporter: { id: 'ChatContinueInSession', name: 'ChatContinueInSession', includeOptions: true },
|
||||
}, actionWidgetService, keybindingService, contextKeyService, telemetryService);
|
||||
@@ -190,15 +188,12 @@ export class ChatContinueInSessionActionItem extends ActionWidgetDropdownActionV
|
||||
}];
|
||||
}
|
||||
|
||||
private static actionProvider(chatSessionsService: IChatSessionsService, instantiationService: IInstantiationService, gitService: IGitService, chatWidgetService: IChatWidgetService, location: ActionLocation): IActionWidgetDropdownActionProvider {
|
||||
private static actionProvider(chatSessionsService: IChatSessionsService, instantiationService: IInstantiationService, scmService: ISCMService, location: ActionLocation): IActionWidgetDropdownActionProvider {
|
||||
return {
|
||||
getActions: () => {
|
||||
const actions: IActionWidgetDropdownAction[] = [];
|
||||
const contributions = chatSessionsService.getAllChatSessionContributions();
|
||||
const widget = chatWidgetService.lastFocusedWidget;
|
||||
const hasGitRepo = widget?.viewModel?.model.repoData
|
||||
? true
|
||||
: !Iterable.isEmpty(gitService.repositories);
|
||||
const hasGitRepo = scmService.repositoryCount > 0;
|
||||
|
||||
// Continue in Background
|
||||
const backgroundContrib = contributions.find(contrib => contrib.type === AgentSessionProviders.Background);
|
||||
|
||||
@@ -69,6 +69,7 @@ import { IStorageService, StorageScope, StorageTarget } from '../../../../../../
|
||||
import { IThemeService } from '../../../../../../platform/theme/common/themeService.js';
|
||||
import { ISharedWebContentExtractorService } from '../../../../../../platform/webContentExtractor/common/webContentExtractor.js';
|
||||
import { IWorkspaceContextService, WorkbenchState } from '../../../../../../platform/workspace/common/workspace.js';
|
||||
import { ISCMService } from '../../../../scm/common/scm.js';
|
||||
import { IWorkbenchLayoutService, Position } from '../../../../../services/layout/browser/layoutService.js';
|
||||
import { IViewDescriptorService, ViewContainerLocation } from '../../../../../common/views.js';
|
||||
import { ResourceLabels } from '../../../../../browser/labels.js';
|
||||
@@ -545,6 +546,7 @@ export class ChatInputPart extends Disposable implements IHistoryNavigationWidge
|
||||
@IChatContextService private readonly chatContextService: IChatContextService,
|
||||
@IAgentSessionsService private readonly agentSessionsService: IAgentSessionsService,
|
||||
@IWorkspaceContextService private readonly workspaceContextService: IWorkspaceContextService,
|
||||
@ISCMService private readonly scmService: ISCMService,
|
||||
@IWorkbenchLayoutService private readonly layoutService: IWorkbenchLayoutService,
|
||||
@IViewDescriptorService private readonly viewDescriptorService: IViewDescriptorService,
|
||||
@IChatAttachmentWidgetRegistry private readonly _chatAttachmentWidgetRegistry: IChatAttachmentWidgetRegistry,
|
||||
@@ -2289,7 +2291,7 @@ export class ChatInputPart extends Disposable implements IHistoryNavigationWidge
|
||||
this.refreshChatSessionPickers();
|
||||
},
|
||||
hasGitRepository: () => {
|
||||
return !!this._widget?.viewModel?.model.repoData;
|
||||
return this.scmService.repositoryCount > 0;
|
||||
},
|
||||
};
|
||||
const isWelcomeViewMode = !!this.options.sessionTypePickerDelegate?.setActiveSessionProvider;
|
||||
@@ -2391,7 +2393,7 @@ export class ChatInputPart extends Disposable implements IHistoryNavigationWidge
|
||||
this.refreshChatSessionPickers();
|
||||
},
|
||||
hasGitRepository: () => {
|
||||
return !!this._widget?.viewModel?.model.repoData;
|
||||
return this.scmService.repositoryCount > 0;
|
||||
},
|
||||
};
|
||||
const isWelcomeViewMode = !!this.options.sessionTypePickerDelegate?.setActiveSessionProvider;
|
||||
|
||||
Reference in New Issue
Block a user