import { appStore } from "@/app/store"; import { fetcher } from "lib/utils"; import useSWR, { SWRConfiguration } from "swr"; export const useChatModels = (options?: SWRConfiguration) => { return useSWR< { provider: string; hasAPIKey: boolean; models: { name: string; isToolCallUnsupported: boolean; isImageInputUnsupported: boolean; supportedFileMimeTypes: string[]; }[]; }[] >("/api/chat/models", fetcher, { dedupingInterval: 60_000 * 5, revalidateOnFocus: false, fallbackData: [], onSuccess: (data) => { const status = appStore.getState(); if (!status.chatModel) { const firstProvider = data[0].provider; const model = data[0].models[0].name; appStore.setState({ chatModel: { provider: firstProvider, model } }); } }, ...options, }); };