Skip to content

Commit 98405e6

Browse files
authored
checkpoints cleanup (microsoft#255942)
1 parent dff97cf commit 98405e6

File tree

3 files changed

+10
-12
lines changed

3 files changed

+10
-12
lines changed

src/vs/workbench/contrib/chat/browser/actions/chatClearActions.ts

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ export function registerNewChatActions() {
163163
constructor() {
164164
super({
165165
id: 'workbench.action.chat.redoEdit',
166-
title: localize2('chat.redoEdit.label', "Redo Last Request"),
166+
title: localize2('chat.redoEdit.label', "Redo Checkpoint Restore"),
167167
category: CHAT_CATEGORY,
168168
icon: Codicon.redo,
169169
precondition: ContextKeyExpr.and(ChatContextKeys.chatEditingCanRedo, ChatContextKeys.enabled, ChatContextKeys.editingParticipantRegistered),
@@ -189,7 +189,7 @@ export function registerNewChatActions() {
189189
constructor() {
190190
super({
191191
id: 'workbench.action.chat.redoEdit2',
192-
title: localize2('chat.redoEdit.label2', "Redo Last Request"),
192+
title: localize2('chat.redoEdit.label2', "Redo Checkpoint Restore"),
193193
category: CHAT_CATEGORY,
194194
precondition: ContextKeyExpr.and(ChatContextKeys.chatEditingCanRedo, ChatContextKeys.enabled, ChatContextKeys.editingParticipantRegistered),
195195
f1: true,
@@ -205,16 +205,9 @@ export function registerNewChatActions() {
205205
async runEditingSessionAction(accessor: ServicesAccessor, editingSession: IChatEditingSession) {
206206
const widget = accessor.get(IChatWidgetService);
207207

208-
const redoUntilDone = async () => {
209-
if (!editingSession.canRedo.get()) {
210-
return;
211-
}
212-
208+
while (editingSession.canRedo.get()) {
213209
await editingSession.redoInteraction();
214-
setTimeout(() => redoUntilDone(), 0);
215-
};
216-
217-
await redoUntilDone();
210+
}
218211
widget.lastFocusedWidget?.viewModel?.model.setCheckpoint(undefined);
219212
}
220213
});

src/vs/workbench/contrib/chat/browser/chatEditing/chatEditingActions.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,8 @@ registerAction2(ChatEditingShowChangesAction);
308308
async function restoreSnapshotWithConfirmation(accessor: ServicesAccessor, item: ChatTreeItem): Promise<void> {
309309
const configurationService = accessor.get(IConfigurationService);
310310
const dialogService = accessor.get(IDialogService);
311+
const chatWidgetService = accessor.get(IChatWidgetService);
312+
const widget = chatWidgetService.lastFocusedWidget;
311313
const chatService = accessor.get(IChatService);
312314
const chatModel = chatService.getSession(item.sessionId);
313315
if (!chatModel) {
@@ -360,6 +362,7 @@ async function restoreSnapshotWithConfirmation(accessor: ServicesAccessor, item:
360362
: { confirmed: true };
361363

362364
if (!confirmation.confirmed) {
365+
widget?.viewModel?.model.setCheckpoint(undefined);
363366
return;
364367
}
365368

src/vs/workbench/contrib/chat/browser/chatWidget.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,9 @@ export class ChatWidget extends Disposable implements IChatWidget {
361361
this._register(this.configurationService.onDidChangeConfiguration((e) => {
362362
if (e.affectsConfiguration('chat.renderRelatedFiles')) {
363363
this.renderChatEditingSessionState();
364-
} else if (e.affectsConfiguration(ChatConfiguration.EditRequests) || e.affectsConfiguration(ChatConfiguration.CheckpointsEnabled)) {
364+
}
365+
366+
if (e.affectsConfiguration(ChatConfiguration.EditRequests) || e.affectsConfiguration(ChatConfiguration.CheckpointsEnabled)) {
365367
this.settingChangeCounter++;
366368
this.onDidChangeItems();
367369
}

0 commit comments

Comments
 (0)