Skip to content

Commit e03608d

Browse files
authored
Merge pull request #1058 from AppQuality/UN-541-permission-hook
chore: refactor PermissionItem to use custom hook for workspace access check
2 parents a689cde + f0e90b2 commit e03608d

File tree

2 files changed

+28
-19
lines changed

2 files changed

+28
-19
lines changed

src/common/components/navigation/workspacesDropdown/PermissionItem.tsx

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,9 @@
1-
import { useEffect, useState } from 'react';
2-
import { useAppSelector } from 'src/app/hooks';
31
import { appTheme } from 'src/app/theme';
4-
import { selectWorkspaces } from 'src/features/workspaces/selectors';
5-
import { useActiveWorkspace } from 'src/hooks/useActiveWorkspace';
2+
import { useCanAccessToActiveWorkspace } from 'src/hooks/useCanAccessToActiveWorkspace';
63
import { WorkspaceSettings } from '../../inviteUsers/workspaceSettings';
74

85
export const PermissionItem = () => {
9-
const { activeWorkspace } = useActiveWorkspace();
10-
const workspaces = useAppSelector(selectWorkspaces);
11-
12-
const [canManageUsers, setCanManageUsers] = useState(false);
13-
14-
useEffect(() => {
15-
if (activeWorkspace) {
16-
const personalWorkspaces = workspaces.filter((ws) => !ws.isShared);
17-
const activeWorkspaceInPersonal = !!personalWorkspaces.find(
18-
(ws) => ws.id === activeWorkspace?.id
19-
);
20-
21-
setCanManageUsers(activeWorkspaceInPersonal);
22-
}
23-
}, [activeWorkspace]);
6+
const canManageUsers = useCanAccessToActiveWorkspace();
247

258
return canManageUsers ? (
269
<div style={{ marginLeft: appTheme.space.sm }}>
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import { useEffect, useState } from 'react';
2+
import { useAppSelector } from 'src/app/hooks';
3+
import { selectWorkspaces } from 'src/features/workspaces/selectors';
4+
import { useActiveWorkspace } from './useActiveWorkspace';
5+
6+
const useCanAccessToActiveWorkspace = () => {
7+
const { activeWorkspace } = useActiveWorkspace();
8+
const workspaces = useAppSelector(selectWorkspaces);
9+
10+
const [hasAccess, setHasAccess] = useState(false);
11+
12+
useEffect(() => {
13+
if (activeWorkspace) {
14+
const personalWorkspaces = workspaces.filter((ws) => !ws.isShared);
15+
const activeWorkspaceInPersonal = !!personalWorkspaces.find(
16+
(ws) => ws.id === activeWorkspace?.id
17+
);
18+
19+
setHasAccess(activeWorkspaceInPersonal);
20+
}
21+
}, [activeWorkspace]);
22+
23+
return hasAccess;
24+
};
25+
26+
export { useCanAccessToActiveWorkspace };

0 commit comments

Comments
 (0)