33 * SPDX-License-Identifier: Apache-2.0
44 */
55
6- import React , { useCallback , useEffect } from "react"
7- import { useLoaderData , useNavigate , useRouteContext } from "@tanstack/react-router"
6+ import React , { useCallback , useLayoutEffect } from "react"
7+ import { useLoaderData , useNavigate , useRouteContext , useSearch } from "@tanstack/react-router"
88import { Filters } from "../common/Filters"
99import { FilterSettings } from "../common/Filters/types"
1010import { getFiltersForUrl , getInitialFilters } from "./utils"
@@ -15,17 +15,17 @@ export const ServicesFilters = () => {
1515 const navigate = useNavigate ( )
1616 const { filters, filterSettings } = useLoaderData ( { from : "/services/" } )
1717 const { appProps } = useRouteContext ( { from : "/services/" } )
18+ const search = useSearch ( { from : "/services/" } )
1819 const { hasAppliedInitialFilters, markInitialFiltersApplied } = useStore ( )
1920
2021 // Use store to track initial filters across tab navigation - prevents re-application when switching between services/vulnerabilities tabs
21- useEffect ( ( ) => {
22+ useLayoutEffect ( ( ) => {
2223 if ( hasAppliedInitialFilters ) return
2324
24- const urlParams = new URLSearchParams ( window . location . search )
25- const hasUrlFilters = Array . from ( urlParams . keys ( ) ) . some ( ( key ) => key . startsWith ( SELECTED_FILTER_PREFIX ) )
26- const hasAnySearchParams = urlParams . toString ( ) . length > 0
25+ // Use parsed search params from TanStack Router instead of window.location.search
26+ const hasUrlFilters = Object . keys ( search ) . some ( ( key ) => key . startsWith ( SELECTED_FILTER_PREFIX ) )
2727
28- if ( ! hasUrlFilters && ! hasAnySearchParams && appProps ?. initialFilters ?. support_group ?. length ) {
28+ if ( ! hasUrlFilters && appProps ?. initialFilters ?. support_group ?. length ) {
2929 const initialFilters = getInitialFilters ( appProps . initialFilters )
3030
3131 if ( initialFilters . length > 0 ) {
@@ -40,7 +40,7 @@ export const ServicesFilters = () => {
4040 markInitialFiltersApplied ( )
4141 }
4242 }
43- } , [ navigate , appProps , hasAppliedInitialFilters , markInitialFiltersApplied ] )
43+ } , [ navigate , appProps , hasAppliedInitialFilters , markInitialFiltersApplied , search ] )
4444
4545 const handleFilterChange = useCallback (
4646 ( updatedFilterSettings : FilterSettings ) => {
0 commit comments