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

Searching for your Ollama 🦙

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

Ollama is running 🦙

) : (

We couldn't find your Ollama 🦙

setOllamaURL(e.target.value)} />
) ) : null} {ollamaStatus === "success" && ollamaInfo.isOk && (

Models:

{ 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" />
)} ) }