Skip to content

Commit ccc77f2

Browse files
committed
removing usage of messagebus
1 parent 364f6e8 commit ccc77f2

File tree

4 files changed

+17
-24
lines changed

4 files changed

+17
-24
lines changed

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/toolwindow/AmazonQPanel.kt

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ import software.aws.toolkits.jetbrains.services.amazonq.commands.MessageTypeRegi
3131
import software.aws.toolkits.jetbrains.services.amazonq.isQSupportedInThisVersion
3232
import software.aws.toolkits.jetbrains.services.amazonq.lsp.AmazonQLspService
3333
import software.aws.toolkits.jetbrains.services.amazonq.lsp.artifacts.ArtifactManager
34-
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.AsyncChatUiListener
34+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.ChatCommunicationManager
3535
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.FlareUiMessage
3636
import software.aws.toolkits.jetbrains.services.amazonq.messages.AmazonQMessage
3737
import software.aws.toolkits.jetbrains.services.amazonq.messages.MessageConnector
@@ -65,21 +65,6 @@ class AmazonQPanel(val project: Project, private val scope: CoroutineScope) : Di
6565
private val editorThemeAdapter = EditorThemeAdapter()
6666
private val appConnections = mutableListOf<AppConnection>()
6767

68-
init {
69-
project.messageBus.connect().subscribe(
70-
AsyncChatUiListener.TOPIC,
71-
object : AsyncChatUiListener {
72-
override fun onChange(command: String) {
73-
browser.get()?.postChat(command)
74-
}
75-
76-
override fun onChange(command: FlareUiMessage) {
77-
browser.get()?.postChat(command)
78-
}
79-
}
80-
)
81-
}
82-
8368
val component = panel {
8469
row {
8570
cell(webviewContainer)
@@ -134,6 +119,11 @@ class AmazonQPanel(val project: Project, private val scope: CoroutineScope) : Di
134119
browser.complete(
135120
Browser(this@AmazonQPanel, webUri, project).also { browserInstance ->
136121
wrapper.setContent(browserInstance.component())
122+
123+
// Register direct callback instead of using message bus
124+
ChatCommunicationManager.getInstance(project).setChatUpdateCallback { message ->
125+
browserInstance.postChat(message)
126+
}
137127

138128
// Add DropTarget to the browser component
139129
// JCEF does not propagate OS-level dragenter, dragOver and drop into DOM.

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -399,8 +399,7 @@ class AmazonQLanguageClientImpl(private val project: Project) : AmazonQLanguageC
399399
}
400400

401401
override fun sendChatUpdate(params: LSPAny) {
402-
AsyncChatUiListener.notifyPartialMessageUpdate(
403-
project,
402+
chatManager.notifyUi(
404403
FlareUiMessage(
405404
command = CHAT_SEND_UPDATE,
406405
params = params,

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/flareChat/AsyncChatUiListener.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ interface AsyncChatUiListener : EventListener {
2323
project.messageBus.syncPublisher(TOPIC).onChange(command)
2424
}
2525

26+
// will be removed in next iteration.
2627
@Deprecated("shouldn't need this version")
2728
fun notifyPartialMessageUpdate(project: Project, command: String) {
2829
project.messageBus.syncPublisher(TOPIC).onChange(command)

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/flareChat/ChatCommunicationManager.kt

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,16 @@ class ChatCommunicationManager(private val project: Project, private val cs: Cor
4949
uiReady.complete(true)
5050
}
5151

52+
private var chatUpdateCallback: ((FlareUiMessage) -> Unit)? = null
53+
54+
fun setChatUpdateCallback(callback: (FlareUiMessage) -> Unit) {
55+
chatUpdateCallback = callback
56+
}
57+
5258
fun notifyUi(uiMessage: FlareUiMessage) {
5359
cs.launch {
5460
uiReady.await()
55-
AsyncChatUiListener.notifyPartialMessageUpdate(project, uiMessage)
61+
chatUpdateCallback?.invoke(uiMessage)
5662
}
5763
}
5864

@@ -131,13 +137,10 @@ class ChatCommunicationManager(private val project: Project, private val cs: Cor
131137
val encryptedPartialChatResult = getObject(params, String::class.java)
132138
if (encryptedPartialChatResult != null) {
133139
val partialChatResult = AmazonQLspService.getInstance(project).encryptionManager.decrypt(encryptedPartialChatResult)
134-
val uiMessage = convertToJsonToSendToChat(
140+
notifyUi(FlareUiMessage(
135141
command = SEND_CHAT_COMMAND_PROMPT,
136-
tabId = tabId,
137142
params = partialChatResult,
138-
isPartialResult = true
139-
)
140-
AsyncChatUiListener.notifyPartialMessageUpdate(project, uiMessage)
143+
))
141144
}
142145
}
143146

0 commit comments

Comments
 (0)