Optimize message handling to prevent UI freezing

This commit is contained in:
Gemini AI
2025-12-24 23:24:22 +04:00
Unverified
parent fb33e2ebe0
commit 8dddf4d0cf

View File

@@ -279,31 +279,31 @@ export default function MultiTaskChat(props: MultiTaskChatProps) {
if (!message || isSending()) return;
setIsSending(true);
log.info("handleSendMessage started", {
instanceId: props.instanceId,
sessionId: props.sessionId,
selectedTaskId: selectedTaskId(),
messageLength: message.length
});
// Yield to let UI update "Is Sending" state before heavy operations
await new Promise(resolve => setTimeout(resolve, 0));
// Reduced logging to prevent IPC overload
// log.info("handleSendMessage started", { ... });
try {
let taskId = selectedTaskId();
let targetSessionId = props.sessionId;
// If no task selected, create one automatically
if (!taskId) {
log.info("No task selected, creating new task");
// log.info("No task selected, creating new task");
const title = message.length > 30 ? message.substring(0, 27) + "..." : message;
const result = await addTask(props.instanceId, props.sessionId, title);
taskId = result.id;
targetSessionId = result.taskSessionId || props.sessionId;
log.info("New task created", { taskId, targetSessionId });
// log.info("New task created", { taskId, targetSessionId });
setSelectedTaskId(taskId);
// If autonomous mode is on, we might want to queue it or set it as active
const s = solo();
if (s.isAutonomous) {
log.info("Autonomous mode active, setting active task or queuing");
// log.info("Autonomous mode active, setting active task or queuing");
if (!s.activeTaskId) {
setActiveTaskId(props.instanceId, taskId);
} else {
@@ -315,14 +315,14 @@ export default function MultiTaskChat(props: MultiTaskChatProps) {
targetSessionId = task?.taskSessionId || props.sessionId;
}
log.info("Target session identified", { targetSessionId, taskId });
// log.info("Target session identified", { targetSessionId, taskId });
const store = messageStore();
log.info("Message store check before sending", {
/* log.info("Message store check before sending", {
instanceId: props.instanceId,
storeExists: !!store,
messageCount: store?.getSessionMessageIds(targetSessionId).length
});
}); */
await sendMessage(
props.instanceId,
@@ -332,18 +332,18 @@ export default function MultiTaskChat(props: MultiTaskChatProps) {
taskId || undefined
);
log.info("sendMessage call completed");
// log.info("sendMessage call completed");
setChatInput("");
setAttachments([]);
// Auto-scroll to bottom after sending
setTimeout(scrollToBottom, 100);
} catch (error) {
log.error("handleSendMessage failed", error);
// log.error("handleSendMessage failed", error);
console.error("[MultiTaskChat] Send failed:", error);
} finally {
setIsSending(false);
log.info("handleSendMessage finished");
// log.info("handleSendMessage finished");
}
};