@@ -70,25 +70,62 @@ export const GroupMemberManagement: React.FC<GroupMemberManagementProps> = ({
7070 setIsLoading ( true ) ;
7171 try {
7272 const response = await updateMembers ( toAdd , toRemove ) ;
73- if ( response . success ) {
74- setMembers ( ( prev ) =>
75- prev
76- . filter ( ( member ) => ! toRemove . includes ( member . email ) )
77- . concat ( toAdd . map ( ( email ) => ( { name : '' , email } ) ) )
78- ) ;
79- setToAdd ( [ ] ) ;
80- setToRemove ( [ ] ) ;
73+ let { success, failure } = response ;
74+ if ( ! success ) {
75+ success = [ ] ;
76+ }
77+ if ( ! failure ) {
78+ failure = [ ] ;
8179 }
8280
83- notifications . show ( {
84- title : 'Success' ,
85- message : 'Changes saved successfully!' ,
86- color : 'green' ,
87- } ) ;
81+ const successfulAdds = success . filter ( ( entry ) => toAdd . includes ( entry . email ) ) ;
82+ const successfulRemoves = success . filter ( ( entry ) => toRemove . includes ( entry . email ) ) ;
83+ const failedAdds = failure . filter ( ( { email } ) => toAdd . includes ( email ) ) ;
84+ const failedRemoves = failure . filter ( ( { email } ) => toRemove . includes ( email ) ) ;
85+
86+ setMembers ( ( prev ) =>
87+ prev
88+ . filter ( ( member ) => ! successfulRemoves . some ( ( remove ) => remove . email === member . email ) )
89+ . concat ( successfulAdds . map ( ( { email } ) => ( { name : email . split ( '@' ) [ 0 ] , email } ) ) )
90+ ) ;
91+
92+ setToAdd ( [ ] ) ;
93+ setToRemove ( [ ] ) ;
94+
95+ if ( failure . length === 0 ) {
96+ notifications . show ( {
97+ title : 'Success' ,
98+ message : 'All changes processed successfully!' ,
99+ color : 'green' ,
100+ } ) ;
101+ } else {
102+ failedAdds . forEach ( ( { email, message } ) => {
103+ notifications . show ( {
104+ title : `Error adding ${ email } ` ,
105+ message,
106+ color : 'red' ,
107+ } ) ;
108+ } ) ;
109+
110+ failedRemoves . forEach ( ( { email, message } ) => {
111+ notifications . show ( {
112+ title : `Error removing ${ email } ` ,
113+ message,
114+ color : 'red' ,
115+ } ) ;
116+ } ) ;
117+ const allSuccess = successfulAdds . concat ( successfulRemoves ) ;
118+ allSuccess . forEach ( ( { email } ) => {
119+ notifications . show ( {
120+ message : `Successfully modified ${ email } ` ,
121+ color : 'green' ,
122+ } ) ;
123+ } ) ;
124+ }
88125 } catch ( error ) {
89126 notifications . show ( {
90127 title : 'Error' ,
91- message : 'Failed to save changes.' ,
128+ message : 'Failed to save changes due to an unexpected error .' ,
92129 color : 'red' ,
93130 } ) ;
94131 } finally {
@@ -99,7 +136,7 @@ export const GroupMemberManagement: React.FC<GroupMemberManagementProps> = ({
99136 return (
100137 < Box p = "md" >
101138 < Text fw = { 500 } mb = { 4 } >
102- Exec Group Management
139+ Exec Council Group Management
103140 </ Text >
104141
105142 { /* Member List */ }
@@ -117,7 +154,7 @@ export const GroupMemberManagement: React.FC<GroupMemberManagementProps> = ({
117154 { member . name } ({ member . email } )
118155 </ Text >
119156 { toRemove . includes ( member . email ) && (
120- < Badge color = "green " size = "sm" >
157+ < Badge color = "red " size = "sm" >
121158 Queued for removal
122159 </ Badge >
123160 ) }
@@ -137,7 +174,7 @@ export const GroupMemberManagement: React.FC<GroupMemberManagementProps> = ({
137174 < Group justify = "space-between" >
138175 < Box >
139176 < Text size = "sm" > { member } </ Text >
140- < Badge color = "red " size = "sm" >
177+ < Badge color = "green " size = "sm" >
141178 Queued for addition
142179 </ Badge >
143180 </ Box >
0 commit comments