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;
|
||||
|
||||
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");
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user