Skip to content

Commit 1b06300

Browse files
committed
feedback
1 parent 9edb7d1 commit 1b06300

File tree

2 files changed

+24
-8
lines changed
  • plugins/amazonq

2 files changed

+24
-8
lines changed

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/BrowserConnector.kt

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import com.intellij.ide.BrowserUtil
99
import com.intellij.ide.util.RunOnceUtil
1010
import com.intellij.openapi.project.Project
1111
import com.intellij.ui.jcef.JBCefJSQuery.Response
12-
import fleet.multiplatform.shims.ConcurrentHashMap
1312
import kotlinx.coroutines.CompletableDeferred
1413
import kotlinx.coroutines.channels.awaitClose
1514
import kotlinx.coroutines.coroutineScope
@@ -119,7 +118,6 @@ class BrowserConnector(
119118
) {
120119
var uiReady = CompletableDeferred<Boolean>()
121120
private val chatCommunicationManager = ChatCommunicationManager.getInstance(project)
122-
private val inflightRequestByTabId = ConcurrentHashMap<String, CompletableFuture<String>>() // tab id -> cancellation token
123121

124122
suspend fun connect(
125123
browser: Browser,
@@ -254,7 +252,7 @@ class BrowserConnector(
254252

255253
// We assume there is only one outgoing request per tab because the input is
256254
// blocked when there is an outgoing request
257-
inflightRequestByTabId[tabId] = result
255+
chatCommunicationManager.setInflightRequestForTab(tabId, result)
258256
showResult(result, partialResultToken, tabId, encryptionManager, browser)
259257
}
260258
CHAT_QUICK_ACTION -> {
@@ -274,7 +272,7 @@ class BrowserConnector(
274272

275273
// We assume there is only one outgoing request per tab because the input is
276274
// blocked when there is an outgoing request
277-
inflightRequestByTabId[tabId] = result
275+
chatCommunicationManager.setInflightRequestForTab(tabId, result)
278276

279277
showResult(result, partialResultToken, tabId, encryptionManager, browser)
280278
}
@@ -431,7 +429,7 @@ class BrowserConnector(
431429
}
432430
STOP_CHAT_RESPONSE -> {
433431
val stopResponseRequest = serializer.deserializeChatMessages<StopResponseMessage>(node)
434-
if (inflightRequestByTabId[stopResponseRequest.params.tabId] == null) {
432+
if (!chatCommunicationManager.hasInflightRequest(stopResponseRequest.params.tabId)) {
435433
return
436434
}
437435
cancelInflightRequests(stopResponseRequest.params.tabId)
@@ -473,14 +471,14 @@ class BrowserConnector(
473471
isPartialResult = false
474472
)
475473
browser.postChat(messageToChat)
476-
inflightRequestByTabId.remove(tabId)
474+
chatCommunicationManager.removeInflightRequestForTab(tabId)
477475
}
478476
}
479477

480478
private fun cancelInflightRequests(tabId: String) {
481-
inflightRequestByTabId[tabId]?.let { request ->
479+
chatCommunicationManager.getInflightRequestForTab(tabId)?.let { request ->
482480
request.cancel(true)
483-
inflightRequestByTabId.remove(tabId)
481+
chatCommunicationManager.removeInflightRequestForTab(tabId)
484482
}
485483
}
486484

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import com.google.gson.Gson
77
import com.intellij.openapi.components.Service
88
import com.intellij.openapi.components.service
99
import com.intellij.openapi.project.Project
10+
import fleet.multiplatform.shims.ConcurrentHashMap
1011
import org.eclipse.lsp4j.ProgressParams
1112
import software.aws.toolkits.jetbrains.services.amazonq.lsp.AmazonQLspService
1213
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.ProgressNotificationUtils.getObject
@@ -23,6 +24,23 @@ class ChatCommunicationManager {
2324
private fun getPartialChatMessage(partialResultToken: String): String? =
2425
chatPartialResultMap.getOrDefault(partialResultToken, null)
2526

27+
private val inflightRequestByTabId = ConcurrentHashMap<String, CompletableFuture<String>>()
28+
29+
fun setInflightRequestForTab(tabId: String, result: CompletableFuture<String>) {
30+
inflightRequestByTabId[tabId] = result
31+
}
32+
fun removeInflightRequestForTab(tabId: String) {
33+
inflightRequestByTabId.remove(tabId)
34+
}
35+
36+
fun getInflightRequestForTab(tabId: String): CompletableFuture<String>? {
37+
return inflightRequestByTabId[tabId]
38+
}
39+
40+
fun hasInflightRequest(tabId: String): Boolean {
41+
return inflightRequestByTabId.containsKey(tabId)
42+
}
43+
2644
fun addPartialChatMessage(tabId: String): String {
2745
val partialResultToken: String = UUID.randomUUID().toString()
2846
chatPartialResultMap[partialResultToken] = tabId

0 commit comments

Comments
 (0)