Skip to content

Commit 91c30c7

Browse files
committed
Optimized called APIs and in User groups.
1 parent 4d56054 commit 91c30c7

File tree

3 files changed

+63
-44
lines changed

3 files changed

+63
-44
lines changed
Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
1-
import { Route, Switch } from "react-router";
1+
import React, {useState} from "react";
2+
import { Route, Switch } from "react-router-dom";
23
import PermissionList from "./permissionList";
34
import PermissionDetail from "./permissionDetail";
45
import { PERMISSION_SETTING, PERMISSION_SETTING_DETAIL, SETTING_URL } from "constants/routesURL";
56

6-
export default () => {
7+
export default function PermissionRoutes() {
8+
const [currentPage, setCurrentPage] = useState(1);
9+
const [pageSize, setPageSize] = useState(10);
710
return (
811
<Switch>
9-
<Route path={[SETTING_URL, PERMISSION_SETTING]} component={PermissionList} exact />
10-
<Route path={PERMISSION_SETTING_DETAIL} component={PermissionDetail} />
12+
<Route path={[SETTING_URL, PERMISSION_SETTING]} exact render={(props) => <PermissionList currentPage={currentPage} pageSize={pageSize} setCurrentPage={setCurrentPage} setPageSize={setPageSize} />} />
13+
<Route path={PERMISSION_SETTING_DETAIL} render={(props) => <PermissionDetail currentPageProp={currentPage} pageSizeProp={pageSize} />} />
1114
</Switch>
1215
);
13-
};
16+
}

client/packages/lowcoder/src/pages/setting/permission/permissionDetail.tsx

Lines changed: 32 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
import React, {useEffect, useState} from "react";
2-
import { useDispatch, useSelector } from "react-redux";
3-
import { fetchGroupsAction } from "redux/reduxActions/orgActions";
2+
import { useSelector } from "react-redux";
43
import { getUser } from "redux/selectors/usersSelectors";
54
import styled from "styled-components";
65
import GroupPermission from "./groupUsersPermission";
76
import UsersPermission from "./orgUsersPermission";
8-
import { getOrgGroups } from "redux/selectors/orgSelectors";
97
import { useParams } from "react-router-dom";
10-
import {fetchGroupUsrPagination, fetchOrgUsrPagination} from "@lowcoder-ee/util/pagination/axios";
8+
import {fetchGroupUsrPagination, fetchOrgGroups, fetchOrgUsrPagination} from "@lowcoder-ee/util/pagination/axios";
119
import PaginationComp from "@lowcoder-ee/util/pagination/Pagination";
10+
import {OrgGroup} from "@lowcoder-ee/constants/orgConstants";
1211

1312
const PermissionContent = styled.div`
1413
display: flex;
@@ -20,34 +19,42 @@ const PermissionContent = styled.div`
2019
width: 100%;
2120
`;
2221

23-
const All_Users = "users";
22+
export default function PermissionSetting(props: {currentPageProp: number, pageSizeProp: number}) {
2423

25-
export default function PermissionSetting() { const user = useSelector(getUser);
26-
27-
const [elements, setElements] = useState<any>({ elements: [], total: 0, role: "" });
28-
const [orgMemberElements, setOrgMemberElements] = useState<any>({ elements: [], total: 0 })
24+
const {currentPageProp, pageSizeProp} = props;
25+
const user = useSelector(getUser);
26+
const [elements, setElements] = useState<any>({ elements: [], total: 1, role: "" });
27+
const [group, setGrouop] = useState<OrgGroup>();
28+
const [orgMemberElements, setOrgMemberElements] = useState<any>({ elements: [], total: 1 })
2929
const [currentPage, setCurrentPage] = useState(1);
3030
const [pageSize, setPageSize] = useState(10);
3131
const [modify, setModify] = useState(false);
3232

3333
const orgId = user.currentOrgId;
34-
const orgGroups = useSelector(getOrgGroups);
3534
const currentUser = useSelector(getUser);
36-
37-
const groupIdMap = new Map(orgGroups.map((group) => [group.groupId, group]));
38-
const dispatch = useDispatch();
3935
const selectKey = useParams<{ groupId: string }>().groupId;
40-
useEffect(() => {
41-
if (!orgId) {
42-
return;
43-
}
44-
dispatch(fetchGroupsAction(orgId));
45-
}, [orgId]);
36+
37+
useEffect( () => {
38+
fetchOrgGroups(
39+
{
40+
pageNum: currentPageProp,
41+
pageSize: pageSizeProp,
42+
}
43+
).then(result => {
44+
if (result.success && !!result.data){
45+
setGrouop(result.data.find(group => group.groupId === selectKey))
46+
}
47+
else
48+
console.error("ERROR: fetchFolderElements", result.error)
49+
})
50+
}, [currentPageProp, pageSizeProp]
51+
)
52+
4653
useEffect( () => {
47-
if (selectKey !== "users" && !!groupIdMap.get(selectKey))
54+
if (selectKey !== "users" && selectKey)
4855
fetchGroupUsrPagination(
4956
{
50-
groupId: groupIdMap.get(selectKey)!.groupId,
57+
groupId:selectKey,
5158
pageNum: currentPage,
5259
pageSize: pageSize,
5360
}
@@ -77,7 +84,7 @@ export default function PermissionSetting() { const user = useSelector(getUser)
7784
)
7885
}
7986
},
80-
[currentPage, pageSize, modify, groupIdMap.get(selectKey)]
87+
[currentPage, pageSize, modify, selectKey]
8188
)
8289

8390
if (!orgId) {
@@ -86,7 +93,7 @@ export default function PermissionSetting() { const user = useSelector(getUser)
8693

8794
return (
8895
<PermissionContent key={selectKey}>
89-
{selectKey === All_Users ? (
96+
{selectKey === "users" ? (
9097
<>
9198
<UsersPermission
9299
orgId={orgId}
@@ -99,10 +106,10 @@ export default function PermissionSetting() { const user = useSelector(getUser)
99106
<PaginationComp setCurrentPage={setCurrentPage} setPageSize={setPageSize} currentPage={currentPage} pageSize={pageSize} total={orgMemberElements.total} />
100107
</>
101108
) : (
102-
groupIdMap.has(selectKey) && (
109+
group && (
103110
<>
104111
<GroupPermission
105-
group={groupIdMap.get(selectKey)!}
112+
group={group}
106113
orgId={orgId}
107114
groupUsers={elements.elements}
108115
currentUserGroupRole={elements.role}

client/packages/lowcoder/src/pages/setting/permission/permissionList.tsx

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -52,12 +52,21 @@ type DataItemInfo = {
5252
group?: OrgGroup;
5353
};
5454

55+
type PermissionSettingProps = {
56+
currentPage: number;
57+
setCurrentPage: (value: number) => void;
58+
pageSize: number;
59+
setPageSize: (value: number) => void;
60+
};
61+
5562
interface ElementsState {
5663
elements: OrgGroup[];
5764
total: number;
5865
}
5966

60-
export default function PermissionSetting() {
67+
export default function PermissionSetting(props: PermissionSettingProps) {
68+
69+
const {currentPage, setCurrentPage, pageSize, setPageSize} = props;
6170
let dataSource: DataItemInfo[] = [];
6271
const user = useSelector(getUser);
6372
const orgId = user.currentOrgId;
@@ -66,27 +75,27 @@ export default function PermissionSetting() {
6675
const { nameSuffixFunc, menuItemsFunc, menuExtraView } = usePermissionMenuItems(orgId);
6776
const [groupCreating, setGroupCreating] = useState(false);
6877
const [elements, setElements] = useState<ElementsState>({ elements: [], total: 0 });
69-
const [currentPage, setCurrentPage] = useState(1);
70-
const [pageSize, setPageSize] = useState(10);
7178
const [modify, setModify] = useState(false);
79+
const visibleOrgGroups = elements.elements.filter((g) => !g.allUsersGroup);
80+
const allUsersGroup = elements.elements.find((g) => g.allUsersGroup);
7281

7382
useEffect( () => {
74-
fetchOrgGroups(
83+
fetchOrgGroups(
7584
{
7685
pageNum: currentPage,
7786
pageSize: pageSize,
7887
}
79-
).then(result => {
80-
if (result.success){
81-
setElements({elements: result.data || [], total: result.total || 1})
82-
}
83-
else
84-
console.error("ERROR: fetchFolderElements", result.error)
85-
})
86-
}, [currentPage, pageSize, modify]
88+
).then(result => {
89+
if (result.success){
90+
setElements({elements: result.data || [], total: result.total || 1})
91+
}
92+
else
93+
console.error("ERROR: fetchFolderElements", result.error)
94+
})
95+
}, [currentPage, pageSize, modify]
8796
)
88-
const visibleOrgGroups = elements.elements.filter((g) => !g.allUsersGroup);
89-
const allUsersGroup = elements.elements.find((g) => g.allUsersGroup);
97+
98+
9099
dataSource = currentPage === 1 ? [{
91100
key: "users",
92101
label: trans("memberSettings.allMembers"),

0 commit comments

Comments
 (0)