Skip to content

Commit f21975d

Browse files
authored
Merge pull request #213 from devchat-ai/optimize_webview_communication_idea
Enhance Webview Communication and Context Handling
2 parents 22e2ecd + dbf1f07 commit f21975d

31 files changed

+378
-240
lines changed

src/main/kotlin/ai/devchat/core/ActionHandlerFactory.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ class ActionHandlerFactory {
1212
DevChatActions.REGENERATION_REQUEST to SendMessageRequestHandler::class,
1313
DevChatActions.LIST_COMMANDS_REQUEST to ListCommandsRequestHandler::class,
1414
DevChatActions.LOAD_CONVERSATIONS_REQUEST to LoadConversationRequestHandler::class,
15+
DevChatActions.NEW_CONVERSATIONS_REQUEST to LoadConversationRequestHandler::class,
1516
DevChatActions.LOAD_HISTORY_MESSAGES_REQUEST to LoadHistoryMessagesRequestHandler::class,
1617
DevChatActions.OPEN_LINK_REQUEST to OpenLinkRequestHandler::class,
1718
DevChatActions.LIST_TOPICS_REQUEST to ListTopicsRequestHandler::class,

src/main/kotlin/ai/devchat/core/BaseActionHandler.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ abstract class BaseActionHandler(
4343
"error" to ""
4444
))
4545
response["payload"] = payload ?: JSONObject()
46-
browser!!.executeJS(jsCallback, response)
46+
browser!!.sendToWebView(payload ?: JSONObject())
4747
}
4848

4949
override fun executeAction() {
Lines changed: 32 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,49 @@
11
package ai.devchat.core
22

33
object DevChatActions {
4-
const val SEND_MESSAGE_REQUEST = "sendMessage/request"
4+
const val SEND_MESSAGE_REQUEST = "sendMessage"
55
const val SEND_MESSAGE_RESPONSE = "sendMessage/response"
6-
const val REGENERATION_REQUEST = "regeneration/request"
6+
const val REGENERATION_REQUEST = "regeneration"
77
const val SEND_USER_MESSAGE_REQUEST = "sendUserMessage/request"
8-
const val SEND_USER_MESSAGE_RESPONSE = "sendUserMessage/response"
8+
const val SEND_USER_MESSAGE_RESPONSE = "chatWithDevChat"
99
const val CODE_DIFF_APPLY_REQUEST = "codeDiffApply/request"
10-
const val CODE_DIFF_APPLY_RESPONSE = "codeDiffApply/response"
11-
const val ADD_CONTEXT_NOTIFY = "addContext/notify"
12-
const val LIST_COMMANDS_REQUEST = "listCommands/request"
13-
const val LIST_COMMANDS_RESPONSE = "listCommands/response"
14-
const val LOAD_CONVERSATIONS_REQUEST = "loadConversations/request"
10+
const val CODE_DIFF_APPLY_RESPONSE = "codeDiffApply"
11+
const val ADD_CONTEXT_NOTIFY = "contextDetailResponse"
12+
const val LIST_COMMANDS_REQUEST = "regCommandList"
13+
const val LIST_COMMANDS_RESPONSE = "regCommandList"
14+
const val NEW_CONVERSATIONS_REQUEST = "setNewTopic"
15+
const val LOAD_CONVERSATIONS_REQUEST = "getTopicDetail"
1516
const val LOAD_CONVERSATIONS_RESPONSE = "loadConversations/response"
16-
const val LOAD_HISTORY_MESSAGES_REQUEST = "loadHistoryMessages/request"
17-
const val LOAD_HISTORY_MESSAGES_RESPONSE = "loadHistoryMessages/response"
18-
const val OPEN_LINK_REQUEST = "openLink/request"
17+
const val LOAD_HISTORY_MESSAGES_REQUEST = "historyMessages"
18+
const val LOAD_HISTORY_MESSAGES_RESPONSE = "reloadMessage"
19+
const val OPEN_LINK_REQUEST = "openLink"
1920
const val OPEN_LINK_RESPONSE = "openLink/response"
20-
const val LIST_TOPICS_REQUEST = "listTopics/request"
21-
const val LIST_TOPICS_RESPONSE = "listTopics/response"
22-
const val INSERT_CODE_REQUEST = "insertCode/request"
21+
const val LIST_TOPICS_REQUEST = "getTopics"
22+
const val LIST_TOPICS_RESPONSE = "listTopics"
23+
const val INSERT_CODE_REQUEST = "code_apply"
2324
const val INSERT_CODE_RESPONSE = "insertCode/response"
24-
const val NEW_SRC_FILE_REQUEST = "newSrcFile/request"
25+
const val NEW_SRC_FILE_REQUEST = "code_new_file"
2526
const val NEW_SRC_FILE_RESPONSE = "newSrcFile/response"
26-
const val REPLACE_FILE_CONTENT_REQUEST = "replaceFileContent/request"
27+
const val REPLACE_FILE_CONTENT_REQUEST = "code_file_apply"
2728
const val REPLACE_FILE_CONTENT_RESPONSE = "replaceFileContent/response"
28-
const val VIEW_DIFF_REQUEST = "viewDiff/request"
29+
const val VIEW_DIFF_REQUEST = "show_diff"
2930
const val VIEW_DIFF_RESPONSE = "viewDiff/response"
30-
const val GET_IDE_SERVICE_PORT_REQUEST = "getIDEServicePort/request"
31-
const val GET_IDE_SERVICE_PORT_RESPONSE = "getIDEServicePort/response"
32-
const val GET_SETTING_REQUEST = "getSetting/request"
33-
const val GET_SETTING_RESPONSE = "getSetting/response"
34-
const val UPDATE_SETTING_REQUEST = "updateSetting/request"
35-
const val UPDATE_SETTING_RESPONSE = "updateSetting/response"
36-
const val GET_SERVER_SETTINGS_REQUEST = "getServerSettings/request"
37-
const val GET_SERVER_SETTINGS_RESPONSE = "getServerSettings/response"
38-
const val UPDATE_SERVER_SETTINGS_REQUEST = "updateServerSettings/request"
31+
const val GET_IDE_SERVICE_PORT_REQUEST = "getIDEServicePort"
32+
const val GET_IDE_SERVICE_PORT_RESPONSE = "getIDEServicePort"
33+
const val GET_SETTING_REQUEST = "readConfig"
34+
const val GET_SETTING_RESPONSE = "readConfig"
35+
const val UPDATE_SETTING_REQUEST = "writeConfig"
36+
const val UPDATE_SETTING_RESPONSE = "updateSetting"
37+
const val GET_SERVER_SETTINGS_REQUEST = "readServerConfigBase"
38+
const val GET_SERVER_SETTINGS_RESPONSE = "readServerConfigBase"
39+
const val UPDATE_SERVER_SETTINGS_REQUEST = "writeServerConfigBase"
3940
const val UPDATE_SERVER_SETTINGS_RESPONSE = "updateServerSettings/response"
40-
const val INPUT_REQUEST = "input/request"
41+
const val INPUT_REQUEST = "userInput"
4142
const val INPUT_RESPONSE = "input/response"
42-
const val STOP_GENERATION_REQUEST = "stopGeneration/request"
43+
const val STOP_GENERATION_REQUEST = "stopDevChat"
4344
const val STOP_GENERATION_RESPONSE = "stopGeneration/request"
44-
const val DELETE_LAST_CONVERSATION_REQUEST = "deleteLastConversation/request"
45-
const val DELETE_LAST_CONVERSATION_RESPONSE = "deleteLastConversation/response"
46-
const val DELETE_TOPIC_REQUEST = "deleteTopic/request"
45+
const val DELETE_LAST_CONVERSATION_REQUEST = "deleteChatMessage"
46+
const val DELETE_LAST_CONVERSATION_RESPONSE = "deletedChatMessage"
47+
const val DELETE_TOPIC_REQUEST = "deleteTopic"
4748
const val DELETE_TOPIC_RESPONSE = "deleteTopic/response"
4849
}

src/main/kotlin/ai/devchat/core/handlers/AddContextNotifyHandler.kt

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,20 @@ class AddContextNotifyHandler(project: Project, requestAction: String, metadata:
1313
payload
1414
) {
1515
override val actionName: String = DevChatActions.ADD_CONTEXT_NOTIFY
16+
1617
override fun action() {
17-
send(payload=mapOf(
18-
"path" to payload?.getString("path"),
19-
"content" to payload?.getString("content"),
20-
"languageId" to payload?.getString("languageId"),
21-
"startLine" to payload?.getInteger("startLine")
22-
))
18+
val contextObj = mapOf(
19+
"path" to (payload?.getString("path") ?: ""),
20+
"content" to (payload?.getString("content") ?: ""),
21+
"command" to ""
22+
)
23+
24+
val newPayload = mapOf(
25+
"command" to actionName,
26+
"file" to (payload?.getString("path") ?: ""),
27+
"result" to JSONObject.toJSONString(contextObj)
28+
)
29+
30+
send(payload = newPayload)
2331
}
2432
}

src/main/kotlin/ai/devchat/core/handlers/CodeDiffApplyHandler.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,5 @@ class CodeDiffApplyHandler(project: Project, requestAction: String, metadata: JS
1313
payload
1414
) {
1515
override val actionName: String = DevChatActions.CODE_DIFF_APPLY_RESPONSE
16-
override fun action() { send() }
16+
override fun action() { send(payload = mapOf("command" to actionName)) }
1717
}

src/main/kotlin/ai/devchat/core/handlers/DeleteLastConversationRequestHandler.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ class DeleteLastConversationRequestHandler(project: Project, requestAction: Stri
1313
) {
1414
override val actionName: String = DevChatActions.DELETE_LAST_CONVERSATION_RESPONSE
1515
override fun action() {
16-
val promptHash = payload!!.getString("promptHash")
16+
val promptHash = payload!!.getString("hash")
1717
client!!.deleteLog(promptHash)
18-
send(payload = mapOf("promptHash" to promptHash))
18+
send(payload = mapOf("command" to actionName, "hash" to promptHash))
1919
}
2020
}

src/main/kotlin/ai/devchat/core/handlers/GetIDEServicePortRequestHandler.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,6 @@ class GetIDEServicePortRequestHandler(project: Project, requestAction: String, m
1414
) {
1515
override val actionName: String = DevChatActions.GET_IDE_SERVICE_PORT_RESPONSE
1616
override fun action() {
17-
send(payload= mapOf("result" to devChatService.ideServicePort))
17+
send(payload= mapOf("command" to actionName, "result" to devChatService.ideServicePort))
1818
}
1919
}

src/main/kotlin/ai/devchat/core/handlers/GetServerSettingsRequestHandler.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ class GetServerSettingsRequestHandler(project: Project, requestAction: String, m
1616
override val actionName: String = DevChatActions.GET_SERVER_SETTINGS_RESPONSE
1717
@Suppress("UNCHECKED_CAST")
1818
override fun action() {
19-
send(payload= SERVER_CONFIG.get() as? Map<String, *>)
19+
send(payload= mapOf( "command" to actionName, "value" to SERVER_CONFIG.get() as? Map<String, *>))
2020
}
2121
}

src/main/kotlin/ai/devchat/core/handlers/GetSettingRequestHandler.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ class GetSettingRequestHandler(project: Project, requestAction: String, metadata
1616
override val actionName: String = DevChatActions.GET_SETTING_RESPONSE
1717
@Suppress("UNCHECKED_CAST")
1818
override fun action() {
19-
send(payload= CONFIG.get() as? Map<String, *>)
19+
send(payload= mapOf("command" to actionName, "value" to CONFIG.get() as? Map<String, *>))
2020
}
2121
}

0 commit comments

Comments
 (0)