From bc5b365d6bb0a2311a57d3ce3d7153bc64340a3a Mon Sep 17 00:00:00 2001 From: NiravaM Date: Sat, 23 May 2026 22:43:39 +0530 Subject: [PATCH] feat(frontend): Preserve selected Scans filter in URL query params --- frontend/src/pages/Scans.tsx | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/frontend/src/pages/Scans.tsx b/frontend/src/pages/Scans.tsx index 48a07f0b..ef179d2f 100644 --- a/frontend/src/pages/Scans.tsx +++ b/frontend/src/pages/Scans.tsx @@ -1,5 +1,5 @@ import React, { useState, useEffect } from "react"; -import { useNavigate } from "react-router-dom"; +import { useNavigate, useSearchParams } from "react-router-dom"; import { motion, AnimatePresence } from "framer-motion"; import { API_BASE, deleteTask, clearAllTasks, bulkDeleteTasks } from "../api"; import { routePath } from "../routes"; @@ -54,9 +54,12 @@ const itemVariants = { export default function Scans() { const navigate = useNavigate(); + const [searchParams, setSearchParams] = useSearchParams(); const [tasks, setTasks] = useState([]); const [loading, setLoading] = useState(true); - const [filter, setFilter] = useState("all"); + + const rawFilter = searchParams.get("status"); + const filter = rawFilter && ["running", "completed", "failed", "cancelled"].includes(rawFilter) ? rawFilter : "all"; const [expandedId, setExpandedId] = useState(null); const [selectedIds, setSelectedIds] = useState([]); const [page, setPage] = useState(1); @@ -89,7 +92,14 @@ export default function Scans() { } } function handleFilterChange(value: string) { - setFilter(value); + setSearchParams((prev) => { + if (value === "all") { + prev.delete("status"); + } else { + prev.set("status", value); + } + return prev; + }); setPage(1); }