Skip to content

Commit 634608a

Browse files
zixlin7manodnyab
andauthored
fix(amazonq): Context menu actions trigger all chat windows (#4744)
* fix(amazonq): chat context menu actions show up in all windows * Update .changes/next-release/bugfix-5fe1eb51-f0eb-4029-a003-35e6322cef48.json Co-authored-by: manodnyab <[email protected]> --------- Co-authored-by: manodnyab <[email protected]>
1 parent c4d050b commit 634608a

File tree

7 files changed

+21
-9
lines changed

7 files changed

+21
-9
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type" : "bugfix",
3+
"description" : "Fix Amazon Q chat context menu actions show up in all chat windows"
4+
}

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/commands/ActionRegistrar.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
package software.aws.toolkits.jetbrains.services.cwc.commands
55

6+
import com.intellij.openapi.project.Project
67
import kotlinx.coroutines.flow.MutableSharedFlow
78
import kotlinx.coroutines.flow.asSharedFlow
89
import software.aws.toolkits.jetbrains.services.amazonq.messages.AmazonQMessage
@@ -13,12 +14,12 @@ class ActionRegistrar {
1314
private val _messages by lazy { MutableSharedFlow<AmazonQMessage>(extraBufferCapacity = 10) }
1415
val flow = _messages.asSharedFlow()
1516

16-
fun reportMessageClick(command: EditorContextCommand) {
17-
_messages.tryEmit(ContextMenuActionMessage(command))
17+
fun reportMessageClick(command: EditorContextCommand, project: Project) {
18+
_messages.tryEmit(ContextMenuActionMessage(command, project))
1819
}
1920

20-
fun reportMessageClick(command: EditorContextCommand, issue: MutableMap<String, String>) {
21-
_messages.tryEmit(CodeScanIssueActionMessage(command, issue))
21+
fun reportMessageClick(command: EditorContextCommand, issue: MutableMap<String, String>, project: Project) {
22+
_messages.tryEmit(CodeScanIssueActionMessage(command, issue, project))
2223
}
2324

2425
// provide singleton access

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/commands/CodeScanIssueActionMessage.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
package software.aws.toolkits.jetbrains.services.cwc.commands
55

6+
import com.intellij.openapi.project.Project
67
import software.aws.toolkits.jetbrains.services.amazonq.messages.AmazonQMessage
78

8-
data class CodeScanIssueActionMessage(val command: EditorContextCommand, val issue: MutableMap<String, String>) : AmazonQMessage
9+
data class CodeScanIssueActionMessage(val command: EditorContextCommand, val issue: MutableMap<String, String>, val project: Project) : AmazonQMessage

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/commands/ContextMenuActionMessage.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@
33

44
package software.aws.toolkits.jetbrains.services.cwc.commands
55

6+
import com.intellij.openapi.project.Project
67
import software.aws.toolkits.jetbrains.services.amazonq.messages.AmazonQMessage
78

89
/**
910
* Event emitted for context menu editor actions
1011
*/
11-
data class ContextMenuActionMessage(val command: EditorContextCommand) : AmazonQMessage
12+
data class ContextMenuActionMessage(val command: EditorContextCommand, val project: Project) : AmazonQMessage

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/commands/CustomAction.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,6 @@ open class CustomAction(private val command: EditorContextCommand) : AnAction(),
2727
else -> TriggerType.ContextMenu
2828
}
2929

30-
ActionRegistrar.instance.reportMessageClick(command)
30+
ActionRegistrar.instance.reportMessageClick(command, project)
3131
}
3232
}

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/commands/codescan/actions/CodeScanQActions.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package software.aws.toolkits.jetbrains.services.cwc.commands.codescan.actions
66
import com.intellij.openapi.actionSystem.ActionManager
77
import com.intellij.openapi.actionSystem.AnAction
88
import com.intellij.openapi.actionSystem.AnActionEvent
9+
import com.intellij.openapi.actionSystem.CommonDataKeys
910
import com.intellij.openapi.actionSystem.DataKey
1011
import com.intellij.openapi.project.DumbAware
1112
import software.aws.toolkits.jetbrains.services.cwc.commands.ActionRegistrar
@@ -15,9 +16,10 @@ open class CodeScanQActions(private val command: EditorContextCommand) : AnActio
1516
override fun actionPerformed(e: AnActionEvent) {
1617
val issueDataKey = DataKey.create<MutableMap<String, String>>("amazonq.codescan.explainissue")
1718
val issueContext = e.getData(issueDataKey) ?: return
19+
val project = e.getData(CommonDataKeys.PROJECT) ?: return
1820

1921
ActionManager.getInstance().getAction("q.openchat").actionPerformed(e)
2022

21-
ActionRegistrar.instance.reportMessageClick(command, issueContext)
23+
ActionRegistrar.instance.reportMessageClick(command, issueContext, project)
2224
}
2325
}

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/controller/ChatController.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -299,12 +299,15 @@ class ChatController private constructor(
299299
"Description: ${message.issue["description"]} \n" +
300300
"Code: $codeSelection"
301301

302-
processPromptActions(prompt, ContextMenuActionMessage(message.command), triggerId, fileContext, modelPrompt)
302+
processPromptActions(prompt, ContextMenuActionMessage(message.command, message.project), triggerId, fileContext, modelPrompt)
303303
}
304304

305305
// JB specific (not in vscode)
306306
override suspend fun processContextMenuCommand(message: ContextMenuActionMessage) {
307307
// Extract context
308+
if (message.project != context.project) {
309+
return
310+
}
308311
val fileContext = contextExtractor.extractContextForTrigger(ExtractionTriggerType.ContextMenu)
309312
val triggerId = UUID.randomUUID().toString()
310313
val codeSelection = "\n```\n${fileContext.focusAreaContext?.codeSelection?.trimIndent()?.trim()}\n```\n"

0 commit comments

Comments
 (0)