From ebd91d2148383359ad4c9d62737861d7e9d80235 Mon Sep 17 00:00:00 2001 From: Faran Javed Date: Wed, 21 May 2025 23:10:35 +0500 Subject: [PATCH] [Fix]: infinite loading for Developers Group --- .../permission/groupUsersPermission.tsx | 5 +- .../setting/permission/orgUsersPermission.tsx | 5 +- .../setting/permission/permissionDetail.tsx | 74 +++++++++++++------ 3 files changed, 56 insertions(+), 28 deletions(-) diff --git a/client/packages/lowcoder/src/pages/setting/permission/groupUsersPermission.tsx b/client/packages/lowcoder/src/pages/setting/permission/groupUsersPermission.tsx index 4ed3e0a3c8..189e147abc 100644 --- a/client/packages/lowcoder/src/pages/setting/permission/groupUsersPermission.tsx +++ b/client/packages/lowcoder/src/pages/setting/permission/groupUsersPermission.tsx @@ -45,11 +45,12 @@ type GroupPermissionProp = { currentUser: User; setModify?: any; modify?: boolean; + loading?: boolean; }; function GroupUsersPermission(props: GroupPermissionProp) { const { Column } = TableStyled; - const { group, orgId, groupUsers, currentUserGroupRole, currentUser , setModify, modify} = props; + const { group, orgId, groupUsers, currentUserGroupRole, currentUser, setModify, modify, loading } = props; const adminCount = groupUsers.filter((user) => isGroupAdmin(user.role)).length; const sortedGroupUsers = useMemo(() => { return [...groupUsers].sort((a, b) => { @@ -97,7 +98,7 @@ function GroupUsersPermission(props: GroupPermissionProp) { dataSource={sortedGroupUsers} rowKey="userId" pagination={false} - loading={groupUsers.length === 0} + loading={loading} > user.role === ADMIN_ROLE || user.role === SUPER_ADMIN_ROLE, ).length; @@ -149,7 +150,7 @@ function OrgUsersPermission(props: UsersPermissionProp) { dataSource={sortedOrgUsers} rowKey="userId" pagination={false} - loading={orgUsers.length === 0} + loading={loading} > ({ elements: [], total: 1, role: "" }); + const [elements, setElements] = useState({ elements: [], total: 0, role: "" }); const [group, setGrouop] = useState(); - const [orgMemberElements, setOrgMemberElements] = useState({ elements: [], total: 1 }) + const [orgMemberElements, setOrgMemberElements] = useState({ elements: [], total: 0 }) const [currentPage, setCurrentPage] = useState(1); const [pageSize, setPageSize] = useState(10); const [modify, setModify] = useState(false); + const [loading, setLoading] = useState(false); + const [error, setError] = useState(null); const orgId = user.currentOrgId; const currentUser = useSelector(getUser); @@ -51,23 +53,36 @@ export default function PermissionSetting(props: {currentPageProp: number, pageS ) useEffect( () => { - if (selectKey !== "users" && selectKey) + if (selectKey !== "users" && selectKey) { + setLoading(true); + setError(null); + fetchGroupUsrPagination( { - groupId:selectKey, + groupId: selectKey, pageNum: currentPage, pageSize: pageSize, } - ).then(result => { - if (result.success){ - setElements({elements: result.data || [], total: result.total || 1, role: result.visitorRole || ""}) - } - else - console.error("ERROR: fetchFolderElements", result.error) + ).then(result => { + setLoading(false); + + if (result.success) { + setElements({ + elements: result.data || [], + total: result.total || 0, + role: result.visitorRole || "" + }); + } else { + setError("Failed to load group users. Please try again."); } - ) - else - { + }).catch(err => { + setLoading(false); + setError("Failed to load group users. Please try again."); + }); + } else { + setLoading(true); + setError(null); + fetchOrgUsrPagination( { orgId: orgId, @@ -75,17 +90,22 @@ export default function PermissionSetting(props: {currentPageProp: number, pageS pageSize: pageSize, } ).then(result => { - if (result.success){ - setOrgMemberElements({elements: result.data || [], total: result.total || 1}) - } - else - console.error("ERROR: fetchFolderElements", result.error) + setLoading(false); + if (result.success){ + setOrgMemberElements({ + elements: result.data || [], + total: result.total || 0 + }); + } + else { + setError("Failed to load organization users. Please try again."); } - ) + }).catch(err => { + setLoading(false); + setError("Failed to load organization users. Please try again."); + }); } - }, - [currentPage, pageSize, modify, selectKey] - ) + }, [currentPage, pageSize, modify, selectKey, orgId]); if (!orgId) { return null; @@ -93,15 +113,21 @@ export default function PermissionSetting(props: {currentPageProp: number, pageS return ( + {error && ( +
+ {error} +
+ )} + {selectKey === "users" ? ( <> @@ -116,10 +142,10 @@ export default function PermissionSetting(props: {currentPageProp: number, pageS currentUser={currentUser} setModify={setModify} modify={modify} + loading={loading} /> - ) )}
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy