Skip to content

Commit 111ed53

Browse files
committed
feedback
1 parent 3355755 commit 111ed53

File tree

5 files changed

+50
-30
lines changed

5 files changed

+50
-30
lines changed

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

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ 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
@@ -32,17 +33,21 @@ import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_
3233
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_LINK_CLICK
3334
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_QUICK_ACTION
3435
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_SOURCE_LINK_CLICK
36+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ChatNotification
3537
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ChatParams
3638
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.ChatPrompt
3739
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CursorState
3840
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.EncryptedChatParams
3941
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.EncryptedQuickActionChatParams
4042
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.InfoLinkClickNotification
43+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.InfoLinkClickParams
4144
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.LinkClickNotification
45+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.LinkClickParams
4246
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.QuickChatActionRequest
4347
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SEND_CHAT_COMMAND_PROMPT
4448
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SendChatPromptRequest
4549
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SourceLinkClickNotification
50+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SourceLinkClickParams
4651
import software.aws.toolkits.jetbrains.services.amazonq.util.command
4752
import software.aws.toolkits.jetbrains.services.amazonq.util.tabType
4853
import software.aws.toolkits.jetbrains.services.amazonq.webview.theme.AmazonQTheme
@@ -212,22 +217,21 @@ class BrowserConnector(
212217
showResult(result, partialResultToken, tabId, encryptionManager, browser)
213218
}
214219
CHAT_LINK_CLICK -> {
215-
val requestFromUi = serializer.deserializeChatMessages(node, LinkClickNotification::class.java)
216-
AmazonQLspService.executeIfRunning(project) { server ->
217-
server.linkClick(requestFromUi.params)
218-
} ?: CompletableFuture.failedFuture<Unit>(IllegalStateException("LSP Server not running"))
220+
handleUiRequest<LinkClickNotification, LinkClickParams>(node) { server, params ->
221+
server.linkClick(params)
222+
}
219223
}
224+
220225
CHAT_INFO_LINK_CLICK -> {
221-
val requestFromUi = serializer.deserializeChatMessages(node, InfoLinkClickNotification::class.java)
222-
AmazonQLspService.executeIfRunning(project) { server ->
223-
server.infoLinkClick(requestFromUi.params)
224-
} ?: CompletableFuture.failedFuture<Unit>(IllegalStateException("LSP Server not running"))
226+
handleUiRequest<InfoLinkClickNotification, InfoLinkClickParams>(node) { server, params ->
227+
server.infoLinkClick(params)
228+
}
225229
}
230+
226231
CHAT_SOURCE_LINK_CLICK -> {
227-
val requestFromUi = serializer.deserializeChatMessages(node, SourceLinkClickNotification::class.java)
228-
AmazonQLspService.executeIfRunning(project) { server ->
229-
server.sourceLinkClick(requestFromUi.params)
230-
} ?: CompletableFuture.failedFuture<Unit>(IllegalStateException("LSP Server not running"))
232+
handleUiRequest<SourceLinkClickNotification, SourceLinkClickParams>(node) { server, params ->
233+
server.sourceLinkClick(params)
234+
}
231235
}
232236
}
233237
}
@@ -250,4 +254,14 @@ class BrowserConnector(
250254
browser.postChat(messageToChat)
251255
}
252256
}
257+
258+
private inline fun <reified T, R> handleUiRequest(
259+
node: JsonNode,
260+
crossinline serverAction: (server: AmazonQLanguageServer, params: R) -> CompletableFuture<*>,
261+
): CompletableFuture<*> where T : ChatNotification<R> {
262+
val requestFromUi = serializer.deserializeChatMessages<T>(node)
263+
return AmazonQLspService.executeIfRunning(project) { server ->
264+
serverAction(server, requestFromUi.params)
265+
} ?: CompletableFuture.failedFuture<Unit>(IllegalStateException("LSP Server not running"))
266+
}
253267
}

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

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,16 @@ 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_INFO_LINK_CLICK
14+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_LINK_CLICK
1315
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_QUICK_ACTION
16+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.CHAT_SOURCE_LINK_CLICK
1417
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.EncryptedChatParams
1518
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.EncryptedQuickActionChatParams
1619
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.InfoLinkClickParams
1720
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.LinkClickParams
18-
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SourceLinkClickParams
1921
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SEND_CHAT_COMMAND_PROMPT
22+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.SourceLinkClickParams
2023
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.credentials.UpdateCredentialsPayload
2124
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.dependencies.DidChangeDependencyPathsParams
2225
import java.util.concurrent.CompletableFuture
@@ -44,18 +47,15 @@ interface AmazonQLanguageServer : LanguageServer {
4447
@JsonRequest(SEND_CHAT_COMMAND_PROMPT)
4548
fun sendChatPrompt(params: EncryptedChatParams): CompletableFuture<String>
4649

47-
@JsonRequest("aws/chat/sendChatQuickAction")
50+
@JsonRequest(CHAT_QUICK_ACTION)
4851
fun sendQuickAction(params: EncryptedQuickActionChatParams): CompletableFuture<String>
4952

50-
@JsonNotification("aws/chat/linkClick")
53+
@JsonNotification(CHAT_LINK_CLICK)
5154
fun linkClick(params: LinkClickParams): CompletableFuture<Unit>
5255

53-
@JsonNotification("aws/chat/infoLinkClick")
56+
@JsonNotification(CHAT_INFO_LINK_CLICK)
5457
fun infoLinkClick(params: InfoLinkClickParams): CompletableFuture<Unit>
5558

56-
@JsonNotification("aws/chat/feedback/sourceLinkClick")
59+
@JsonNotification(CHAT_SOURCE_LINK_CLICK)
5760
fun sourceLinkClick(params: SourceLinkClickParams): CompletableFuture<Unit>
58-
59-
@JsonRequest(CHAT_QUICK_ACTION)
60-
fun sendQuickAction(params: EncryptedQuickActionChatParams): CompletableFuture<String>
6161
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -390,4 +390,4 @@ private class AmazonQServerInstance(private val project: Project, private val cs
390390
}
391391
}
392392

393-
typealias AmazonQInitializeMessageReceivedListener = () -> Unit
393+
typealias AmazonQInitializeMessageReceivedListener = () -> Unit
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat
2+
3+
interface ChatNotification<T> {
4+
val command: String
5+
val params: T
6+
}

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

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

55
data class InfoLinkClickNotification(
6-
val command: String,
7-
val params: InfoLinkClickParams,
8-
)
6+
override val command: String,
7+
override val params: InfoLinkClickParams,
8+
) : ChatNotification<InfoLinkClickParams>
99

1010
data class SourceLinkClickNotification(
11-
val command: String,
12-
val params: SourceLinkClickParams,
13-
)
11+
override val command: String,
12+
override val params: SourceLinkClickParams,
13+
) : ChatNotification<SourceLinkClickParams>
1414

1515
data class LinkClickNotification(
16-
val command: String,
17-
val params: LinkClickParams,
18-
)
16+
override val command: String,
17+
override val params: LinkClickParams,
18+
) : ChatNotification<LinkClickParams>
1919

2020
data class InfoLinkClickParams(
2121
val tabId: String,

0 commit comments

Comments
 (0)