import { setServerConfig } from "@/api/server" import { Button, ButtonProps } from "@/components/ui/button" import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { ScrollArea } from "@/components/ui/scroll-area" import { Textarea } from "@/components/ui/textarea" import { IconButton } from "@/components/xui/icon-button" import { ModelServerTaskResponse } from "@/types" import { useState } from "react" import { useTranslation } from "react-i18next" import { toast } from "sonner" import { Pusher } from "./xui/pusher" interface ServerConfigCardBatchProps extends ButtonProps { sid: number[] } export const ServerConfigCardBatch: React.FC = ({ sid, ...props }) => { const { t } = useTranslation() const [data, setData] = useState>({}) const [open, setOpen] = useState(false) const [currentKey, setCurrentKey] = useState("") const [currentVal, setCurrentVal] = useState("") const onSubmit = async () => { let resp: ModelServerTaskResponse = {} try { resp = await setServerConfig({ config: JSON.stringify(data), servers: sid }) } catch (e) { console.error(e) toast(t("Error"), { description: t("Results.UnExpectedError"), }) return } toast(t("Done"), { description: t("Results.ForceUpdate") + (resp.success?.length ? t(`Success`) + ` [${resp.success.join(",")}]` : "") + (resp.failure?.length ? t(`Failure`) + ` [${resp.failure.join(",")}]` : "") + (resp.offline?.length ? t(`Offline`) + ` [${resp.offline.join(",")}]` : ""), }) setOpen(false) } return sid.length < 1 ? ( { toast(t("Error"), { description: t("Results.NoRowsAreSelected"), }) }} /> ) : (
{t("EditServerConfig")}
{ setCurrentKey(e.target.value) }} />