"use client"; import { CROSS_PROVIDER_PDF_TASK_KIND, crossProviderPdfHandler, } from "@/app/(prowler)/compliance/_lib/cross-provider-pdf"; import { jiraDispatchTaskHandler } from "@/components/findings/jira-dispatch-task-handler"; import { useMountEffect } from "@/hooks/use-mount-effect"; import { registerTaskKindHandler, resumePendingTasks, } from "@/store/task-watcher/store"; import { JIRA_DISPATCH_TASK_KIND } from "@/types/integrations"; // Kind registrations happen at module scope, before any task can settle in // this tab. Adding a new watched task kind (integration tests, scan exports, // …) is one line here plus a handler next to the feature that owns it. registerTaskKindHandler(CROSS_PROVIDER_PDF_TASK_KIND, crossProviderPdfHandler); registerTaskKindHandler(JIRA_DISPATCH_TASK_KIND, jiraDispatchTaskHandler); /** * Mounted once in the app layout (next to `Toaster`): resumes polling any * backend task persisted as pending by `@/store/task-watcher`, so completion * toasts survive a hard reload. In-session tracking needs no component at * all — `trackAndPollTask` runs its loop at module scope from the * dispatching click handler. */ export const TaskPollingWatcher = () => { useMountEffect(() => { resumePendingTasks(); }); return null; };