修复MAP_EXTENT状态更新的BUG

This commit is contained in:
JIANG
2026-02-11 14:17:16 +08:00
parent 2911b87fac
commit a2e6c1f416
3 changed files with 18 additions and 14 deletions

View File

@@ -21,7 +21,7 @@ import { useGetIdentity, useLogout } from "@refinedev/core";
import { HamburgerMenu, RefineThemedLayoutHeaderProps } from "@refinedev/mui"; import { HamburgerMenu, RefineThemedLayoutHeaderProps } from "@refinedev/mui";
import React, { useContext, useState } from "react"; import React, { useContext, useState } from "react";
import { ProjectSelector } from "@components/project/ProjectSelector"; import { ProjectSelector } from "@components/project/ProjectSelector";
import { setMapWorkspace, setNetworkName } from "@config/config"; import { setMapExtent, setMapWorkspace, setNetworkName } from "@config/config";
type IUser = { type IUser = {
id: number; id: number;
@@ -53,11 +53,18 @@ export const Header: React.FC<RefineThemedLayoutHeaderProps> = ({
setShowProjectSelector(true); setShowProjectSelector(true);
}; };
const handleProjectSelect = (workspace: string, networkName: string) => { const handleProjectSelect = (
workspace: string,
networkName: string,
extent: number[],
) => {
setMapWorkspace(workspace); setMapWorkspace(workspace);
setNetworkName(networkName); setNetworkName(networkName);
setMapExtent(extent);
localStorage.setItem("NEXT_PUBLIC_MAP_WORKSPACE", workspace); localStorage.setItem("NEXT_PUBLIC_MAP_WORKSPACE", workspace);
localStorage.setItem("NEXT_PUBLIC_NETWORK_NAME", networkName); localStorage.setItem("NEXT_PUBLIC_NETWORK_NAME", networkName);
localStorage.setItem("NEXT_PUBLIC_MAP_EXTENT", extent.join(","));
localStorage.removeItem(`${workspace}_map_view`);
setShowProjectSelector(false); setShowProjectSelector(false);
window.location.reload(); window.location.reload();
}; };

View File

@@ -19,7 +19,7 @@ import { useState } from "react";
interface ProjectSelectorProps { interface ProjectSelectorProps {
open: boolean; open: boolean;
onSelect: (workspace: string, networkName: string, extent?: number[]) => void; onSelect: (workspace: string, networkName: string, extent: number[]) => void;
onClose?: () => void; onClose?: () => void;
} }
@@ -51,7 +51,7 @@ export const ProjectSelector: React.FC<ProjectSelectorProps> = ({
}) => { }) => {
const [workspace, setWorkspace] = useState(PROJECTS[0].workspace); const [workspace, setWorkspace] = useState(PROJECTS[0].workspace);
const [networkName, setNetworkName] = useState(PROJECTS[0].networkName); const [networkName, setNetworkName] = useState(PROJECTS[0].networkName);
const [extent, setExtent] = useState<number[] | undefined>( const [extent, setExtent] = useState<number[]>(
PROJECTS[0].extent, PROJECTS[0].extent,
); );
const [customMode, setCustomMode] = useState(false); const [customMode, setCustomMode] = useState(false);

View File

@@ -34,22 +34,19 @@ export const ProjectProvider: React.FC<{ children: React.ReactNode }> = ({
applyConfig( applyConfig(
savedWorkspace, savedWorkspace,
savedNetwork, 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); setMapWorkspace(ws);
setNetworkName(net); setNetworkName(net);
if (extent) { setMapExtent(extent);
setMapExtent(extent); localStorage.setItem("NEXT_PUBLIC_MAP_EXTENT", extent.join(","));
localStorage.setItem("NEXT_PUBLIC_MAP_EXTENT", extent.join(",")); // Reset extent cache
// Reset extent cache localStorage.removeItem(`${ws}_map_view`);
localStorage.removeItem(`${ws}_map_view`); setCurrentProject({ workspace: ws, networkName: net, extent: extent });
}
setCurrentProject({ workspace: ws, networkName: net, extent: extent || config.MAP_EXTENT });
// Save to localStorage // Save to localStorage
localStorage.setItem("NEXT_PUBLIC_MAP_WORKSPACE", ws); localStorage.setItem("NEXT_PUBLIC_MAP_WORKSPACE", ws);