修复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 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<RefineThemedLayoutHeaderProps> = ({
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();
};

View File

@@ -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<ProjectSelectorProps> = ({
}) => {
const [workspace, setWorkspace] = useState(PROJECTS[0].workspace);
const [networkName, setNetworkName] = useState(PROJECTS[0].networkName);
const [extent, setExtent] = useState<number[] | undefined>(
const [extent, setExtent] = useState<number[]>(
PROJECTS[0].extent,
);
const [customMode, setCustomMode] = useState(false);

View File

@@ -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);