优化项目配置逻辑,增强错误处理和状态更新

This commit is contained in:
2026-03-17 18:42:11 +08:00
parent e1e4664dec
commit d232104aa4
+32 -5
View File
@@ -51,16 +51,42 @@ export const ProjectProvider: React.FC<{ children: React.ReactNode }> = ({
setIsConfigured(true); setIsConfigured(true);
try { try {
const response = await apiFetch( // Open project backend (simulation model)
const openResponse = await apiFetch(
`${config.BACKEND_URL}/openproject/?network=${net}`, `${config.BACKEND_URL}/openproject/?network=${net}`,
{ {
method: "POST", method: "POST",
}, },
); );
if (!response.ok) { if (!openResponse.ok) {
throw new Error(`HTTP ${response.status}`); throw new Error(`Failed to open project: HTTP ${openResponse.status}`);
} }
const data = await response.json();
// Fetch project metadata
const infoResponse = await apiFetch(
`${config.BACKEND_URL}/project_info/?network=${net}`,
);
if (!infoResponse.ok) {
console.warn(
`Failed to fetch project info: HTTP ${infoResponse.status}`,
);
} else {
const data = await infoResponse.json();
// Update workspace if different
if (data?.gs_workspace && data.gs_workspace !== ws) {
setMapWorkspace(data.gs_workspace);
localStorage.setItem(
"NEXT_PUBLIC_MAP_WORKSPACE",
data.gs_workspace,
);
setCurrentProject((prev) => ({
...prev,
workspace: data.gs_workspace,
}));
}
// Update extent if available
const bbox = Array.isArray(data?.map_extent?.bbox) const bbox = Array.isArray(data?.map_extent?.bbox)
? data.map_extent.bbox.map((value: number) => Number(value)) ? data.map_extent.bbox.map((value: number) => Number(value))
: null; : null;
@@ -70,8 +96,9 @@ export const ProjectProvider: React.FC<{ children: React.ReactNode }> = ({
localStorage.removeItem(`${ws}_map_view`); localStorage.removeItem(`${ws}_map_view`);
setCurrentProject((prev) => ({ ...prev, extent: bbox })); setCurrentProject((prev) => ({ ...prev, extent: bbox }));
} }
}
} catch (error) { } catch (error) {
console.error("Failed to open project:", error); console.error("Failed to setup project:", error);
} }
}, [setCurrentProjectId]); }, [setCurrentProjectId]);