From 223073e3df1aee84b2eb748c718556620073723f Mon Sep 17 00:00:00 2001 From: Pablo Lara Date: Mon, 18 Nov 2024 09:07:07 +0100 Subject: [PATCH] feat: allow compliance data selection by choosing a scan --- app/(prowler)/compliance/page.tsx | 14 +++++++++++++- .../compliance/data-compliance/data-compliance.tsx | 9 ++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/app/(prowler)/compliance/page.tsx b/app/(prowler)/compliance/page.tsx index 8d3f8315f1..68a9a89dbe 100644 --- a/app/(prowler)/compliance/page.tsx +++ b/app/(prowler)/compliance/page.tsx @@ -45,10 +45,22 @@ export default async function Compliance({ const SSRComplianceGrid = async ({ scanId }: { scanId: string }) => { const compliancesData = await getCompliancesOverview({ scanId }); + // Check if the response contains no data + if (!compliancesData || compliancesData?.data?.length === 0) { + return ( +
+
+ No compliance data available for the selected scan. +
+
+ ); + } + + // Handle errors returned by the API if (compliancesData?.errors?.length > 0) { return (
-
There is no compliance data.
+
Provide a valid scan ID.
); } diff --git a/components/compliance/data-compliance/data-compliance.tsx b/components/compliance/data-compliance/data-compliance.tsx index 52484f6bd7..67e45f9ff4 100644 --- a/components/compliance/data-compliance/data-compliance.tsx +++ b/components/compliance/data-compliance/data-compliance.tsx @@ -11,7 +11,14 @@ interface DataComplianceProps { export const DataCompliance = ({ scans }: DataComplianceProps) => { const router = useRouter(); const searchParams = useSearchParams(); - const selectedScanId = searchParams.get("scanId") || scans[0]?.id; + const scanIdParam = searchParams.get("scanId"); + const selectedScanId = + scanIdParam === "undefined" || !scanIdParam ? scans[0]?.id : scanIdParam; + + if (scanIdParam === "undefined") { + router.replace("/compliance"); + return null; + } const handleSelectionChange = (selectedKey: string) => { router.push(`?scanId=${selectedKey}`);