import { AlertBlock } from "@/components/shared/alert-block"; import { DialogAction } from "@/components/shared/dialog-action"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { Table, TableBody, TableCaption, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; import { api } from "@/utils/api"; import { format } from "date-fns"; import { KeyIcon, MoreHorizontal, ServerIcon } from "lucide-react"; import Link from "next/link"; import { toast } from "sonner"; import { TerminalModal } from "../web-server/terminal-modal"; import { ShowServerActions } from "./actions/show-server-actions"; import { AddServer } from "./add-server"; import { SetupServer } from "./setup-server"; import { ShowDockerContainersModal } from "./show-docker-containers-modal"; import { ShowTraefikFileSystemModal } from "./show-traefik-file-system-modal"; import { UpdateServer } from "./update-server"; export const ShowServers = () => { const { data, refetch } = api.server.all.useQuery(); const { mutateAsync } = api.server.remove.useMutation(); const { data: sshKeys } = api.sshKey.all.useQuery(); return (

Servers

Add servers to deploy your applications remotely.

{sshKeys && sshKeys?.length > 0 && (
)}
{sshKeys?.length === 0 && data?.length === 0 ? (
No SSH Keys found. Add a SSH Key to start adding servers.{" "} Add SSH Key
) : ( data && data.length === 0 && (
No Servers found. Add a server to deploy your applications remotely.
) )} {data && data?.length > 0 && (
See all servers Name IP Address Port Username SSH Key Created Actions {data?.map((server) => { const canDelete = server.totalSum === 0; return ( {server.name} {server.ipAddress} {server.port} {server.username} {server.sshKeyId ? "Yes" : "No"} {format(new Date(server.createdAt), "PPpp")} Actions {server.sshKeyId && ( Enter the terminal )} {server.sshKeyId && ( )} You can not delete this server because it has active services. You have active services associated with this server, please delete them first. ) } onClick={async () => { await mutateAsync({ serverId: server.serverId, }) .then(() => { refetch(); toast.success( `Server ${server.name} deleted succesfully`, ); }) .catch((err) => { toast.error(err.message); }); }} > e.preventDefault()} > Delete Server {server.sshKeyId && ( <> Extra )} ); })}
)}
); };