From c3e85c37687943252d48a6f021a397338b794870 Mon Sep 17 00:00:00 2001 From: Hikari Date: Mon, 9 Mar 2026 22:15:38 -0700 Subject: [PATCH] feat: persist exploration zone selection in sessionStorage MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Applies the same sticky-zone pattern as the boss and quest panels. The handleZoneSelect wrapper already existed — it just needed to write to sessionStorage alongside updating state, and the useState initialiser needed to read from sessionStorage on mount. --- apps/web/src/components/game/explorationPanel.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/web/src/components/game/explorationPanel.tsx b/apps/web/src/components/game/explorationPanel.tsx index 03ce4c0..b32fac4 100644 --- a/apps/web/src/components/game/explorationPanel.tsx +++ b/apps/web/src/components/game/explorationPanel.tsx @@ -67,7 +67,9 @@ interface CollectResult { const ExplorationPanel = (): JSX.Element => { const { state, startExploration, collectExploration, formatNumber } = useGame(); - const [ activeZoneId, setActiveZoneId ] = useState("verdant_vale"); + const [ activeZoneId, setActiveZoneId ] = useState(() => { + return sessionStorage.getItem("elysium_explore_zone") ?? "verdant_vale"; + }); const [ pendingAreaId, setPendingAreaId ] = useState(null); const [ lastResult, setLastResult ] = useState(null); @@ -116,6 +118,7 @@ const ExplorationPanel = (): JSX.Element => { function handleZoneSelect(id: string): void { setActiveZoneId(id); setLastResult(null); + sessionStorage.setItem("elysium_explore_zone", id); } const goldChange = lastResult?.response.event?.goldChange ?? 0;