@@ -15,6 +15,7 @@ import {
1515import  {  IconTrash ,  IconUserPlus  }  from  '@tabler/icons-react' ; 
1616import  {  notifications  }  from  '@mantine/notifications' ; 
1717import  {  GroupMemberGetResponse ,  EntraActionResponse  }  from  '@common/types/iam' ; 
18+ import  FullScreenLoader  from  '@ui/components/AuthContext/LoadingScreen' ; 
1819
1920interface  GroupMemberManagementProps  { 
2021  fetchMembers : ( )  =>  Promise < GroupMemberGetResponse > ; 
@@ -29,7 +30,7 @@ export const GroupMemberManagement: React.FC<GroupMemberManagementProps> = ({
2930  const  [ toAdd ,  setToAdd ]  =  useState < string [ ] > ( [ ] ) ; 
3031  const  [ toRemove ,  setToRemove ]  =  useState < string [ ] > ( [ ] ) ; 
3132  const  [ email ,  setEmail ]  =  useState ( '' ) ; 
32-   const  [ isLoading ,  setIsLoading ]  =  useState ( false ) ; 
33+   const  [ isLoading ,  setIsLoading ]  =  useState ( true ) ; 
3334  const  [ confirmationModal ,  setConfirmationModal ]  =  useState ( false ) ; 
3435
3536  useEffect ( ( )  =>  { 
@@ -46,6 +47,7 @@ export const GroupMemberManagement: React.FC<GroupMemberManagementProps> = ({
4647      } 
4748    } ; 
4849    loadMembers ( ) ; 
50+     setIsLoading ( false ) ; 
4951  } ,  [ fetchMembers ] ) ; 
5052
5153  const  handleAddMember  =  ( )  =>  { 
@@ -132,7 +134,6 @@ export const GroupMemberManagement: React.FC<GroupMemberManagementProps> = ({
132134      setIsLoading ( false ) ; 
133135    } 
134136  } ; 
135- 
136137  return  ( 
137138    < Box  p = "md" > 
138139      < Text  fw = { 500 }  mb = { 4 } > 
@@ -145,44 +146,47 @@ export const GroupMemberManagement: React.FC<GroupMemberManagementProps> = ({
145146          Current Members
146147        </ Text > 
147148        < ScrollArea  style = { {  height : 250  } } > 
148-           < List  spacing = "sm" > 
149-             { members . map ( ( member )  =>  ( 
150-               < ListItem  key = { member . email } > 
151-                 < Group  justify = "space-between" > 
152-                   < Box > 
153-                     < Text  size = "sm" > 
154-                       { member . name }  ({ member . email } )
155-                     </ Text > 
156-                     { toRemove . includes ( member . email )  &&  ( 
157-                       < Badge  color = "red"  size = "sm" > 
158-                         Queued for removal
149+           { isLoading  &&  < FullScreenLoader  /> } 
150+           { ! isLoading  &&  ( 
151+             < List  spacing = "sm" > 
152+               { members . map ( ( member )  =>  ( 
153+                 < ListItem  key = { member . email } > 
154+                   < Group  justify = "space-between" > 
155+                     < Box > 
156+                       < Text  size = "sm" > 
157+                         { member . name }  ({ member . email } )
158+                       </ Text > 
159+                       { toRemove . includes ( member . email )  &&  ( 
160+                         < Badge  color = "red"  size = "sm" > 
161+                           Queued for removal
162+                         </ Badge > 
163+                       ) } 
164+                     </ Box > 
165+                     < ActionIcon 
166+                       color = "red" 
167+                       variant = "light" 
168+                       onClick = { ( )  =>  handleRemoveMember ( member . email ) } 
169+                       data-testid = { `remove-exec-member-${ member . email }  ` } 
170+                     > 
171+                       < IconTrash  size = { 16 }  /> 
172+                     </ ActionIcon > 
173+                   </ Group > 
174+                 </ ListItem > 
175+               ) ) } 
176+               { toAdd . map ( ( member )  =>  ( 
177+                 < ListItem  key = { member } > 
178+                   < Group  justify = "space-between" > 
179+                     < Box > 
180+                       < Text  size = "sm" > { member } </ Text > 
181+                       < Badge  color = "green"  size = "sm" > 
182+                         Queued for addition
159183                      </ Badge > 
160-                     ) } 
161-                   </ Box > 
162-                   < ActionIcon 
163-                     color = "red" 
164-                     variant = "light" 
165-                     onClick = { ( )  =>  handleRemoveMember ( member . email ) } 
166-                     data-testid = { `remove-exec-member-${ member . email }  ` } 
167-                   > 
168-                     < IconTrash  size = { 16 }  /> 
169-                   </ ActionIcon > 
170-                 </ Group > 
171-               </ ListItem > 
172-             ) ) } 
173-             { toAdd . map ( ( member )  =>  ( 
174-               < ListItem  key = { member } > 
175-                 < Group  justify = "space-between" > 
176-                   < Box > 
177-                     < Text  size = "sm" > { member } </ Text > 
178-                     < Badge  color = "green"  size = "sm" > 
179-                       Queued for addition
180-                     </ Badge > 
181-                   </ Box > 
182-                 </ Group > 
183-               </ ListItem > 
184-             ) ) } 
185-           </ List > 
184+                     </ Box > 
185+                   </ Group > 
186+                 </ ListItem > 
187+               ) ) } 
188+             </ List > 
189+           ) } 
186190        </ ScrollArea > 
187191      </ Box > 
188192
0 commit comments