"use client"; import { blockDevice } from "@/actions/omada-actions"; import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; import { Label } from "@/components/ui/label"; import { cn } from "@/lib/utils"; import { zodResolver } from "@hookform/resolvers/zod"; import type { Device } from "@prisma/client"; import { OctagonX } from "lucide-react"; import { useState } from "react"; import { type SubmitHandler, useForm } from "react-hook-form"; import { toast } from "sonner"; import { z } from "zod"; import { TextShimmer } from "./ui/text-shimmer"; import { Textarea } from "./ui/textarea"; const validationSchema = z.object({ reasonForBlocking: z.string().min(5, { message: "Reason is required" }), }); export default function BlockDeviceDialog({ device, type, admin, }: { device: Device; type: "block" | "unblock"; admin?: boolean }) { const [disabled, setDisabled] = useState(false); const [open, setOpen] = useState(false); const { register, handleSubmit, formState: { errors }, } = useForm>({ resolver: zodResolver(validationSchema), }); const onSubmit: SubmitHandler> = (data) => { setDisabled(true); console.log(data); toast.promise( blockDevice({ macAddress: device.mac, type: type, reason: data.reasonForBlocking, blockedBy: "ADMIN", // reason: data.reasonForBlocking, }), { loading: "Blocking...", success: () => { setDisabled(false); setOpen((prev) => !prev); return "Blocked!"; }, error: (error) => { setDisabled(false); return error || "Something went wrong"; }, }, ); setDisabled(false); }; return (
{device.blocked ? ( ) : ( <> {!admin ? ( ) : ( Please provide a reason for blocking this device.