Skip to content

Commit 3d2a62f

Browse files
committed
feedback
1 parent 390ab70 commit 3d2a62f

File tree

4 files changed

+34
-11
lines changed

4 files changed

+34
-11
lines changed

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

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,21 @@ import org.eclipse.lsp4j.Position
2424
import org.eclipse.lsp4j.Range
2525
import software.aws.toolkits.jetbrains.services.amazonq.apps.AppConnection
2626
import software.aws.toolkits.jetbrains.services.amazonq.commands.MessageSerializer
27+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.AmazonQLanguageServer
2728
import software.aws.toolkits.jetbrains.services.amazonq.lsp.AmazonQLspService
2829
import software.aws.toolkits.jetbrains.services.amazonq.lsp.encryption.JwtEncryptionManager
2930
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.ChatCommunicationManager
3031
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.getTextDocumentIdentifier
3132
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_FOLLOW_UP_CLICK
3233
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_QUICK_ACTION
34+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ChatNotification
3335
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ChatParams
3436
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ChatPrompt
3537
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CursorState
3638
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.EncryptedChatParams
3739
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.EncryptedQuickActionChatParams
40+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.FollowUpClickNotification
41+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.FollowUpClickParams
3842
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.QuickChatActionRequest
3943
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SEND_CHAT_COMMAND_PROMPT
4044
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SendChatPromptRequest
@@ -207,10 +211,9 @@ class BrowserConnector(
207211
showResult(result, partialResultToken, tabId, encryptionManager, browser)
208212
}
209213
CHAT_FOLLOW_UP_CLICK -> {
210-
val requestFromUi = serializer.deserializeChatMessages(node, FollowUpClickNotification::class.java)
211-
AmazonQLspService.executeIfRunning(project) { server ->
212-
server.followUpClick(requestFromUi.params)
213-
} ?: CompletableFuture.failedFuture<Unit>(IllegalStateException("LSP Server not running"))
214+
handleChatNotification<FollowUpClickNotification, FollowUpClickParams>(node) { server, params ->
215+
server.followUpClick(params)
216+
}
214217
}
215218
}
216219
}
@@ -231,7 +234,17 @@ class BrowserConnector(
231234
isPartialResult = false
232235
)
233236
browser.postChat(messageToChat)
234-
showResult(result, partialResultToken, tabId, encryptionManager, browser)
235-
}
237+
showResult(result, partialResultToken, tabId, encryptionManager, browser)
236238
}
239+
}
240+
241+
private inline fun <reified T, R> handleChatNotification(
242+
node: JsonNode,
243+
crossinline serverAction: (server: AmazonQLanguageServer, params: R) -> CompletableFuture<*>,
244+
): CompletableFuture<*> where T : ChatNotification<R> {
245+
val requestFromUi = serializer.deserializeChatMessages<T>(node)
246+
return AmazonQLspService.executeIfRunning(project) { server ->
247+
serverAction(server, requestFromUi.params)
248+
} ?: CompletableFuture.failedFuture<Unit>(IllegalStateException("LSP Server not running"))
249+
}
237250
}

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,12 @@ import org.eclipse.lsp4j.services.LanguageServer
1010
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.GetConfigurationFromServerParams
1111
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.LspServerConfigurations
1212
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.UpdateConfigurationParams
13+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_FOLLOW_UP_CLICK
1314
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_QUICK_ACTION
1415
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.EncryptedChatParams
1516
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.EncryptedQuickActionChatParams
16-
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SEND_CHAT_COMMAND_PROMPT
1717
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.FollowUpClickParams
18+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SEND_CHAT_COMMAND_PROMPT
1819
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.credentials.UpdateCredentialsPayload
1920
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.dependencies.DidChangeDependencyPathsParams
2021
import java.util.concurrent.CompletableFuture
@@ -45,6 +46,6 @@ interface AmazonQLanguageServer : LanguageServer {
4546
@JsonRequest(CHAT_QUICK_ACTION)
4647
fun sendQuickAction(params: EncryptedQuickActionChatParams): CompletableFuture<String>
4748

48-
@JsonNotification("aws/chat/followUpClick")
49+
@JsonNotification(CHAT_FOLLOW_UP_CLICK)
4950
fun followUpClick(params: FollowUpClickParams): CompletableFuture<Unit>
5051
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat
5+
6+
interface ChatNotification<T> {
7+
val command: String
8+
val params: T
9+
}

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/FollowUpClick.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
package software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat
55

66
data class FollowUpClickNotification(
7-
val command: String,
8-
val params: FollowUpClickParams,
9-
)
7+
override val command: String,
8+
override val params: FollowUpClickParams,
9+
) : ChatNotification<FollowUpClickParams>
1010

1111
data class FollowUpClickParams(
1212
val tabId: String,

0 commit comments

Comments
 (0)