From ec544a02f2dcb4d92bde85a9c6738d8a645511f2 Mon Sep 17 00:00:00 2001 From: sjaanus Date: Tue, 26 Jul 2022 12:02:54 +0000 Subject: [PATCH 1/2] Grouping access endpoint (#1152) * Grouping access endpoint * Remove default values --- .../ProjectAccessAssign.tsx | 8 +++--- .../hooks/api/getters/useAccess/useAccess.ts | 28 +++++++++++++++++++ frontend/src/interfaces/group.ts | 1 + 3 files changed, 33 insertions(+), 4 deletions(-) create mode 100644 frontend/src/hooks/api/getters/useAccess/useAccess.ts diff --git a/frontend/src/component/project/ProjectAccess/ProjectAccessAssign/ProjectAccessAssign.tsx b/frontend/src/component/project/ProjectAccess/ProjectAccessAssign/ProjectAccessAssign.tsx index 5f033a65da..de901e762f 100644 --- a/frontend/src/component/project/ProjectAccess/ProjectAccessAssign/ProjectAccessAssign.tsx +++ b/frontend/src/component/project/ProjectAccess/ProjectAccessAssign/ProjectAccessAssign.tsx @@ -27,6 +27,7 @@ import { useUsers } from 'hooks/api/getters/useUsers/useUsers'; import { useGroups } from 'hooks/api/getters/useGroups/useGroups'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { ProjectRoleDescription } from './ProjectRoleDescription/ProjectRoleDescription'; +import { useAccess } from '../../../../hooks/api/getters/useAccess/useAccess'; const StyledForm = styled('form')(() => ({ display: 'flex', @@ -109,8 +110,7 @@ export const ProjectAccessAssign = ({ const { refetchProjectAccess } = useProjectAccess(projectId); const { addAccessToProject, changeUserRole, changeGroupRole, loading } = useProjectApi(); - const { users = [] } = useUsers(); - const { groups = [] } = useGroups(); + const { users, groups } = useAccess(); const edit = Boolean(selected); const { setToastData, setToastApiError } = useToast(); @@ -148,7 +148,7 @@ export const ProjectAccessAssign = ({ group.id === id && type === ENTITY_TYPE.GROUP ) ) - .map(group => ({ + .map((group: IGroup) => ({ id: group.id, entity: group, type: ENTITY_TYPE.GROUP, @@ -249,7 +249,7 @@ export const ProjectAccessAssign = ({ show={ {optionGroup?.name} - {optionGroup?.users.length} users + {optionGroup?.userCount} users } elseShow={ diff --git a/frontend/src/hooks/api/getters/useAccess/useAccess.ts b/frontend/src/hooks/api/getters/useAccess/useAccess.ts new file mode 100644 index 0000000000..b7be982177 --- /dev/null +++ b/frontend/src/hooks/api/getters/useAccess/useAccess.ts @@ -0,0 +1,28 @@ +import useSWR from 'swr'; +import { useMemo } from 'react'; +import { formatApiPath } from 'utils/formatPath'; +import handleErrorResponses from '../httpErrorResponseHandler'; + +export const useAccess = () => { + const { data, error, mutate } = useSWR( + formatApiPath(`api/admin/user-admin/access`), + fetcher + ); + + return useMemo( + () => ({ + users: data?.users ?? [], + groups: data?.groups ?? [], + loading: !error && !data, + refetch: () => mutate(), + error, + }), + [data, error, mutate] + ); +}; + +const fetcher = (path: string) => { + return fetch(path) + .then(handleErrorResponses('Access')) + .then(res => res.json()); +}; diff --git a/frontend/src/interfaces/group.ts b/frontend/src/interfaces/group.ts index 687b58ce5b..4c57ab53b6 100644 --- a/frontend/src/interfaces/group.ts +++ b/frontend/src/interfaces/group.ts @@ -13,6 +13,7 @@ export interface IGroup { users: IGroupUser[]; projects: string[]; addedAt?: string; + userCount?: number; } export interface IGroupUser extends IUser { From ca08e659b049544be4f445787ab7b6e96a80e28e Mon Sep 17 00:00:00 2001 From: sjaanus Date: Tue, 26 Jul 2022 12:41:26 +0000 Subject: [PATCH 2/2] New release (#1153) --- frontend/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/package.json b/frontend/package.json index 49da7840e7..4d519b14be 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,7 +1,7 @@ { "name": "unleash-frontend", "description": "unleash your features", - "version": "4.14.0-beta.5", + "version": "4.14.0-beta.6", "keywords": [ "unleash", "feature toggle",