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 {t("jobs.groupMetadata")} - ({t("jobs.requiresLibrary")})