fix(chat): align block indents and format multiline expressions

This commit is contained in:
Hy4ri committed 2026-06-20 11:18:08 +03:00
1 parent 5ba266cefd
commit 890ca05d16
1 file changed
+39 -33
@@ -197,11 +197,12 @@ class ChatViewModel(
private fun handleMessageStart(event: WsEvent.MessageStart) { private fun handleMessageStart(event: WsEvent.MessageStart) {
if (!isCurrentSession(event.sessionId)) return if (!isCurrentSession(event.sessionId)) return
// Create the streaming message as a standalone state field. // Create the streaming message as a standalone state field.
val msg = ChatMessage( val msg =
role = MessageRole.ASSISTANT, ChatMessage(
content = "", role = MessageRole.ASSISTANT,
isStreaming = true, content = "",
) isStreaming = true,
)
streamingMessageId = msg.id streamingMessageId = msg.id
_uiState.update { _uiState.update {
it.copy( it.copy(
@@ -219,18 +220,20 @@ class ChatViewModel(
val current = state.streamingMessage val current = state.streamingMessage
if (current != null) { if (current != null) {
state.copy( state.copy(
streamingMessage = current.copy( streamingMessage =
content = current.content + event.token, current.copy(
), content = current.content + event.token,
),
isThinking = false, isThinking = false,
) )
} else { } else {
// Fallback: no MessageStart was received — create one now // Fallback: no MessageStart was received — create one now
val msg = ChatMessage( val msg =
role = MessageRole.ASSISTANT, ChatMessage(
content = event.token, role = MessageRole.ASSISTANT,
isStreaming = true, content = event.token,
) isStreaming = true,
)
streamingMessageId = msg.id streamingMessageId = msg.id
state.copy( state.copy(
streamingMessage = msg, streamingMessage = msg,
@@ -259,17 +262,18 @@ class ChatViewModel(
_uiState.update { state -> _uiState.update { state ->
val streaming = state.streamingMessage val streaming = state.streamingMessage
val msg = if (streaming != null) { val msg =
streaming.copy( if (streaming != null) {
content = event.text, streaming.copy(
isStreaming = false, content = event.text,
) isStreaming = false,
} else { )
ChatMessage( } else {
role = MessageRole.ASSISTANT, ChatMessage(
content = event.text, role = MessageRole.ASSISTANT,
) content = event.text,
} )
}
finalizedMsg = msg finalizedMsg = msg
sessionId = state.currentSessionId sessionId = state.currentSessionId
state.copy( state.copy(
@@ -336,12 +340,13 @@ class ChatViewModel(
// ── Tool events ────────────────────────────────────────────────────── // ── Tool events ──────────────────────────────────────────────────────
private fun handleToolStart(event: WsEvent.ToolStart) { private fun handleToolStart(event: WsEvent.ToolStart) {
val toolMessage = ChatMessage( val toolMessage =
role = MessageRole.TOOL, ChatMessage(
content = event.data.toString(), role = MessageRole.TOOL,
toolName = event.name, content = event.data.toString(),
toolStatus = ToolStatus.RUNNING, toolName = event.name,
) toolStatus = ToolStatus.RUNNING,
)
_uiState.update { state -> _uiState.update { state ->
state.copy(messages = state.messages + toolMessage) state.copy(messages = state.messages + toolMessage)
@@ -907,9 +912,10 @@ class ChatViewModel(
pendingRequests.entries.filter { pendingRequests.entries.filter {
now - it.value.createdAt > PENDING_REQUEST_TIMEOUT_MS now - it.value.createdAt > PENDING_REQUEST_TIMEOUT_MS
} }
for (entry in stale) { for (entry in stale) {
pendingRequests.remove(entry.key) pendingRequests.remove(entry.key)
Log.w(TAG, "Request timed out: ${entry.value.method} (id=${entry.key})") Log.w(TAG, "Request timed out: ${entry.value.method} (id=${entry.key})")
}
} }
} }
} }