Skip to content

Commit 58c311e

Browse files
authored
Merge pull request Expensify#87994 from emkhalid/fix/workspace-member-role-error
fix: show inline member row error when workspace role update fails
2 parents bab0342 + 3be7531 commit 58c311e

2 files changed

Lines changed: 35 additions & 4 deletions

File tree

src/libs/actions/Policy/Member.ts

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
11451168
function 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,

src/pages/workspace/WorkspaceMembersPage.tsx

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import {
3636
clearAddMemberError,
3737
clearDeleteMemberError,
3838
clearInviteDraft,
39+
clearUpdateMemberRoleError,
3940
clearWorkspaceOwnerChangeFlow,
4041
downloadMembersCSV,
4142
openWorkspaceMembersPage,
@@ -373,9 +374,15 @@ function WorkspaceMembersPage({personalDetails, route, policy}: WorkspaceMembers
373374
(item: MemberOption) => {
374375
if (item.pendingAction === CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE) {
375376
clearDeleteMemberError(route.params.policyID, item.login);
376-
} else {
377-
clearAddMemberError(route.params.policyID, item.login, item.accountID);
377+
return;
378+
}
379+
380+
if (item.pendingAction === CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE) {
381+
clearUpdateMemberRoleError(route.params.policyID, item.login);
382+
return;
378383
}
384+
385+
clearAddMemberError(route.params.policyID, item.login, item.accountID);
379386
},
380387
[route.params.policyID],
381388
);

0 commit comments

Comments
 (0)