import { useMutation } from "@tanstack/react-query"; import { Database, Plus } from "lucide-react"; import { useId } from "react"; import { useNavigate } from "react-router"; import { toast } from "sonner"; import { createRepositoryMutation } from "~/client/api-client/@tanstack/react-query.gen"; import { CreateRepositoryForm, type RepositoryFormValues } from "~/client/components/create-repository-form"; import { Button } from "~/client/components/ui/button"; import { Card, CardContent, CardHeader, CardTitle } from "~/client/components/ui/card"; import { parseError } from "~/client/lib/errors"; import type { Route } from "./+types/create-repository"; import { Alert, AlertDescription } from "~/client/components/ui/alert"; export const handle = { breadcrumb: () => [{ label: "Repositories", href: "/repositories" }, { label: "Create" }], }; export function meta(_: Route.MetaArgs) { return [ { title: "Zerobyte - Create Repository" }, { name: "description", content: "Create a new backup repository with encryption and compression.", }, ]; } export default function CreateRepository() { const navigate = useNavigate(); const formId = useId(); const createRepository = useMutation({ ...createRepositoryMutation(), onSuccess: (data) => { toast.success("Repository created successfully"); navigate(`/repositories/${data.repository.name}`); }, }); const handleSubmit = (values: RepositoryFormValues) => { createRepository.mutate({ body: { config: values, name: values.name, compressionMode: values.compressionMode, }, }); }; return (
Create Repository
{createRepository.isError && ( Failed to create repository:
{parseError(createRepository.error)?.message}
)}
); }