Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit9c4baf3

Browse files
committed
refactor routing structure and fix loading / duplicate network requests
1 parentbadf60f commit9c4baf3

File tree

9 files changed

+99
-90
lines changed

9 files changed

+99
-90
lines changed

‎client/packages/lowcoder/src/pages/setting/environments/EnvironmentDetail.tsx‎

Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
importReact,{useState}from"react";
2-
import{useParams}from"react-router-dom";
32
import{
43
Spin,
54
Typography,
@@ -8,25 +7,18 @@ import {
87
Tabs,
98
Alert,
109
Descriptions,
11-
Dropdown,
1210
Menu,
1311
Button,
1412
Breadcrumb,
1513
}from"antd";
1614
import{
17-
ReloadOutlined,
1815
LinkOutlined,
19-
ClusterOutlined,
2016
TeamOutlined,
21-
UserOutlined,
22-
SyncOutlined,
2317
EditOutlined,
24-
EllipsisOutlined,
25-
MoreOutlined,
2618
HomeOutlined
2719
}from"@ant-design/icons";
2820

29-
import{useEnvironmentContext}from"./context/EnvironmentContext";
21+
import{useSingleEnvironmentContext}from"./context/SingleEnvironmentContext";
3022
import{workspaceConfig}from"./config/workspace.config";
3123
import{userGroupsConfig}from"./config/usergroups.config";
3224
importDeployableItemsTabfrom"./components/DeployableItemsTab";
@@ -37,21 +29,18 @@ import history from "@lowcoder-ee/util/history";
3729
const{ Title, Text}=Typography;
3830
const{ TabPane}=Tabs;
3931

40-
4132
/**
4233
* Environment Detail Page Component
4334
* Shows detailed information about a specific environment
4435
*/
4536
constEnvironmentDetail:React.FC=()=>{
46-
//Get environment ID from URL params
37+
//Use the SingleEnvironmentContext instead of EnvironmentContext
4738
const{
4839
environment,
49-
isLoadingEnvironment,
40+
isLoading,
5041
error,
5142
updateEnvironmentData
52-
}=useEnvironmentContext();
53-
54-
43+
}=useSingleEnvironmentContext();
5544

5645
const[isEditModalVisible,setIsEditModalVisible]=useState(false);
5746
const[isUpdating,setIsUpdating]=useState(false);
@@ -67,10 +56,12 @@ const EnvironmentDetail: React.FC = () => {
6756
};
6857

6958
// Handle save environment
70-
consthandleSaveEnvironment=async(environmentId:string,data:Partial<Environment>)=>{
59+
consthandleSaveEnvironment=async(data:Partial<Environment>)=>{
60+
if(!environment)return;
61+
7162
setIsUpdating(true);
7263
try{
73-
awaitupdateEnvironmentData(environmentId,data);
64+
awaitupdateEnvironmentData(data);
7465
handleCloseModal();
7566
}catch(error){
7667
console.error('Failed to update environment:',error);
@@ -89,7 +80,7 @@ const EnvironmentDetail: React.FC = () => {
8980
</Menu>
9081
);
9182

92-
if(isLoadingEnvironment){
83+
if(isLoading){
9384
return(
9485
<divstyle={{display:'flex',justifyContent:'center',padding:'50px'}}>
9586
<Spinsize="large"tip="Loading environment..."/>
@@ -107,6 +98,7 @@ const EnvironmentDetail: React.FC = () => {
10798
/>
10899
);
109100
}
101+
110102
return(
111103
<div
112104
className="environment-detail-container"
@@ -124,7 +116,6 @@ const EnvironmentDetail: React.FC = () => {
124116
<Breadcrumb.Item>{environment.environmentName}</Breadcrumb.Item>
125117
</Breadcrumb>
126118

127-
{/* Header with environment name and controls */}
128119
{/* Header with environment name and controls */}
129120
<div
130121
className="environment-header"
@@ -231,6 +222,7 @@ const EnvironmentDetail: React.FC = () => {
231222
/>
232223
</TabPane>
233224
</Tabs>
225+
234226
{/* Edit Environment Modal */}
235227
{environment&&(
236228
<EditEnvironmentModal
@@ -245,4 +237,4 @@ const EnvironmentDetail: React.FC = () => {
245237
);
246238
};
247239

248-
exportdefaultEnvironmentDetail;
240+
exportdefaultEnvironmentDetail;

‎client/packages/lowcoder/src/pages/setting/environments/Environments.tsx‎

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,28 @@
1+
// client/packages/lowcoder/src/pages/setting/environments/Environments.tsx
12
importReactfrom"react";
2-
import{Switch,Route}from"react-router-dom";
3+
import{Switch,Route,useRouteMatch}from"react-router-dom";
34
import{EnvironmentProvider}from"./context/EnvironmentContext";
5+
importEnvironmentRoutesfrom"./routes/EnvironmentRoutes";
46
importEnvironmentsListfrom"./EnvironmentsList";
5-
importEnvironmentScopedRoutesfrom"./components/EnvironmentScopedRoutes";
6-
7-
import{
8-
ENVIRONMENT_SETTING,
9-
ENVIRONMENT_DETAIL
10-
}from"@lowcoder-ee/constants/routesURL";
117

128
/**
13-
* Top-level Environments component that wraps all environment-related routes
14-
*with the EnvironmentProviderfor shared state management
9+
* Top-level Environments component
10+
*Provides the EnvironmentProviderat the top level
1511
*/
1612
constEnvironments:React.FC=()=>{
13+
const{ path}=useRouteMatch();
14+
1715
return(
1816
<EnvironmentProvider>
1917
<Switch>
20-
{/*Route that shows thelistof environments */}
21-
<Routeexactpath={ENVIRONMENT_SETTING}>
18+
{/*Environmentlistroute */}
19+
<Routeexactpath={path}>
2220
<EnvironmentsList/>
2321
</Route>
24-
25-
{/* Allotherroutesunder /environments/:envId */}
26-
<Routepath={ENVIRONMENT_DETAIL}>
27-
<EnvironmentScopedRoutes/>
22+
23+
{/* All routesthat need a specific environment */}
24+
<Routepath={`${path}/:envId`}>
25+
<EnvironmentRoutes/>
2826
</Route>
2927
</Switch>
3028
</EnvironmentProvider>

‎client/packages/lowcoder/src/pages/setting/environments/EnvironmentsList.tsx‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ const EnvironmentsList: React.FC = () => {
1818
// Use the shared context instead of a local hook
1919
const{
2020
environments,
21-
isLoadingEnvironments,
21+
isLoading,
2222
error,
2323
}=useEnvironmentContext();
2424

@@ -83,7 +83,7 @@ const EnvironmentsList: React.FC = () => {
8383
)}
8484

8585
{/* Empty state handling */}
86-
{!isLoadingEnvironments&&environments.length===0&&!error ?(
86+
{!isLoading&&environments.length===0&&!error ?(
8787
<Empty
8888
description="No environments found"
8989
image={Empty.PRESENTED_IMAGE_SIMPLE}
@@ -92,7 +92,7 @@ const EnvironmentsList: React.FC = () => {
9292
/* Table component */
9393
<EnvironmentsTable
9494
environments={filteredEnvironments}
95-
loading={isLoadingEnvironments}
95+
loading={isLoading}
9696
onRowClick={handleRowClick}
9797
/>
9898
)}

‎client/packages/lowcoder/src/pages/setting/environments/WorkspaceDetail.tsx‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ import { queryConfig } from "./config/query.config";
3434
import{useDeployableItems}from"./hooks/useDeployableItems";
3535
import{workspaceConfig}from"./config/workspace.config";
3636
import{useDeployModal}from"./context/DeployModalContext";
37-
37+
import{useSingleEnvironmentContext}from"./context/SingleEnvironmentContext";
3838
const{ Title, Text}=Typography;
3939
const{ TabPane}=Tabs;
4040

@@ -49,9 +49,9 @@ const WorkspaceDetail: React.FC = () => {
4949
}>();
5050
const{
5151
environment,
52-
isLoadingEnvironment:envLoading,
52+
isLoading:envLoading,
5353
error:envError,
54-
}=useEnvironmentContext();
54+
}=useSingleEnvironmentContext();
5555

5656
const{openDeployModal}=useDeployModal();
5757

‎client/packages/lowcoder/src/pages/setting/environments/components/DeployItemModal.tsx‎

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import { Modal, Form, Select, Checkbox, Button, message, Spin, Input } from 'ant
44
import{Environment}from'../types/environment.types';
55
import{DeployableItem,BaseStats,DeployableItemConfig}from'../types/deployable-item.types';
66
import{useEnvironmentContext}from'../context/EnvironmentContext';
7-
87
interfaceDeployItemModalProps<TextendsDeployableItem,SextendsBaseStats>{
98
visible:boolean;
109
item:T|null;
@@ -23,7 +22,7 @@ function DeployItemModal<T extends DeployableItem, S extends BaseStats>({
2322
onSuccess
2423
}:DeployItemModalProps<T,S>){
2524
const[form]=Form.useForm();
26-
const{ environments,isLoadingEnvironments}=useEnvironmentContext();
25+
const{ environments,isLoading}=useEnvironmentContext();
2726
const[deploying,setDeploying]=useState(false);
2827

2928
useEffect(()=>{
@@ -34,7 +33,7 @@ function DeployItemModal<T extends DeployableItem, S extends BaseStats>({
3433

3534
// Filter out source environment from target list
3635
consttargetEnvironments=environments.filter(
37-
env=>env.environmentId!==sourceEnvironment.environmentId
36+
(env:Environment)=>env.environmentId!==sourceEnvironment.environmentId
3837
);
3938

4039
consthandleDeploy=async()=>{
@@ -76,7 +75,7 @@ function DeployItemModal<T extends DeployableItem, S extends BaseStats>({
7675
footer={null}
7776
destroyOnClose
7877
>
79-
{isLoadingEnvironments ?(
78+
{isLoading ?(
8079
<divstyle={{textAlign:'center',padding:'20px'}}>
8180
<Spintip="Loading environments..."/>
8281
</div>

‎client/packages/lowcoder/src/pages/setting/environments/components/EditEnvironmentModal.tsx‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ interface EditEnvironmentModalProps {
88
visible:boolean;
99
environment:Environment|null;
1010
onClose:()=>void;
11-
onSave:(environmentId:string,data:Partial<Environment>)=>Promise<void>;
11+
onSave:(data:Partial<Environment>)=>Promise<void>;// Updated signature
1212
loading?:boolean;
1313
}
1414

@@ -45,7 +45,7 @@ const EditEnvironmentModal: React.FC<EditEnvironmentModalProps> = ({
4545
constvalues=awaitform.validateFields();
4646
setSubmitLoading(true);
4747

48-
awaitonSave(environment.environmentId,values);
48+
awaitonSave(values);// Call with only the data parameter
4949
onClose();
5050
}catch(error){
5151
if(errorinstanceofError){

‎client/packages/lowcoder/src/pages/setting/environments/components/EnvironmentScopedRoutes.tsx‎

Lines changed: 0 additions & 43 deletions
This file was deleted.
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
// client/packages/lowcoder/src/pages/setting/environments/routes/EnvironmentRoutes.tsx
2+
importReactfrom"react";
3+
import{Switch,Route,useRouteMatch}from"react-router-dom";
4+
import{SingleEnvironmentProvider}from"../context/SingleEnvironmentContext";
5+
import{DeployModalProvider}from"../context/DeployModalContext";
6+
importEnvironmentDetailfrom"../EnvironmentDetail";
7+
importWorkspaceRoutesfrom"./WorkspaceRoutes";
8+
9+
/**
10+
* Routes that require a specific environment
11+
* Provides the SingleEnvironmentProvider for all child routes
12+
*/
13+
constEnvironmentRoutes:React.FC=()=>{
14+
const{ path}=useRouteMatch();
15+
16+
return(
17+
<SingleEnvironmentProvider>
18+
<DeployModalProvider>
19+
<Switch>
20+
{/* Environment detail route */}
21+
<Routeexactpath={path}>
22+
<EnvironmentDetail/>
23+
</Route>
24+
25+
{/* All routes that need a specific workspace */}
26+
<Routepath={`${path}/workspaces/:workspaceId`}>
27+
<WorkspaceRoutes/>
28+
</Route>
29+
</Switch>
30+
</DeployModalProvider>
31+
</SingleEnvironmentProvider>
32+
);
33+
};
34+
35+
exportdefaultEnvironmentRoutes;
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// client/packages/lowcoder/src/pages/setting/environments/routes/WorkspaceRoutes.tsx
2+
importReactfrom"react";
3+
import{Switch,Route,useRouteMatch}from"react-router-dom";
4+
import{WorkspaceProvider}from"../context/WorkspaceContext";
5+
importWorkspaceDetailfrom"../WorkspaceDetail";
6+
7+
/**
8+
* Routes that require a specific workspace
9+
* Provides the WorkspaceProvider for all child routes
10+
*/
11+
constWorkspaceRoutes:React.FC=()=>{
12+
const{ path}=useRouteMatch();
13+
14+
return(
15+
<WorkspaceProvider>
16+
<Switch>
17+
{/* Workspace detail route */}
18+
<Routeexactpath={path}>
19+
<WorkspaceDetail/>
20+
</Route>
21+
22+
{/* You can add more workspace-specific routes here */}
23+
</Switch>
24+
</WorkspaceProvider>
25+
);
26+
};
27+
28+
exportdefaultWorkspaceRoutes;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp