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