"use client"; import { AddDevice } from "@/actions/user-actions"; import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { zodResolver } from "@hookform/resolvers/zod"; import { Loader2, Plus } from "lucide-react"; import { useState } from "react"; import { type SubmitHandler, useForm } from "react-hook-form"; import { toast } from "sonner"; import { z } from "zod"; export default function AddDeviceDialogForm({ user_id }: { user_id?: string }) { const formSchema = z.object({ name: z.string().min(2, { message: "Name is required." }), mac_address: z .string() .min(2, { message: "MAC Address is required." }) .regex( /^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/, "Please enter a valid MAC address", ), }); const [disabled, setDisabled] = useState(false); const [open, setOpen] = useState(false); const { register, handleSubmit, formState: { errors }, } = useForm>({ resolver: zodResolver(formSchema), }); if (!user_id) { return null } const onSubmit: SubmitHandler> = (data) => { console.log(data); setDisabled(true) toast.promise(AddDevice({ mac_address: data.mac_address, name: data.name, user_id: user_id }), { loading: 'Adding new device...', success: () => { setDisabled(false) setOpen((prev) => !prev) return 'Device successfully added!' }, error: (error) => { setDisabled(false) return error || 'Something went wrong.' }, }) }; return ( New Device To add a new device, enter the device name and mac address below. Click save when you are done.
{errors.name?.message}
{errors.mac_address?.message}
); }