Skip to content

Commit 1cb3cca

Browse files
committed
handle error properly
1 parent 87643f7 commit 1cb3cca

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

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

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import kotlinx.coroutines.flow.onEach
2727
import kotlinx.coroutines.launch
2828
import org.cef.browser.CefBrowser
2929
import org.eclipse.lsp4j.TextDocumentIdentifier
30+
import org.eclipse.lsp4j.jsonrpc.ResponseErrorException
3031
import software.aws.toolkits.core.utils.error
3132
import software.aws.toolkits.core.utils.getLogger
3233
import software.aws.toolkits.core.utils.warn
@@ -94,6 +95,7 @@ import software.aws.toolkits.jetbrains.settings.MeetQSettings
9495
import software.aws.toolkits.telemetry.MetricResult
9596
import software.aws.toolkits.telemetry.Telemetry
9697
import java.util.concurrent.CompletableFuture
98+
import java.util.concurrent.CompletionException
9799
import java.util.function.Function
98100

99101
class BrowserConnector(
@@ -382,6 +384,7 @@ class BrowserConnector(
382384

383385
CHAT_TAB_BAR_ACTIONS -> {
384386
handleChat(AmazonQChatServer.tabBarActions, node) { params, invoke ->
387+
println("handling TabBarActions")
385388
invoke()
386389
.whenComplete { actions, error ->
387390
try {
@@ -396,9 +399,14 @@ class BrowserConnector(
396399
)
397400
)
398401
} catch (e: Exception) {
399-
LOG.error { "Failed to perform chat tab bar action $e" }
400-
params.tabId?.let {
401-
browser.postChat(chatCommunicationManager.getErrorUiMessage(it, e, null))
402+
val cause = if (e is CompletionException) e.cause else e
403+
404+
// dont post error to UI if user cancels export
405+
if (!(cause is ResponseErrorException && cause.responseError.message == "Export cancelled by user")) {
406+
LOG.error { "Failed to perform chat tab bar action $e" }
407+
params.tabId?.let {
408+
browser.postChat(chatCommunicationManager.getErrorUiMessage(it, e, null))
409+
}
402410
}
403411
}
404412
}

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ import org.eclipse.lsp4j.PublishDiagnosticsParams
2222
import org.eclipse.lsp4j.ShowDocumentParams
2323
import org.eclipse.lsp4j.ShowDocumentResult
2424
import org.eclipse.lsp4j.ShowMessageRequestParams
25+
import org.eclipse.lsp4j.jsonrpc.ResponseErrorException
26+
import org.eclipse.lsp4j.jsonrpc.messages.ResponseError
27+
import org.eclipse.lsp4j.jsonrpc.messages.ResponseErrorCode
2528
import org.slf4j.event.Level
2629
import software.aws.toolkits.core.utils.error
2730
import software.aws.toolkits.core.utils.getLogger
@@ -215,8 +218,7 @@ class AmazonQLanguageClientImpl(private val project: Project) : AmazonQLanguageC
215218

216219
chosenFile?.let {
217220
ShowSaveFileDialogResult(chosenFile.file.path)
218-
// TODO: Add error state shown in chat ui instead of throwing
219-
} ?: throw Error("Export failed")
221+
} ?: throw ResponseErrorException(ResponseError(ResponseErrorCode.RequestCancelled, "Export cancelled by user", null))
220222
},
221223
ApplicationManager.getApplication()::invokeLater
222224
)

0 commit comments

Comments
 (0)