import { createNotification, updateNotification } from "@/api/notification" import { Button } from "@/components/ui/button" import { Checkbox } from "@/components/ui/checkbox" import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog" import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { ScrollArea } from "@/components/ui/scroll-area" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select" import { IconButton } from "@/components/xui/icon-button" import { asOptionalField } from "@/lib/utils" import { ModelNotification } from "@/types" import { nrequestMethods, nrequestTypes } from "@/types" import { zodResolver } from "@hookform/resolvers/zod" import { useState } from "react" import { useForm } from "react-hook-form" import { useTranslation } from "react-i18next" import { toast } from "sonner" import { KeyedMutator } from "swr" import { z } from "zod" import { Textarea } from "./ui/textarea" interface NotifierCardProps { data?: ModelNotification mutate: KeyedMutator } const notificationFormSchema = z.object({ name: z.string().min(1), url: z.string().url(), request_method: z.coerce.number().int().min(1).max(255), request_type: z.coerce.number().int().min(1).max(255), request_header: z.string(), request_body: z.string(), verify_tls: asOptionalField(z.boolean()), skip_check: asOptionalField(z.boolean()), }) export const NotifierCard: React.FC = ({ data, mutate }) => { const { t } = useTranslation() const form = useForm>({ resolver: zodResolver(notificationFormSchema), defaultValues: data ? data : { name: "", url: "", request_method: 1, request_type: 1, request_header: "", request_body: "", }, resetOptions: { keepDefaultValues: false, }, }) const [open, setOpen] = useState(false) const onSubmit = async (values: z.infer) => { try { data?.id ? await updateNotification(data.id, values) : await createNotification(values) } catch (e) { console.error(e) toast(t("Error"), { description: t("Results.UnExpectedError"), }) return } setOpen(false) await mutate() form.reset() } return ( {data ? : }
{data ? t("EditNotifier") : t("CreateNotifier")}
( {t("Name")} )} /> ( URL )} /> ( {t("RequestMethod")} )} /> ( {t("Type")} )} /> ( {t("RequestHeader")}