import { useState } from "react"; import { AnimatedModal } from "../ui/AnimatedModal"; import { Input } from "../ui/Input"; import { Button } from "../ui/Button"; import { useQueryStore } from "../../stores/queryStore"; interface SaveQueryDialogProps { open: boolean; onClose: () => void; connectionId: string; queryText: string; } export function SaveQueryDialog({ open, onClose, connectionId, queryText, }: SaveQueryDialogProps) { const [name, setName] = useState(""); const [folder, setFolder] = useState(""); const [error, setError] = useState(""); const [saving, setSaving] = useState(false); const saveCurrentQuery = useQueryStore((s) => s.saveCurrentQuery); const handleSave = async () => { const trimmed = name.trim(); if (!trimmed) { setError("Name is required"); return; } setSaving(true); setError(""); try { await saveCurrentQuery({ connectionId, name: trimmed, queryText, folder: folder.trim(), }); // Reset form on success setName(""); setFolder(""); onClose(); } catch (e) { setError(e instanceof Error ? e.message : "Save failed"); } finally { setSaving(false); } }; const handleClose = () => { setError(""); setName(""); setFolder(""); onClose(); }; if (!open) return null; return (

Save Query

Save the current query for later use.

{ setName(v); if (error) setError(""); }} aria-label="Query name" />
{error && (

{error}

)}
); }