From d1016707ce8a05631f00d7495a17e75ddd20a820 Mon Sep 17 00:00:00 2001 From: mitoperni Date: Tue, 10 Feb 2026 00:31:34 +0100 Subject: [PATCH] fix: use sessionStorage for reliable back navigation in SPA --- src/components/map/mapbox-map.tsx | 1 + src/components/networks/network-card.tsx | 1 + src/components/stations/stations-header.tsx | 8 +++----- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/components/map/mapbox-map.tsx b/src/components/map/mapbox-map.tsx index c7e399c..8d84735 100644 --- a/src/components/map/mapbox-map.tsx +++ b/src/components/map/mapbox-map.tsx @@ -57,6 +57,7 @@ export function MapboxMap({ networks }: MapboxMapProps) { const handleNetworkClick = useCallback( (networkId: string) => { + sessionStorage.setItem('previousPath', window.location.search); router.push(`/network/${networkId}`); }, [router] diff --git a/src/components/networks/network-card.tsx b/src/components/networks/network-card.tsx index 711b090..b1a6c5a 100644 --- a/src/components/networks/network-card.tsx +++ b/src/components/networks/network-card.tsx @@ -18,6 +18,7 @@ export const NetworkCard = memo(function NetworkCard({ network }: NetworkCardPro return ( sessionStorage.setItem('previousPath', window.location.search)} className="group flex items-center justify-between border-b border-gray-100 py-4 px-6 transition-colors hover:bg-torea-bay-100" >
diff --git a/src/components/stations/stations-header.tsx b/src/components/stations/stations-header.tsx index d58ed4a..7d4b5c4 100644 --- a/src/components/stations/stations-header.tsx +++ b/src/components/stations/stations-header.tsx @@ -15,11 +15,9 @@ export function StationsHeader({ network }: StationsHeaderProps) { const { name, location, company } = network; const handleBack = () => { - if (window.history.length > 1) { - router.back(); - } else { - router.push('/'); - } + const previousSearch = sessionStorage.getItem('previousPath'); + router.push(`/${previousSearch || ''}`); + sessionStorage.removeItem('previousPath'); }; const visibleCompanies = company.slice(0, NETWORK_CARD.MAX_VISIBLE_COMPANIES); const remainingCount = company.length - NETWORK_CARD.MAX_VISIBLE_COMPANIES;