import { useMutation } from "@tanstack/react-query"; import { Bell, Plus } from "lucide-react"; import { useId } from "react"; import { useNavigate } from "react-router"; import { toast } from "sonner"; import { createNotificationDestinationMutation } from "~/client/api-client/@tanstack/react-query.gen"; 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-notification"; import { Alert, AlertDescription } from "~/client/components/ui/alert"; import { CreateNotificationForm, type NotificationFormValues } from "../components/create-notification-form"; export const handle = { breadcrumb: () => [{ label: "Notifications", href: "/notifications" }, { label: "Create" }], }; export function meta(_: Route.MetaArgs) { return [ { title: "Zerobyte - Create Notification" }, { name: "description", content: "Create a new notification destination for backup alerts.", }, ]; } export default function CreateNotification() { const navigate = useNavigate(); const formId = useId(); const createNotification = useMutation({ ...createNotificationDestinationMutation(), onSuccess: () => { toast.success("Notification destination created successfully"); navigate(`/notifications`); }, }); const handleSubmit = (values: NotificationFormValues) => { createNotification.mutate({ body: { name: values.name, config: values } }); }; return (
Create Notification Destination
{createNotification.isError && ( Failed to create notification destination:
{parseError(createNotification.error)?.message}
)}
); }