Skip to content

Commit eb23506

Browse files
committed
Implement load conversation
1 parent 3d409e7 commit eb23506

3 files changed

Lines changed: 36 additions & 22 deletions

File tree

src/main/kotlin/ai/devchat/devchat/DevChatActionHandler.kt

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,26 @@ class DevChatActionHandler private constructor() {
2323
fun handle(
2424
action: String,
2525
jsCallback: String,
26-
callback: (JSONObject, JSONObject) -> Unit,
26+
callback: (JSONObject) -> Unit,
2727
) {
28+
val response = JSONObject()
29+
response["action"] = action
30+
val metadata = JSONObject()
31+
val payload = JSONObject()
32+
response["metadata"] = metadata
33+
response["payload"] = payload
34+
2835
try {
2936
Log.info("Handling $action request")
30-
sendResponse(action, jsCallback, callback)
37+
callback(payload)
38+
metadata["status"] = "success"
39+
metadata["error"] = ""
3140
} catch (e: Exception) {
3241
Log.error("Exception occurred while handle action $action: ${e.message}")
33-
sendResponse(action, jsCallback) { metadata: JSONObject, _ ->
34-
metadata["status"] = "error"
35-
metadata["error"] = e.message
36-
}
42+
metadata["status"] = "error"
43+
metadata["error"] = e.message
3744
}
45+
cefBrowser!!.executeJavaScript("$jsCallback($response)", "", 0)
3846
}
3947

4048
fun sendResponse(action: String, responseFunc: String, callback: (JSONObject, JSONObject) -> Unit) {

src/main/kotlin/ai/devchat/devchat/handler/LoadConversationRequestHandler.kt

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,33 +4,39 @@ import ai.devchat.common.Log
44
import ai.devchat.devchat.ActionHandler
55
import ai.devchat.devchat.DevChatActionHandler
66
import ai.devchat.devchat.DevChatActions
7+
import ai.devchat.idea.storage.ActiveConversation
78
import com.alibaba.fastjson.JSONObject
89

910
class LoadConversationRequestHandler(private val handler: DevChatActionHandler) : ActionHandler {
1011
private var metadata: JSONObject? = null
1112
private var payload: JSONObject? = null
1213

13-
private fun action(resMetadata: JSONObject, resPayload: JSONObject) {
14+
private fun action(res: JSONObject) {
1415
val topicHash = metadata!!.getString("topicHash")
15-
val conversations = handler.devChat.logTopic(topicHash, null)
16-
// remove request_tokens and response_tokens in the conversations object
17-
for (i in conversations.indices) {
18-
val conversation = conversations.getJSONObject(i)
19-
conversation.remove("request_tokens")
20-
conversation.remove("response_tokens")
16+
res["reset"] = true
17+
when {
18+
topicHash.isNullOrEmpty() -> ActiveConversation.reset()
19+
topicHash == ActiveConversation.topic -> res["reset"] = false
20+
else -> {
21+
val arr = handler.devChat.logTopic(topicHash, null)
22+
// remove request_tokens and response_tokens in the conversations object
23+
val messages = List<JSONObject>(arr.size){i ->
24+
val msg = arr.getJSONObject(i)
25+
msg.remove("request_tokens")
26+
msg.remove("response_tokens")
27+
msg
28+
}
29+
ActiveConversation.reset(topicHash, messages)
30+
}
2131
}
22-
resMetadata["status"] = "success"
23-
resMetadata["error"] = ""
24-
resPayload["conversations"] = conversations
2532
}
2633

2734
override fun executeAction() {
2835
handler.handle(
2936
DevChatActions.LOAD_CONVERSATIONS_RESPONSE,
3037
metadata!!.getString("callback"),
31-
) {resMetadata: JSONObject, resPayload: JSONObject ->
32-
action(resMetadata, resPayload)
33-
}
38+
::action
39+
)
3440
}
3541

3642
override fun setMetadata(metadata: JSONObject) {

src/main/kotlin/ai/devchat/idea/storage/ActiveConversation.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ import com.alibaba.fastjson.JSONObject
55

66
object ActiveConversation {
77
private var messages: MutableList<JSONObject>? = null
8-
private var topic: String? = null
8+
var topic: String? = null
99

10-
fun reset(topic: String, messages: MutableList<JSONObject>) {
10+
fun reset(topic: String? = null, messages: List<JSONObject>? = null) {
1111
this.topic = topic
12-
this.messages = messages
12+
this.messages = messages?.toMutableList()
1313
}
1414

1515
fun addMessage(message: JSONObject) {

0 commit comments

Comments
 (0)