import { IconSearch } from "@tabler/icons-react"; import { useQueryClient } from "@tanstack/react-query"; import { useState } from "react"; import Alert from "react-bootstrap/Alert"; import { deleteDeadHost, toggleDeadHost } from "src/api/backend"; import { Button, LoadingPage } from "src/components"; import { useDeadHosts } from "src/hooks"; import { intl } from "src/locale"; import { DeadHostModal, DeleteConfirmModal } from "src/modals"; import { showSuccess } from "src/notifications"; import Table from "./Table"; export default function TableWrapper() { const queryClient = useQueryClient(); const [deleteId, setDeleteId] = useState(0); const [editId, setEditId] = useState(0 as number | "new"); const { isFetching, isLoading, isError, error, data } = useDeadHosts(["owner", "certificate"]); if (isLoading) { return ; } if (isError) { return {error?.message || "Unknown error"}; } const handleDelete = async () => { await deleteDeadHost(deleteId); showSuccess(intl.formatMessage({ id: "notification.host-deleted" })); }; const handleDisableToggle = async (id: number, enabled: boolean) => { await toggleDeadHost(id, enabled); queryClient.invalidateQueries({ queryKey: ["dead-hosts"] }); queryClient.invalidateQueries({ queryKey: ["dead-host", id] }); showSuccess(intl.formatMessage({ id: enabled ? "notification.host-enabled" : "notification.host-disabled" })); }; return (

{intl.formatMessage({ id: "dead-hosts.title" })}

setEditId(id)} onDelete={(id: number) => setDeleteId(id)} onDisableToggle={handleDisableToggle} onNew={() => setEditId("new")} /> {editId ? setEditId(0)} /> : null} {deleteId ? ( setDeleteId(0)} invalidations={[["dead-hosts"], ["dead-host", deleteId]]} > {intl.formatMessage({ id: "dead-host.delete.content" })} ) : null} ); }