mirror of
https://github.com/khairul169/db-backup-tool.git
synced 2025-04-28 16:49:34 +07:00
51 lines
1.4 KiB
TypeScript
51 lines
1.4 KiB
TypeScript
import { ErrorAlert } from "@/components/ui/alert";
|
|
import Button from "@/components/ui/button";
|
|
import api, { parseJson } from "@/lib/api";
|
|
import { useQuery } from "react-query";
|
|
import ServerList from "./components/server-list";
|
|
import AddServerDialog from "./components/add-server-dialog";
|
|
import { addServerDlg } from "./stores";
|
|
import { initialServerData } from "./schema";
|
|
import PageTitle from "@/components/ui/page-title";
|
|
|
|
const ServerPage = () => {
|
|
const { data, isLoading, error } = useQuery({
|
|
queryKey: ["servers"],
|
|
queryFn: () => api.servers.$get().then(parseJson),
|
|
});
|
|
|
|
return (
|
|
<main>
|
|
<div className="flex items-center gap-2 mt-2 md:mt-4">
|
|
<PageTitle className="flex-1">Servers</PageTitle>
|
|
|
|
<Button onClick={() => addServerDlg.onOpen({ ...initialServerData })}>
|
|
Add Server
|
|
</Button>
|
|
</div>
|
|
|
|
{isLoading ? (
|
|
<div>Loading...</div>
|
|
) : error ? (
|
|
<ErrorAlert error={error} />
|
|
) : !data?.length ? (
|
|
<div className="mt-4 min-h-60 md:min-h-80 flex flex-col items-center justify-center">
|
|
<p>No server added.</p>
|
|
<Button
|
|
className="mt-2"
|
|
onClick={() => addServerDlg.onOpen({ ...initialServerData })}
|
|
>
|
|
Add Server
|
|
</Button>
|
|
</div>
|
|
) : (
|
|
<ServerList items={data} />
|
|
)}
|
|
|
|
<AddServerDialog />
|
|
</main>
|
|
);
|
|
};
|
|
|
|
export default ServerPage;
|