diff --git a/apps/backoffice/app/jobs/page.tsx b/apps/backoffice/app/jobs/page.tsx
index 4c27aed..1c066d0 100644
--- a/apps/backoffice/app/jobs/page.tsx
+++ b/apps/backoffice/app/jobs/page.tsx
@@ -60,30 +60,62 @@ export default async function JobsPage({ searchParams }: { searchParams: Promise
async function triggerMetadataBatch(formData: FormData) {
"use server";
const libraryId = formData.get("library_id") as string;
- if (!libraryId) return;
- let result;
- try {
- result = await startMetadataBatch(libraryId);
- } catch {
- // Library may have metadata disabled — ignore silently
- return;
+ if (libraryId) {
+ let result;
+ try {
+ result = await startMetadataBatch(libraryId);
+ } catch {
+ // Library may have metadata disabled — ignore silently
+ return;
+ }
+ revalidatePath("/jobs");
+ redirect(`/jobs?highlight=${result.id}`);
+ } else {
+ // All libraries — skip those with metadata disabled
+ const allLibraries = await fetchLibraries().catch(() => [] as LibraryDto[]);
+ let lastId: string | undefined;
+ for (const lib of allLibraries) {
+ if (lib.metadata_provider === "none") continue;
+ try {
+ const result = await startMetadataBatch(lib.id);
+ if (result.status !== "already_running") lastId = result.id;
+ } catch {
+ // Library may have metadata disabled or other issue — skip
+ }
+ }
+ revalidatePath("/jobs");
+ redirect(lastId ? `/jobs?highlight=${lastId}` : "/jobs");
}
- revalidatePath("/jobs");
- redirect(`/jobs?highlight=${result.id}`);
}
async function triggerMetadataRefresh(formData: FormData) {
"use server";
const libraryId = formData.get("library_id") as string;
- if (!libraryId) return;
- let result;
- try {
- result = await startMetadataRefresh(libraryId);
- } catch {
- return;
+ if (libraryId) {
+ let result;
+ try {
+ result = await startMetadataRefresh(libraryId);
+ } catch {
+ return;
+ }
+ revalidatePath("/jobs");
+ redirect(`/jobs?highlight=${result.id}`);
+ } else {
+ // All libraries — skip those with metadata disabled
+ const allLibraries = await fetchLibraries().catch(() => [] as LibraryDto[]);
+ let lastId: string | undefined;
+ for (const lib of allLibraries) {
+ if (lib.metadata_provider === "none") continue;
+ try {
+ const result = await startMetadataRefresh(lib.id);
+ if (result.status !== "already_running") lastId = result.id;
+ } catch {
+ // Library may have metadata disabled or no approved links — skip
+ }
+ }
+ revalidatePath("/jobs");
+ redirect(lastId ? `/jobs?highlight=${lastId}` : "/jobs");
}
- revalidatePath("/jobs");
- redirect(`/jobs?highlight=${result.id}`);
}
return (
@@ -197,7 +229,6 @@ export default async function JobsPage({ searchParams }: { searchParams: Promise