diff --git a/.changes/next-release/bugfix-6a500e2b-3697-486b-bdd0-9614ab45fb0a.json b/.changes/next-release/bugfix-6a500e2b-3697-486b-bdd0-9614ab45fb0a.json new file mode 100644 index 00000000000..04434867f89 --- /dev/null +++ b/.changes/next-release/bugfix-6a500e2b-3697-486b-bdd0-9614ab45fb0a.json @@ -0,0 +1,4 @@ +{ + "type" : "bugfix", + "description" : "/help does nothing in Q welcome page" +} \ No newline at end of file diff --git a/plugins/amazonq/mynah-ui/src/mynah-ui/ui/connector.ts b/plugins/amazonq/mynah-ui/src/mynah-ui/ui/connector.ts index 6ceb88108c4..60e38c5d118 100644 --- a/plugins/amazonq/mynah-ui/src/mynah-ui/ui/connector.ts +++ b/plugins/amazonq/mynah-ui/src/mynah-ui/ui/connector.ts @@ -50,7 +50,7 @@ export interface ConnectorProps { sendMessageToExtension: (message: ExtensionMessage) => void onMessageReceived?: (tabID: string, messageData: any, needToShowAPIDocsTab: boolean) => void onChatAnswerReceived?: (tabID: string, message: ChatItem) => void - onChatAnswerUpdated?: (tabID: string, message:ChatItem) => void + onChatAnswerUpdated?: (tabID: string, message: ChatItem) => void onCodeTransformChatDisabled: (tabID: string) => void onCodeTransformMessageReceived: ( tabID: string, @@ -224,6 +224,19 @@ export class Connector { case 'codescan': this.codeScanChatConnector.help(tabID) break + case 'welcome': + this.tabsStorage.updateTabTypeFromUnknown(tabID, 'cwc') + this.tabsStorage.updateTabContent(tabID, { + tabHeaderDetails: void 0, + compactMode: false, + tabBackground: false, + promptInputText: '', + promptInputLabel: void 0, + chatItems: [], + tabTitle: 'Chat', + }) + this.cwChatConnector.help(tabID) + break } } @@ -594,7 +607,7 @@ export class Connector { this.cwChatConnector.onSendFeedback(tabId, feedbackPayload) break case 'codetest': - this.codeTestChatConnector.sendFeedback(tabId,feedbackPayload) + this.codeTestChatConnector.sendFeedback(tabId, feedbackPayload) break } } @@ -608,7 +621,7 @@ export class Connector { this.featureDevChatConnector.onChatItemVoted(tabId, messageId, vote) break case 'codetest' : - this.codeTestChatConnector.onChatItemVoted(tabId,messageId,vote) + this.codeTestChatConnector.onChatItemVoted(tabId, messageId, vote) break } } diff --git a/plugins/amazonq/mynah-ui/src/mynah-ui/ui/main.ts b/plugins/amazonq/mynah-ui/src/mynah-ui/ui/main.ts index 1d033f1cc65..47a9daab2b6 100644 --- a/plugins/amazonq/mynah-ui/src/mynah-ui/ui/main.ts +++ b/plugins/amazonq/mynah-ui/src/mynah-ui/ui/main.ts @@ -63,6 +63,9 @@ export const createMynahUI = ( promptInputPlaceholder: 'Session ended.', }) }, + tabMutator: (tabId, data) => { + mynahUI.updateStore(tabId, data) + } }) // Adding the first tab as CWC tab tabsStorage.addTab({ diff --git a/plugins/amazonq/mynah-ui/src/mynah-ui/ui/storages/tabsStorage.ts b/plugins/amazonq/mynah-ui/src/mynah-ui/ui/storages/tabsStorage.ts index 6b36eae6848..2fc36167104 100644 --- a/plugins/amazonq/mynah-ui/src/mynah-ui/ui/storages/tabsStorage.ts +++ b/plugins/amazonq/mynah-ui/src/mynah-ui/ui/storages/tabsStorage.ts @@ -3,6 +3,8 @@ * SPDX-License-Identifier: Apache-2.0 */ +import { MynahUIDataModel } from "@aws/mynah-ui-chat"; + export type TabStatus = 'free' | 'busy' | 'dead' const TabTypes = [ 'cwc', @@ -53,9 +55,11 @@ export class TabsStorage { private lastSelectedTab: Tab | undefined = undefined private tabActivityTimers: Record> = {} private onTabTimeout?: (tabId: string) => void + private tabMutator?: (tabId: string, data: MynahUIDataModel) => void - constructor(props?: { onTabTimeout: (tabId: string) => void }) { + constructor(props?: { onTabTimeout: (tabId: string) => void, tabMutator: (tabId: string, data: MynahUIDataModel) => void }) { this.onTabTimeout = props?.onTabTimeout + this.tabMutator = props?.tabMutator } public addTab(tab: Tab) { @@ -102,6 +106,17 @@ export class TabsStorage { this.tabs.set(tabID, currentTabValue) } + public updateTabContent(tabId: string, dataModel: MynahUIDataModel) { + const currentTabValue = this.tabs.get(tabId) + if (currentTabValue === undefined || currentTabValue.status === 'dead') { + return + } + + if (this.tabMutator) { + this.tabMutator(tabId, dataModel) + } + } + public updateTabTypeFromUnknown(tabID: string, tabType: TabType) { const currentTabValue = this.tabs.get(tabID) if (