feat: [FC-0099] add button & modal for adding new team members (#3)
* feat: add team roles management and update related hooks and types * feat: implement add new team member functionality with modal and actions * test: add some missing tests * test: add unit tests for AddNewTeamMemberModal and update context mocks * test: add toast close functionality and loading state handling in AddNewTeamMemberTrigger tests * fix: update LibrariesAuthZTeamView to include canManageTeam check for AddNewTeamMemberTrigger * fix: correct API endpoint paths and update authorization scope format * refactor: improve error handling & address PR feedback * refactor: group AddNewTeamMemberModal in 1 folder * fix: reset modal values to close action * refactor: replace useAddTeamMember with useAssignTeamMembersRole * feat: add tooltip * test: fix test after rebase * refactor: enhance user intruction with placeholder * style: remove unnecessary inline style * fix: remove the error style on change the textarea value * fix: add useState to display toast * fix: remove empty strings from the user input * fix: validate error users to apply style --------- Co-authored-by: Diana Olarte <diana.olarte@edunext.co>
This commit is contained in:
@@ -13,6 +13,16 @@ export type PermissionsByRole = {
|
||||
permissions: string[];
|
||||
userCount: number;
|
||||
};
|
||||
export interface PutAssignTeamMembersRoleResponse {
|
||||
completed: { user: string; status: string }[];
|
||||
errors: { userIdentifier: string; error: string }[];
|
||||
}
|
||||
|
||||
export interface AssignTeamMembersRoleRequest {
|
||||
users: string[];
|
||||
role: string;
|
||||
scope: string;
|
||||
}
|
||||
|
||||
// TODO: replece api path once is created
|
||||
export const getTeamMembers = async (object: string): Promise<TeamMember[]> => {
|
||||
@@ -20,6 +30,13 @@ export const getTeamMembers = async (object: string): Promise<TeamMember[]> => {
|
||||
return camelCaseObject(data.results);
|
||||
};
|
||||
|
||||
export const assignTeamMembersRole = async (
|
||||
data: AssignTeamMembersRoleRequest,
|
||||
): Promise<PutAssignTeamMembersRoleResponse> => {
|
||||
const res = await getAuthenticatedHttpClient().put(getApiUrl('/api/authz/v1/roles/users/'), data);
|
||||
return camelCaseObject(res.data);
|
||||
};
|
||||
|
||||
// TODO: this should be replaced in the future with Console API
|
||||
export const getLibrary = async (libraryId: string): Promise<LibraryMetadata> => {
|
||||
const { data } = await getAuthenticatedHttpClient().get(getStudioApiUrl(`/api/libraries/v2/${libraryId}/`));
|
||||
|
||||
Reference in New Issue
Block a user