@@ -28,7 +28,7 @@ const LibrariesUserManager = () => {
2828 const pageManageTitle = intl . formatMessage ( messages [ 'library.authz.manage.page.title' ] ) ;
2929 const teamMembersPath = `/authz/${ ROUTES . LIBRARIES_TEAM_PATH . replace ( ':libraryId' , libraryId ) } ` ;
3030
31- const [ roleToDelete , setRoleToDelete ] = useState ( '' ) ;
31+ const [ roleToDelete , setRoleToDelete ] = useState < Role | null > ( null ) ;
3232 const [ showConfirmDeletionModal , setShowConfirmDeletionModal ] = useState ( false ) ;
3333 const { handleShowToast, handleDiscardToast } = useToastManager ( ) ;
3434
@@ -46,54 +46,66 @@ const LibrariesUserManager = () => {
4646 } , [ roles , user ?. roles , permissions , resources , intl ] ) ;
4747
4848 const handleCloseConfirmDeletionModal = ( ) => {
49- setRoleToDelete ( '' ) ;
49+ setRoleToDelete ( null ) ;
5050 setShowConfirmDeletionModal ( false ) ;
5151 } ;
5252
53- const handleShowConfirmDeletionModal = ( role : Pick < Role , 'name' | 'role' > ) => {
53+ const handleShowConfirmDeletionModal = ( role : Role ) => {
54+ if ( isRevokingUserRole ) { return ; }
55+
5456 handleDiscardToast ( ) ;
55- setRoleToDelete ( role . name ) ;
57+ setRoleToDelete ( role ) ;
5658 setShowConfirmDeletionModal ( true ) ;
5759 } ;
5860
59- const handleRevokeUserRole = ( role : string ) => {
60- if ( user ) {
61- const data = {
62- users : user . username ,
63- role : roles . find ( r => r . name === role ) ! . role ,
64- scope : libraryId ,
65- } ;
61+ const handleRevokeUserRole = ( ) => {
62+ if ( ! user || ! roleToDelete ) { return ; }
6663
67- revokeUserRoles ( { data } , {
68- onSuccess : ( ) => {
69- handleShowToast ( intl . formatMessage ( messages [ 'library.authz.team.remove.user.toast.success.description' ] , {
70- role,
71- rolesCount : userRoles . length - 1 ,
72- } ) ) ;
73- handleCloseConfirmDeletionModal ( ) ;
74- } ,
75- } ) ;
76- }
64+ const data = {
65+ users : user . username ,
66+ role : roleToDelete . role ,
67+ scope : libraryId ,
68+ } ;
69+
70+ revokeUserRoles ( { data } , {
71+ onSuccess : ( ) => {
72+ const remainingRolesCount = userRoles . length - 1 ;
73+ handleShowToast ( intl . formatMessage (
74+ messages [ 'library.authz.team.remove.user.toast.success.description' ] ,
75+ {
76+ role : roleToDelete . name ,
77+ rolesCount : remainingRolesCount ,
78+ } ,
79+ ) ) ;
80+ handleCloseConfirmDeletionModal ( ) ;
81+ } ,
82+ onError : ( error ) => {
83+ // eslint-disable-next-line no-console
84+ console . error ( 'Failed to revoke user role:' , error ) ;
85+ handleCloseConfirmDeletionModal ( ) ;
86+ // Could add error toast here if needed
87+ } ,
88+ } ) ;
7789 } ;
7890
7991 useEffect ( ( ) => {
8092 if ( ! isLoadingTeamMembers && ! userRoles . length ) {
8193 navigate ( teamMembersPath ) ;
8294 }
8395 // eslint-disable-next-line react-hooks/exhaustive-deps
84- } , [ userRoles , libraryId ] ) ;
96+ } , [ userRoles . length ] ) ;
8597
8698 return (
8799 < div className = "authz-libraries" >
88100 < ConfirmDeletionModal
89101 isOpen = { showConfirmDeletionModal }
90102 close = { handleCloseConfirmDeletionModal }
91- onSave = { ( ) => handleRevokeUserRole ( roleToDelete ) }
103+ onSave = { handleRevokeUserRole }
92104 isDeleting = { isRevokingUserRole }
93105 context = { {
94106 userName : user ?. username || '' ,
95107 scope : library . title ,
96- role : roleToDelete ,
108+ role : roleToDelete ?. name || '' ,
97109 rolesCount : userRoles . length ,
98110 } }
99111 />
0 commit comments