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({
-
+ )}
+
+