Skip to content

Commit 5d7a0aa

Browse files
committed
feat(chat): preserve fileList while removing buttons on code diff accept/reject
1 parent 8600846 commit 5d7a0aa

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

packages/core/src/amazonq/webview/ui/apps/cwChatConnector.ts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ export class Connector extends BaseConnector {
3434
private readonly onContextCommandDataReceived
3535
private readonly onShowCustomForm
3636
private readonly onChatAnswerUpdated
37+
private chatItems: Map<string, Map<string, ChatItem>> = new Map() // tabId -> messageId -> ChatItem
3738

3839
override getTabType(): TabType {
3940
return 'cwc'
@@ -122,6 +123,10 @@ export class Connector extends BaseConnector {
122123
content: messageData.relatedSuggestions,
123124
}
124125
}
126+
127+
if (answer.messageId) {
128+
this.storeChatItem(messageData.tabID, answer.messageId, answer)
129+
}
125130
this.onChatAnswerReceived(messageData.tabID, answer, messageData)
126131

127132
// Exit the function if we received an answer from AI
@@ -163,6 +168,17 @@ export class Connector extends BaseConnector {
163168
}
164169
}
165170

171+
private storeChatItem(tabId: string, messageId: string, item: ChatItem): void {
172+
if (!this.chatItems.has(tabId)) {
173+
this.chatItems.set(tabId, new Map())
174+
}
175+
this.chatItems.get(tabId)?.set(messageId, { ...item })
176+
}
177+
178+
private getCurrentChatItem(tabId: string, messageId: string): ChatItem | undefined {
179+
return this.chatItems.get(tabId)?.get(messageId)
180+
}
181+
166182
processContextCommandData(messageData: any) {
167183
if (messageData.data) {
168184
this.onContextCommandDataReceived(messageData.data)
@@ -281,11 +297,14 @@ export class Connector extends BaseConnector {
281297
}
282298
// Can not assign body as "undefined" or "null" because both of these values will be overriden at main.ts in onChatAnswerUpdated
283299
// TODO: Refactor in next PR if necessary.
300+
301+
const currentChatItem = this.getCurrentChatItem(tabId, messageId)
284302
const answer: ChatItem = {
285303
type: ChatItemType.ANSWER,
286304
messageId: messageId,
287305
buttons: [],
288306
body: ' ',
307+
header: currentChatItem?.header ? { ...currentChatItem.header } : {},
289308
}
290309
switch (action.id) {
291310
case 'accept-code-diff':
@@ -295,6 +314,7 @@ export class Connector extends BaseConnector {
295314
text: 'Accepted',
296315
status: 'success',
297316
}
317+
answer.header.buttons = []
298318
}
299319
break
300320
case 'reject-code-diff':
@@ -304,6 +324,7 @@ export class Connector extends BaseConnector {
304324
text: 'Rejected',
305325
status: 'error',
306326
}
327+
answer.header.buttons = []
307328
}
308329
break
309330
case 'confirm-tool-use':
@@ -321,6 +342,14 @@ export class Connector extends BaseConnector {
321342
default:
322343
break
323344
}
345+
// eslint-disable-next-line aws-toolkits/no-console-log
346+
console.log(`[onCustomFormAction]: ${answer.body}`)
347+
348+
if (currentChatItem && answer.messageId) {
349+
const updatedItem = { ...currentChatItem, ...answer }
350+
this.storeChatItem(tabId, answer.messageId, updatedItem)
351+
}
352+
324353
this.onChatAnswerUpdated(tabId, answer)
325354
}
326355

0 commit comments

Comments
 (0)