@@ -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 ] ;
@@ -1142,6 +1151,20 @@ function clearAddMemberError(policyID: string, login: string, accountID: number)
11421151 } ) ;
11431152}
11441153
1154+ /**
1155+ * Removes an error after trying to update a member role
1156+ */
1157+ function clearUpdateMemberRoleError ( policyID : string , login : string ) {
1158+ Onyx . merge ( `${ ONYXKEYS . COLLECTION . POLICY } ${ policyID } ` , {
1159+ employeeList : {
1160+ [ login ] : {
1161+ pendingAction : null ,
1162+ errors : null ,
1163+ } ,
1164+ } ,
1165+ } ) ;
1166+ }
1167+
11451168function openWorkspaceMembersPage ( policyID : string , clientMemberEmails : string [ ] ) {
11461169 if ( ! policyID || ! clientMemberEmails ) {
11471170 Log . warn ( 'openWorkspaceMembersPage invalid params' , { policyID, clientMemberEmails} ) ;
@@ -1353,6 +1376,7 @@ export {
13531376 addMembersToWorkspace ,
13541377 clearDeleteMemberError ,
13551378 clearAddMemberError ,
1379+ clearUpdateMemberRoleError ,
13561380 openWorkspaceMembersPage ,
13571381 setWorkspaceInviteMembersDraft ,
13581382 inviteMemberToWorkspace ,
0 commit comments