Co-authored-by: M57 <hy4ri@users.noreply.github.com>
This commit is contained in:
1 parent
3fd9ac767f
commit
ceb4813218
9 files changed
+443
-17
No files matched your search
@@ -1,6 +1,7 @@
|
||||
package com.m57.hermescontrol.data.ws
|
||||
|
||||
import android.util.Log
|
||||
import com.m57.hermescontrol.ui.chat.extractTodosFromMap
|
||||
|
||||
/**
|
||||
* Converts raw [JsonRpcResponse] objects into typed [WsEvent] instances.
|
||||
@@ -189,6 +190,15 @@ object EventParser {
|
||||
WsEvent.SessionUsage(payload, sessionId)
|
||||
}
|
||||
|
||||
"todo.updated" -> {
|
||||
val revision =
|
||||
(payload?.get("revision") as? Number)?.toInt()
|
||||
?: (params["revision"] as? Number)?.toInt()
|
||||
val rawTodos = payload ?: params
|
||||
val todos = extractTodosFromMap(rawTodos) ?: emptyList()
|
||||
WsEvent.TodoUpdated(todos, revision, sessionId)
|
||||
}
|
||||
|
||||
"reaction" -> {
|
||||
val kind = payload?.get("kind") as? String ?: ""
|
||||
WsEvent.ReactionEvent(kind)
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package com.m57.hermescontrol.data.ws
|
||||
|
||||
import com.m57.hermescontrol.ui.chat.TodoItem
|
||||
|
||||
/** Parsed WebSocket events emitted by [HermesWsClient]. */
|
||||
sealed class WsEvent {
|
||||
// ── Gateway lifecycle ────────────────────────────────────────────────
|
||||
@@ -183,6 +185,17 @@ sealed class WsEvent {
|
||||
val sessionId: String? = null,
|
||||
) : WsEvent()
|
||||
|
||||
/**
|
||||
* Revisioned todo snapshot event emitted by backend todo tool updates (issue #1018).
|
||||
* Event: `todo.updated`
|
||||
* Payload: `{ "todos": [...], "revision": Int }`
|
||||
*/
|
||||
data class TodoUpdated(
|
||||
val todos: List<TodoItem> = emptyList(),
|
||||
val revision: Int? = null,
|
||||
val sessionId: String? = null,
|
||||
) : WsEvent()
|
||||
|
||||
// ── RPC responses ────────────────────────────────────────────────────
|
||||
|
||||
data class RpcResult(
|
||||
|
||||
Reference in new issue
Block a user