import React, { useState } from 'react' import { EmptyState, Sub } from '../../primitives' import { AuthGate } from '../../shell/AuthGate' import { AuthError, APIError } from '../../api/client' import type { SavedSearch } from '../../api/adapters' import { useSavedSearches, useCreateSavedSearch, useUpdateSavedSearch, useDeleteSavedSearch, } from './useSavedSearches' // ── Inline "Add new" form ───────────────────────────────────────────────────── function AddForm(): React.JSX.Element { const [name, setName] = useState('') const [query, setQuery] = useState('') const createMutation = useCreateSavedSearch() function handleSave(e: React.FormEvent) { e.preventDefault() if (!name.trim() || !query.trim()) return createMutation.mutate( { name: name.trim(), query: query.trim() }, { onSuccess: () => { setName('') setQuery('') }, }, ) } return (
) } // ── Per-row inline edit form ────────────────────────────────────────────────── interface RowProps { row: SavedSearch } function SavedSearchRow({ row }: RowProps): React.JSX.Element { const [editing, setEditing] = useState(false) const [name, setName] = useState(row.name) const [query, setQuery] = useState(row.query) const updateMutation = useUpdateSavedSearch() const deleteMutation = useDeleteSavedSearch() function handleSave(e: React.FormEvent) { e.preventDefault() updateMutation.mutate( { oldName: row.name, name: name.trim() || undefined, query: query.trim() || undefined }, { onSuccess: () => setEditing(false) }, ) } function handleDelete() { deleteMutation.mutate({ name: row.name }) } if (editing) { return (