web-production-saas-starter/next_b2b_starter/lib/hooks/mutations/use-chat.ts
2025-12-16 18:54:41 +04:00

35 lines
1.1 KiB
TypeScript

// lib/hooks/mutations/use-chat.ts
import { useMutation, useQueryClient } from "@tanstack/react-query";
import { queryKeys } from "../queries/query-keys";
import { cognitiveRepository } from "@/lib/api/api/repositories/cognitive-repository";
import type { ChatRequest, ChatResponse } from "@/lib/models/cognitive.model";
export function useChat() {
const queryClient = useQueryClient();
return useMutation({
mutationFn: (request: ChatRequest) => cognitiveRepository.chat(request),
onSuccess: (data: ChatResponse) => {
// Invalidate sessions list to include new session if created
queryClient.invalidateQueries({
queryKey: queryKeys.cognitive.sessions(),
});
// Invalidate messages for this session
if (data.sessionId) {
queryClient.invalidateQueries({
queryKey: queryKeys.cognitive.messages(data.sessionId),
});
}
},
onError: (error, variables) => {
console.error("[Mutation] Chat message failed:", {
error,
sessionId: variables.sessionId,
});
},
});
}