Files
kandev/apps/web/hooks/use-message-handler.ts
T
2026-01-21 20:54:41 +00:00

46 lines
1.4 KiB
TypeScript

import { useCallback } from 'react';
import { getWebSocketClient } from '@/lib/ws/connection';
export function useMessageHandler(
resolvedSessionId: string | null,
taskId: string | null,
sessionModel: string | null,
pendingModel: string | null,
setActiveModel: (sessionId: string, modelId: string) => void,
clearPendingModel: (sessionId: string) => void
) {
const handleSendMessage = useCallback(
async (message: string) => {
if (!taskId || !resolvedSessionId) {
console.error('No active task session. Start an agent before sending a message.');
return;
}
const client = getWebSocketClient();
if (!client) return;
// Include pending model in the request if one is selected
const modelToSend = pendingModel && pendingModel !== sessionModel ? pendingModel : undefined;
await client.request(
'message.add',
{
task_id: taskId,
session_id: resolvedSessionId,
content: message,
...(modelToSend && { model: modelToSend }),
},
10000
);
// Move pending model to active model after sending (it's now the model in use)
if (modelToSend && resolvedSessionId) {
setActiveModel(resolvedSessionId, modelToSend);
clearPendingModel(resolvedSessionId);
}
},
[resolvedSessionId, taskId, pendingModel, sessionModel, setActiveModel, clearPendingModel]
);
return { handleSendMessage };
}