mirror of
https://github.com/prowler-cloud/prowler.git
synced 2026-10-18 09:24:15 +00:00
Co-authored-by: Sergio Garcia <hello@mistercloudsec.com> Co-authored-by: alejandrobailo <alejandrobailo94@gmail.com> Co-authored-by: Víctor Fernández Poyatos <victor@prowler.com>
48 lines
1.4 KiB
TypeScript
48 lines
1.4 KiB
TypeScript
"use client";
|
|
|
|
import { useRouter, useSearchParams } from "next/navigation";
|
|
import { useEffect } from "react";
|
|
|
|
import {
|
|
ScanSelector,
|
|
SelectScanComplianceDataProps,
|
|
} from "@/components/compliance/compliance-header/index";
|
|
interface DataComplianceProps {
|
|
scans: SelectScanComplianceDataProps["scans"];
|
|
}
|
|
|
|
export const DataCompliance = ({ scans }: DataComplianceProps) => {
|
|
const router = useRouter();
|
|
const searchParams = useSearchParams();
|
|
|
|
const scanIdParam = searchParams.get("scanId");
|
|
|
|
const selectedScanId = scanIdParam || (scans.length > 0 ? scans[0].id : "");
|
|
|
|
// Don't auto-push scanId to URL - the server already handles the default scan selection
|
|
// This avoids duplicate API calls caused by client-side navigation
|
|
useEffect(() => {
|
|
if (!scanIdParam && scans.length > 0) {
|
|
const params = new URLSearchParams(searchParams);
|
|
params.set("scanId", scans[0].id);
|
|
router.replace(`?${params.toString()}`, { scroll: false });
|
|
}
|
|
}, [scans, scanIdParam, searchParams, router]);
|
|
|
|
const handleScanChange = (selectedKey: string) => {
|
|
const params = new URLSearchParams(searchParams);
|
|
params.set("scanId", selectedKey);
|
|
router.push(`?${params.toString()}`);
|
|
};
|
|
|
|
return (
|
|
<div className="flex max-w-fit">
|
|
<ScanSelector
|
|
scans={scans}
|
|
selectedScanId={selectedScanId}
|
|
onSelectionChange={handleScanChange}
|
|
/>
|
|
</div>
|
|
);
|
|
};
|