Files
prowler/ui/components/scans/auto-refresh.tsx
T

38 lines
1.0 KiB
TypeScript

"use client";
import { useRouter, useSearchParams } from "next/navigation";
import { useEffect } from "react";
interface AutoRefreshProps {
hasExecutingScan: boolean;
/** Optional callback for client-side refresh (used when data is managed in local state) */
onRefresh?: () => void | Promise<void>;
}
export function AutoRefresh({ hasExecutingScan, onRefresh }: AutoRefreshProps) {
const router = useRouter();
const searchParams = useSearchParams();
useEffect(() => {
if (!hasExecutingScan) return;
// Don't auto-refresh if scan details drawer is open
const scanId = searchParams.get("scanId");
if (scanId) return;
const interval = setInterval(() => {
if (onRefresh) {
// Use custom refresh callback for client-side state management
onRefresh();
} else {
// Default: trigger server-side refresh
router.refresh();
}
}, 5000);
return () => clearInterval(interval);
}, [hasExecutingScan, router, searchParams, onRefresh]);
return null;
}