diff --git a/src/components/header/index.tsx b/src/components/header/index.tsx index 5a17771..47256da 100644 --- a/src/components/header/index.tsx +++ b/src/components/header/index.tsx @@ -21,7 +21,7 @@ import { useGetIdentity, useLogout } from "@refinedev/core"; import { HamburgerMenu, RefineThemedLayoutHeaderProps } from "@refinedev/mui"; import React, { useContext, useState } from "react"; import { ProjectSelector } from "@components/project/ProjectSelector"; -import { setMapWorkspace, setNetworkName } from "@config/config"; +import { setMapExtent, setMapWorkspace, setNetworkName } from "@config/config"; type IUser = { id: number; @@ -53,11 +53,18 @@ export const Header: React.FC = ({ setShowProjectSelector(true); }; - const handleProjectSelect = (workspace: string, networkName: string) => { + const handleProjectSelect = ( + workspace: string, + networkName: string, + extent: number[], + ) => { setMapWorkspace(workspace); setNetworkName(networkName); + setMapExtent(extent); localStorage.setItem("NEXT_PUBLIC_MAP_WORKSPACE", workspace); localStorage.setItem("NEXT_PUBLIC_NETWORK_NAME", networkName); + localStorage.setItem("NEXT_PUBLIC_MAP_EXTENT", extent.join(",")); + localStorage.removeItem(`${workspace}_map_view`); setShowProjectSelector(false); window.location.reload(); }; diff --git a/src/components/project/ProjectSelector.tsx b/src/components/project/ProjectSelector.tsx index 49cc6a7..5f8b6da 100644 --- a/src/components/project/ProjectSelector.tsx +++ b/src/components/project/ProjectSelector.tsx @@ -19,7 +19,7 @@ import { useState } from "react"; interface ProjectSelectorProps { open: boolean; - onSelect: (workspace: string, networkName: string, extent?: number[]) => void; + onSelect: (workspace: string, networkName: string, extent: number[]) => void; onClose?: () => void; } @@ -51,7 +51,7 @@ export const ProjectSelector: React.FC = ({ }) => { const [workspace, setWorkspace] = useState(PROJECTS[0].workspace); const [networkName, setNetworkName] = useState(PROJECTS[0].networkName); - const [extent, setExtent] = useState( + const [extent, setExtent] = useState( PROJECTS[0].extent, ); const [customMode, setCustomMode] = useState(false); diff --git a/src/contexts/ProjectContext.tsx b/src/contexts/ProjectContext.tsx index edc3340..5c7e367 100644 --- a/src/contexts/ProjectContext.tsx +++ b/src/contexts/ProjectContext.tsx @@ -34,22 +34,19 @@ export const ProjectProvider: React.FC<{ children: React.ReactNode }> = ({ applyConfig( savedWorkspace, savedNetwork, - savedExtent ? savedExtent.split(",").map(Number) : undefined, + savedExtent ? savedExtent.split(",").map(Number) : config.MAP_EXTENT, ); } }, []); - const applyConfig = async (ws: string, net: string, extent?: number[]) => { + const applyConfig = async (ws: string, net: string, extent: number[]) => { setMapWorkspace(ws); setNetworkName(net); - if (extent) { - setMapExtent(extent); - localStorage.setItem("NEXT_PUBLIC_MAP_EXTENT", extent.join(",")); - // Reset extent cache - localStorage.removeItem(`${ws}_map_view`); - } - - setCurrentProject({ workspace: ws, networkName: net, extent: extent || config.MAP_EXTENT }); + setMapExtent(extent); + localStorage.setItem("NEXT_PUBLIC_MAP_EXTENT", extent.join(",")); + // Reset extent cache + localStorage.removeItem(`${ws}_map_view`); + setCurrentProject({ workspace: ws, networkName: net, extent: extent }); // Save to localStorage localStorage.setItem("NEXT_PUBLIC_MAP_WORKSPACE", ws);