only get nudges if healthy

This commit is contained in:
Lucas Oliveira 2025-12-05 13:39:31 -03:00
parent e2ba1d2a33
commit 44a54a1028

View file

@ -3,6 +3,8 @@ import {
useQuery, useQuery,
useQueryClient, useQueryClient,
} from "@tanstack/react-query"; } from "@tanstack/react-query";
import { useChat } from "@/contexts/chat-context";
import { useProviderHealthQuery } from "./useProviderHealthQuery";
type Nudge = string; type Nudge = string;
@ -27,6 +29,13 @@ export const useGetNudgesQuery = (
) => { ) => {
const { chatId, filters, limit, scoreThreshold } = params ?? {}; const { chatId, filters, limit, scoreThreshold } = params ?? {};
const queryClient = useQueryClient(); const queryClient = useQueryClient();
const { isOnboardingComplete } = useChat();
// Check if LLM provider is healthy
// If health data is not available yet, assume healthy (optimistic)
// Only disable if health data exists and shows LLM error
const { data: health } = useProviderHealthQuery();
const isLLMHealthy = health === undefined || (health?.status === "healthy" && !health?.llm_error);
function cancel() { function cancel() {
queryClient.removeQueries({ queryClient.removeQueries({
@ -77,6 +86,11 @@ export const useGetNudgesQuery = (
} }
} }
// Extract enabled from options and combine with onboarding completion and LLM health checks
// Query is only enabled if onboarding is complete AND LLM provider is healthy AND the caller's enabled condition is met
const callerEnabled = options?.enabled ?? true;
const enabled = isOnboardingComplete && isLLMHealthy && callerEnabled;
const queryResult = useQuery( const queryResult = useQuery(
{ {
queryKey: ["nudges", chatId, filters, limit, scoreThreshold], queryKey: ["nudges", chatId, filters, limit, scoreThreshold],
@ -91,6 +105,7 @@ export const useGetNudgesQuery = (
return Array.isArray(data) && data.length === 0 ? 5000 : false; return Array.isArray(data) && data.length === 0 ? 5000 : false;
}, },
...options, ...options,
enabled, // Override enabled after spreading options to ensure onboarding check is applied
}, },
queryClient, queryClient,
); );