@@ -638,8 +638,17 @@ function buildUpdateWorkspaceMembersRoleOnyxData(policy: OnyxEntry<Policy>, sele
638638 onyxMethod : Onyx . METHOD . MERGE ,
639639 key : `${ ONYXKEYS . COLLECTION . POLICY } ${ policyID } ` ,
640640 value : {
641- employeeList : previousEmployeeList ,
642- errors : ErrorUtils . getMicroSecondOnyxErrorWithTranslationKey ( 'workspace.editor.genericFailureMessage' ) ,
641+ employeeList : {
642+ ...memberRoles . reduce ( ( member : Record < string , PolicyEmployee > , current ) => {
643+ // eslint-disable-next-line no-param-reassign
644+ member [ current . email ] = {
645+ ...( previousEmployeeList [ current . email ] ?? { } ) ,
646+ pendingAction : CONST . RED_BRICK_ROAD_PENDING_ACTION . UPDATE ,
647+ errors : ErrorUtils . getMicroSecondOnyxErrorWithTranslationKey ( 'workspace.editor.genericFailureMessage' ) ,
648+ } ;
649+ return member ;
650+ } , { } ) ,
651+ } ,
643652 } ,
644653 } ,
645654 ] ;
@@ -1145,6 +1154,20 @@ function clearAddMemberError(policyID: string, login: string, accountID: number)
11451154 } ) ;
11461155}
11471156
1157+ /**
1158+ * Removes an error after trying to update a member role
1159+ */
1160+ function clearUpdateMemberRoleError ( policyID : string , login : string ) {
1161+ Onyx . merge ( `${ ONYXKEYS . COLLECTION . POLICY } ${ policyID } ` , {
1162+ employeeList : {
1163+ [ login ] : {
1164+ pendingAction : null ,
1165+ errors : null ,
1166+ } ,
1167+ } ,
1168+ } ) ;
1169+ }
1170+
11481171function openWorkspaceMembersPage ( policyID : string , clientMemberEmails : string [ ] ) {
11491172 if ( ! policyID || ! clientMemberEmails ) {
11501173 Log . warn ( 'openWorkspaceMembersPage invalid params' , { policyID, clientMemberEmails} ) ;
@@ -1356,6 +1379,7 @@ export {
13561379 addMembersToWorkspace ,
13571380 clearDeleteMemberError ,
13581381 clearAddMemberError ,
1382+ clearUpdateMemberRoleError ,
13591383 openWorkspaceMembersPage ,
13601384 setWorkspaceInviteMembersDraft ,
13611385 inviteMemberToWorkspace ,
0 commit comments