import { createModel } from "@/db/models" import { getAllOpenAIConfig } from "@/db/openai" import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query" import { Input, Modal, Form, Select, Radio } from "antd" import { Loader2 } from "lucide-react" import { useTranslation } from "react-i18next" type Props = { open: boolean setOpen: (open: boolean) => void } export const AddCustomModelModal: React.FC = ({ open, setOpen }) => { const { t } = useTranslation(["openai"]) const [form] = Form.useForm() const queryClient = useQueryClient() const { data, isPending } = useQuery({ queryKey: ["fetchProviders"], queryFn: async () => { const providers = await getAllOpenAIConfig() return providers.filter((provider) => provider.provider !== "lmstudio") } }) const onFinish = async (values: { model_id: string model_type: "chat" | "embedding" provider_id: string }) => { await createModel( values.model_id, values.model_id, values.provider_id, values.model_type ) return true } const { mutate: createModelMutation, isPending: isSaving } = useMutation({ mutationFn: onFinish, onSuccess: () => { queryClient.invalidateQueries({ queryKey: ["fetchCustomModels"] }) queryClient.invalidateQueries({ queryKey: ["fetchModel"] }) setOpen(false) form.resetFields() } }) return ( setOpen(false)}>
{t("radio.chat")} {t("radio.embedding")}
) }