调整环境变量参数,支持项目切换
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
"use client";
|
||||
import React, { createContext, useContext, useEffect, useState } from "react";
|
||||
import { useSession } from "next-auth/react";
|
||||
import { config, NETWORK_NAME, setMapWorkspace, setNetworkName } from "@/config/config";
|
||||
import { config, NETWORK_NAME, setMapWorkspace, setNetworkName, setMapExtent } from "@/config/config";
|
||||
import { ProjectSelector } from "@/components/project/ProjectSelector";
|
||||
|
||||
interface ProjectContextType {
|
||||
@@ -25,23 +25,43 @@ export const ProjectProvider: React.FC<{ children: React.ReactNode }> = ({
|
||||
// Check localStorage
|
||||
const savedWorkspace = localStorage.getItem("NEXT_PUBLIC_MAP_WORKSPACE");
|
||||
const savedNetwork = localStorage.getItem("NEXT_PUBLIC_NETWORK_NAME");
|
||||
const savedExtent = localStorage.getItem("NEXT_PUBLIC_MAP_EXTENT");
|
||||
|
||||
// If we have saved config, use it.
|
||||
if (savedWorkspace && savedNetwork) {
|
||||
applyConfig(savedWorkspace, savedNetwork);
|
||||
applyConfig(
|
||||
savedWorkspace,
|
||||
savedNetwork,
|
||||
savedExtent ? savedExtent.split(",").map(Number) : undefined,
|
||||
);
|
||||
}
|
||||
}, []);
|
||||
|
||||
const applyConfig = (ws: string, net: string) => {
|
||||
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 });
|
||||
|
||||
|
||||
// Save to localStorage
|
||||
localStorage.setItem("NEXT_PUBLIC_MAP_WORKSPACE", ws);
|
||||
localStorage.setItem("NEXT_PUBLIC_NETWORK_NAME", net);
|
||||
|
||||
|
||||
setIsConfigured(true);
|
||||
|
||||
try {
|
||||
await fetch(`${config.BACKEND_URL}/openproject/?network=${net}`, {
|
||||
method: "POST",
|
||||
});
|
||||
} catch (error) {
|
||||
console.error("Failed to open project:", error);
|
||||
}
|
||||
};
|
||||
|
||||
// Only show selector if authenticated and not configured
|
||||
@@ -49,7 +69,7 @@ export const ProjectProvider: React.FC<{ children: React.ReactNode }> = ({
|
||||
return (
|
||||
<ProjectSelector
|
||||
open={true}
|
||||
onSelect={(ws, net) => applyConfig(ws, net)}
|
||||
onSelect={(ws, net, extent) => applyConfig(ws, net, extent)}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user