Skip to content

Commit 539fda5

Browse files
committed
refactor: replace useAddTeamMember with useAssignTeamMembersRole
1 parent 478ce74 commit 539fda5

6 files changed

Lines changed: 24 additions & 11 deletions

File tree

src/authz-module/constants.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,11 @@ export const ROUTES = {
22
LIBRARIES_TEAM_PATH: '/libraries/:libraryId',
33
LIBRARIES_USER_PATH: '/libraries/user/:username',
44
};
5+
6+
export enum RoleOperationErrorStatus {
7+
USER_NOT_FOUND = 'user_not_found',
8+
USER_ALREADY_HAS_ROLE = 'user_already_has_role',
9+
USER_DOES_NOT_HAVE_ROLE = 'user_does_not_have_role',
10+
ROLE_ASSIGNMENT_ERROR = 'role_assignment_error',
11+
ROLE_REMOVAL_ERROR = 'role_removal_error',
12+
}

src/authz-module/data/hooks.test.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { act, renderHook, waitFor } from '@testing-library/react';
33
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
44
import { getAuthenticatedHttpClient } from '@edx/frontend-platform/auth';
55
import {
6-
useLibrary, usePermissionsByRole, useTeamMembers, useAddTeamMember,
6+
useLibrary, usePermissionsByRole, useTeamMembers, useAssignTeamMembersRole,
77
} from './hooks';
88

99
jest.mock('@edx/frontend-platform/auth', () => ({
@@ -158,7 +158,7 @@ describe('usePermissionsByRole', () => {
158158
}
159159
});
160160

161-
describe('useAddTeamMember', () => {
161+
describe('useAssignTeamMembersRole', () => {
162162
beforeEach(() => {
163163
jest.clearAllMocks();
164164
});
@@ -182,7 +182,7 @@ describe('usePermissionsByRole', () => {
182182
put: jest.fn().mockResolvedValue({ data: mockResponse }),
183183
});
184184

185-
const { result } = renderHook(() => useAddTeamMember(), {
185+
const { result } = renderHook(() => useAssignTeamMembersRole(), {
186186
wrapper: createWrapper(),
187187
});
188188

@@ -207,7 +207,7 @@ describe('usePermissionsByRole', () => {
207207
put: jest.fn().mockRejectedValue(new Error('Failed to add members')),
208208
});
209209

210-
const { result } = renderHook(() => useAddTeamMember(), {
210+
const { result } = renderHook(() => useAssignTeamMembersRole(), {
211211
wrapper: createWrapper(),
212212
});
213213

src/authz-module/data/hooks.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ export const useLibrary = (libraryId: string) => useSuspenseQuery<LibraryMetadat
6666
});
6767

6868
/**
69-
* React Query hook to add new team members to a specific library.
70-
* It provides a mutation function to add users with specified roles to the library's team.
69+
* React Query hook to add new team members to a specific scope or manage the corresponding roles.
70+
* It provides a mutation function to add users with specified roles to the team or assign new roles.
7171
*
7272
* @example
7373
* const { mutate: assignTeamMembersRole } = useAssignTeamMembersRole();

src/authz-module/libraries-manager/components/AddNewTeamMemberModal/AddNewTeamMemberModal.test.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ const defaultProps = {
3333
const mockRoles = [
3434
{
3535
role: 'instructor',
36+
name: 'instructor',
3637
description: 'Can create and edit content',
3738
userCount: 3,
3839
objects: [
@@ -45,6 +46,7 @@ const mockRoles = [
4546
},
4647
{
4748
role: 'admin',
49+
name: 'admin',
4850
description: 'Full access to the library',
4951
userCount: 1,
5052
objects: [

src/authz-module/libraries-manager/components/AddNewTeamMemberModal/AddNewTeamMemberModal.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ const AddNewTeamMemberModal: FC<AddNewTeamMemberModalProps> = ({
9292
state={isLoading ? 'pending' : 'default'}
9393
onClick={() => onSave()}
9494
disabledStates={['pending']}
95-
disabled={!formValues.users || !formValues.role}
95+
disabled={isLoading || !formValues.users || !formValues.role}
9696
/>
9797
</ActionRow>
9898
</ModalDialog.Footer>

src/authz-module/libraries-manager/components/AddNewTeamMemberModal/AddNewTeamMemberTrigger.tsx

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@ import { useIntl } from '@edx/frontend-platform/i18n';
33
import { Button, Toast, useToggle } from '@openedx/paragon';
44
import { Plus } from '@openedx/paragon/icons';
55

6-
import { useAssignTeamMembersRole } from '@src/authz-module/data/hooks';
76
import { PutAssignTeamMembersRoleResponse } from 'authz-module/data/api';
7+
import { useAssignTeamMembersRole } from '@src/authz-module/data/hooks';
8+
import { RoleOperationErrorStatus } from '@src/authz-module/constants';
89
import AddNewTeamMemberModal from './AddNewTeamMemberModal';
910
import messages from './messages';
1011

@@ -38,7 +39,8 @@ const AddNewTeamMemberTrigger: FC<AddNewTeamMemberTriggerProps> = ({
3839

3940
const handleErrors = (errors: PutAssignTeamMembersRoleResponse['errors']) => {
4041
setIsError(false);
41-
const notFoundUsers = errors.filter(err => err.error === 'user_not_found').map(err => err.userIdentifier);
42+
const notFoundUsers = errors.filter(err => err.error === RoleOperationErrorStatus.USER_NOT_FOUND)
43+
.map(err => err.userIdentifier);
4244

4345
if (notFoundUsers.length) {
4446
setIsError(true);
@@ -91,9 +93,10 @@ const AddNewTeamMemberTrigger: FC<AddNewTeamMemberTriggerProps> = ({
9193
};
9294
const handleClose = () => {
9395
setFormValues(DEFAULT_FORM_VALUES);
94-
setIsError(false)
96+
setIsError(false);
9597
close();
96-
}
98+
};
99+
97100
return (
98101
<>
99102
<Button

0 commit comments

Comments
 (0)