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