This commit is contained in:
devin-ai-integration[bot] 2026-10-03 09:19:59 +00:00 • committed by GitHub
commit f977fbabd9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 16 additions and 4 deletions

View file

@ -1,6 +1,7 @@
import { createContext, useContext, useEffect, useState } from "react";
import { useQuery, type UseQueryOptions } from "@tanstack/react-query";
import { apiClient } from "@/components/networking";
import { AutoRouterAvailabilityDebounceContext } from "@/components/add_model/autoRouterAvailabilityDebounce";
import { Popover, PopoverContent, PopoverTitle, PopoverTrigger } from "@/components/ui/popover";
import type { components } from "@/lib/http/schema";
@ -20,11 +21,14 @@ export const AutoRouterAvailabilityContext = createContext<AvailabilityState>({
export const useAutoRouterAvailability = (accessToken: string, body: Request, enabled = true) => {
const serialized = JSON.stringify(body.complexity_router_config ?? null);
const [debounced, setDebounced] = useState(serialized);
const [debouncedState, setDebounced] = useState(serialized);
const debounceMs = useContext(AutoRouterAvailabilityDebounceContext);
useEffect(() => {
const timeout = setTimeout(() => setDebounced(serialized), 300);
if (debounceMs === 0) return;
const timeout = setTimeout(() => setDebounced(serialized), debounceMs);
return () => clearTimeout(timeout);
}, [serialized]);
}, [serialized, debounceMs]);
const debounced = debounceMs === 0 ? serialized : debouncedState;
const options: UseQueryOptions<Availability> = {
queryKey: ["autoRouterAvailability", accessToken, body.team_id, body.saved_model_id, debounced],
queryFn: ({ signal }) =>

View file

@ -0,0 +1,3 @@
import { createContext } from "react";
export const AutoRouterAvailabilityDebounceContext = createContext(300);

View file

@ -4,6 +4,7 @@ import type userEvent from "@testing-library/user-event";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { NuqsTestingAdapter, OnUrlUpdateFunction } from "nuqs/adapters/testing";
import { expect } from "vitest";
import { AutoRouterAvailabilityDebounceContext } from "@/components/add_model/autoRouterAvailabilityDebounce";
// Create a client for testing
export const testQueryClient = new QueryClient({
@ -31,7 +32,11 @@ export const renderWithProviders = (ui: React.ReactElement, options?: RenderOpti
const { searchParams, onUrlUpdate, ...renderOptions } = options ?? {};
const Providers: React.FC<PropsWithChildren> = ({ children }) => (
<NuqsTestingAdapter searchParams={searchParams} onUrlUpdate={onUrlUpdate} hasMemory>
<QueryClientProvider client={testQueryClient}>{children}</QueryClientProvider>
<QueryClientProvider client={testQueryClient}>
<AutoRouterAvailabilityDebounceContext.Provider value={0}>
{children}
</AutoRouterAvailabilityDebounceContext.Provider>
</QueryClientProvider>
</NuqsTestingAdapter>
);
return render(ui, { wrapper: Providers, ...renderOptions });