"use client"; import { useState, useRef, useEffect, useTransition } from "react"; import { Button } 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 monitorEnabled = formData.get("monitor_enabled") === "true"; const watcherEnabled = formData.get("watcher_enabled") === "true"; const scanMode = formData.get("scan_mode") as string; try { const response = await fetch(`/api/libraries/${libraryId}/monitoring`, { method: "PATCH", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ monitor_enabled: monitorEnabled, scan_mode: scanMode, watcher_enabled: watcherEnabled, }), }); if (response.ok) { setIsOpen(false); window.location.reload(); } else { console.error("Failed to save settings:", response.statusText); alert("Failed to save settings. Please try again."); } } catch (error) { console.error("Failed to save settings:", error); alert("Failed to save settings. Please try again."); } }); }; return (
{isOpen && (
)}
); }