Skip to content

Commit e885c50

Browse files
committed
fix: push banner message to initial tab after chat options are received
1 parent f7543d3 commit e885c50

File tree

3 files changed

+24
-4
lines changed

3 files changed

+24
-4
lines changed

chat-client/src/client/chat.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ import {
4141
CONTEXT_COMMAND_NOTIFICATION_METHOD,
4242
CONVERSATION_CLICK_REQUEST_METHOD,
4343
CREATE_PROMPT_NOTIFICATION_METHOD,
44+
ChatMessage,
4445
ChatOptionsUpdateParams,
4546
ChatParams,
4647
ChatUpdateParams,
@@ -219,6 +220,23 @@ export const createChat = (
219220
const allExistingTabs: MynahUITabStoreModel = mynahUi.getAllTabs()
220221
const highlightCommand = featureConfig.get('highlightCommand')
221222

223+
if (tabFactory.initialTabId && allExistingTabs[tabFactory.initialTabId] && params?.chatNotifications) {
224+
// Edge case: push banner message to initial tab when ChatOptions are received
225+
// Because initial tab is added to MynahUi store at initialisation,
226+
// that tab does not have banner message, which arrives in ChatOptions above.
227+
const store = mynahUi.getTabData(tabFactory.initialTabId)?.getStore() || {}
228+
const chatItems = store.chatItems || []
229+
const updatedInitialItems = tabFactory.getChatItems(false, false, chatItems as ChatMessage[])
230+
231+
// First clear the tab, so that messages are not appended https://github.com/aws/mynah-ui/blob/38608dff905b3790d85c73e2911ec7071c8a8cdf/docs/USAGE.md#using-updatestore-function
232+
mynahUi.updateStore(tabFactory.initialTabId, {
233+
chatItems: [],
234+
})
235+
mynahUi.updateStore(tabFactory.initialTabId, {
236+
chatItems: updatedInitialItems,
237+
})
238+
}
239+
222240
for (const tabId in allExistingTabs) {
223241
mynahUi.updateStore(tabId, {
224242
...tabFactory.getDefaultTabData(),

chat-client/src/client/mynahUi.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,6 @@ export const createMynahUi = (
172172
let disclaimerCardActive = !disclaimerAcknowledged
173173
let programmingModeCardActive = !pairProgrammingCardAcknowledged
174174
let contextCommandGroups: ContextCommandGroups | undefined
175-
const initialTabId = TabFactory.generateUniqueId()
176175

177176
let chatEventHandlers: ChatEventHandler = {
178177
onCodeInsertToCursorPosition(
@@ -234,7 +233,7 @@ export const createMynahUi = (
234233
},
235234
onReady: () => {
236235
messager.onUiReady()
237-
messager.onTabAdd(initialTabId)
236+
messager.onTabAdd(tabFactory.initialTabId)
238237
},
239238
onFileClick: (tabId, filePath, deleted, messageId, eventId, fileDetails) => {
240239
messager.onFileClick({ tabId, filePath, messageId, fullPath: fileDetails?.data?.['fullPath'] })
@@ -486,7 +485,7 @@ export const createMynahUi = (
486485

487486
const mynahUiProps: MynahUIProps = {
488487
tabs: {
489-
[initialTabId]: {
488+
[tabFactory.initialTabId]: {
490489
isSelected: true,
491490
store: {
492491
...tabFactory.createTab(true),

chat-client/src/client/tabs/tabFactory.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ export class TabFactory {
1919
private history: boolean = false
2020
private export: boolean = false
2121
private agenticMode: boolean = false
22+
initialTabId: string
2223

2324
public static generateUniqueId() {
2425
// from https://github.com/aws/mynah-ui/blob/a3799f47ca4b7c02850264e328539a40709a6858/src/helper/guid.ts#L6
@@ -31,7 +32,9 @@ export class TabFactory {
3132
private defaultTabData: DefaultTabData,
3233
private quickActionCommands?: QuickActionCommandGroup[],
3334
private bannerMessage?: ChatMessage
34-
) {}
35+
) {
36+
this.initialTabId = TabFactory.generateUniqueId()
37+
}
3538

3639
public createTab(disclaimerCardActive: boolean): MynahUIDataModel {
3740
const tabData: MynahUIDataModel = {

0 commit comments

Comments
 (0)