From 7eb9e2dcad5b537505e71435b922a98237fb8eee Mon Sep 17 00:00:00 2001 From: Froidefond Julien Date: Mon, 9 Mar 2026 23:48:08 +0100 Subject: [PATCH] fix: bad ignore no settings update --- .gitignore | 2 +- .../api/libraries/[id]/monitoring/route.ts | 18 ++++++++++++ .../app/components/LibraryActions.tsx | 29 +++++++++++++------ 3 files changed, 39 insertions(+), 10 deletions(-) create mode 100644 apps/backoffice/app/api/libraries/[id]/monitoring/route.ts diff --git a/.gitignore b/.gitignore index cd38da8..d051fa6 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,7 @@ target/ .env .DS_Store tmp/ -libraries/ +/libraries/ node_modules/ .next/ data/thumbnails diff --git a/apps/backoffice/app/api/libraries/[id]/monitoring/route.ts b/apps/backoffice/app/api/libraries/[id]/monitoring/route.ts new file mode 100644 index 0000000..0522326 --- /dev/null +++ b/apps/backoffice/app/api/libraries/[id]/monitoring/route.ts @@ -0,0 +1,18 @@ +import { NextRequest, NextResponse } from "next/server"; +import { updateLibraryMonitoring } from "@/lib/api"; + +export async function PATCH( + request: NextRequest, + { params }: { params: Promise<{ id: string }> } +) { + const { id } = await params; + try { + const { monitor_enabled, scan_mode, watcher_enabled } = await request.json(); + const data = await updateLibraryMonitoring(id, monitor_enabled, scan_mode, watcher_enabled); + return NextResponse.json(data); + } catch (error) { + const message = error instanceof Error ? error.message : "Failed to update monitoring settings"; + console.error("[monitoring PATCH]", message); + return NextResponse.json({ error: message }, { status: 500 }); + } +} diff --git a/apps/backoffice/app/components/LibraryActions.tsx b/apps/backoffice/app/components/LibraryActions.tsx index 186836c..6317c19 100644 --- a/apps/backoffice/app/components/LibraryActions.tsx +++ b/apps/backoffice/app/components/LibraryActions.tsx @@ -20,6 +20,7 @@ export function LibraryActions({ }: LibraryActionsProps) { const [isOpen, setIsOpen] = useState(false); const [isPending, startTransition] = useTransition(); + const [saveError, setSaveError] = useState(null); const dropdownRef = useRef(null); useEffect(() => { @@ -33,11 +34,12 @@ export function LibraryActions({ }, []); const handleSubmit = (formData: FormData) => { + setSaveError(null); 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", @@ -48,17 +50,20 @@ export function LibraryActions({ 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."); + const body = await response.json().catch(() => ({})); + const msg = body?.error || `HTTP ${response.status}`; + console.error("Failed to save settings:", msg); + setSaveError(msg); } } catch (error) { - console.error("Failed to save settings:", error); - alert("Failed to save settings. Please try again."); + const msg = error instanceof Error ? error.message : "Network error"; + console.error("Failed to save settings:", msg); + setSaveError(msg); } }); }; @@ -121,9 +126,15 @@ export function LibraryActions({ -