"use client"; import { useState, useRef, useEffect, useTransition } from "react"; import Link from "next/link"; import { Button, Badge } from "../components/ui"; interface LibraryActionsProps { libraryId: string; monitorEnabled: boolean; scanMode: string; watcherEnabled: boolean; onUpdate?: () => void; } export function LibraryActions({ libraryId, monitorEnabled, scanMode, watcherEnabled, onUpdate }: LibraryActionsProps) { const [isOpen, setIsOpen] = useState(false); const [isPending, startTransition] = useTransition(); const dropdownRef = useRef(null); useEffect(() => { const handleClickOutside = (event: MouseEvent) => { if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) { setIsOpen(false); } }; document.addEventListener("mousedown", handleClickOutside); return () => document.removeEventListener("mousedown", handleClickOutside); }, []); const handleSubmit = (formData: FormData) => { startTransition(async () => { const data = { monitor_enabled: formData.get("monitor_enabled") === "true", scan_mode: formData.get("scan_mode") as string, watcher_enabled: formData.get("watcher_enabled") === "true", }; await fetch(`/api/libraries/${libraryId}/monitoring`, { method: "PATCH", headers: { "Content-Type": "application/json" }, body: JSON.stringify(data), }); setIsOpen(false); onUpdate?.(); window.location.reload(); }); }; return (
{isOpen && (
)}
); }