import { useQuery, useQueryClient } from "@tanstack/react-query" import { Select } from "antd" import { RotateCcw } from "lucide-react" import { useEffect, useState } from "react" import { useTranslation } from "react-i18next" import { useMessage } from "~/hooks/useMessage" import { getAllModels, getOllamaURL, isOllamaRunning, setOllamaURL as saveOllamaURL, fetchChatModels } from "~/services/ollama" export const EmptySidePanel = () => { const [ollamaURL, setOllamaURL] = useState("") const { t } = useTranslation(["playground", "common"]) const queryClient = useQueryClient() const { data: ollamaInfo, status: ollamaStatus, refetch, isRefetching } = useQuery({ queryKey: ["ollamaStatus"], queryFn: async () => { const ollamaURL = await getOllamaURL() const isOk = await isOllamaRunning() const models = await fetchChatModels({ returnEmpty: false }) queryClient.invalidateQueries({ queryKey: ["getAllModelsForSelect"] }) return { isOk, models, ollamaURL } } }) useEffect(() => { if (ollamaInfo?.ollamaURL) { setOllamaURL(ollamaInfo.ollamaURL) } }, [ollamaInfo]) const { setSelectedModel, selectedModel, chatMode, setChatMode } = useMessage() return (
{(ollamaStatus === "pending" || isRefetching) && (

{t("ollamaState.searching")}

)} {!isRefetching && ollamaStatus === "success" ? ( ollamaInfo.isOk ? (

{t("ollamaState.running")}

) : (

{t("ollamaState.notRunning")}

setOllamaURL(e.target.value)} />
) ) : null} {ollamaStatus === "success" && ollamaInfo.isOk && (
{ setChatMode(e.target.checked ? "rag" : "normal") }} className="before:content[''] peer relative h-5 w-5 cursor-pointer appearance-none rounded-md border border-blue-gray-200 transition-all before:absolute before:top-2/4 before:left-2/4 before:block before:h-12 before:w-12 before:-translate-y-2/4 before:-translate-x-2/4 before:rounded-full before:bg-blue-gray-500 before:opacity-0 before:transition-opacity" id="check" />
)} ) }