diff --git a/src/libs/actions/Policy.js b/src/libs/actions/Policy.js index 5a2de0e7e1f..17c5a234fde 100644 --- a/src/libs/actions/Policy.js +++ b/src/libs/actions/Policy.js @@ -426,6 +426,19 @@ function setWorkspaceErrors(policyID, errors) { Onyx.merge(`${ONYXKEYS.COLLECTION.POLICY}${policyID}`, {errors}); } +/** + * @param {String} policyID + * @param {String} member + * @param {Object} errors + */ +function setWorkspaceMemberErrors(policyID, member, errors) { + if (!allPolicies[policyID]) { + return; + } + + Onyx.merge(`${ONYXKEYS.COLLECTION.POLICY_MEMBER_LIST}${policyID}`, {[member]: {errors}}); +} + /** * @param {String} policyID * @param {String} customUnitID @@ -994,4 +1007,5 @@ export { openWorkspaceMembersPage, openWorkspaceInvitePage, removeWorkspace, + setWorkspaceMemberErrors, }; diff --git a/src/pages/workspace/WorkspaceMembersPage.js b/src/pages/workspace/WorkspaceMembersPage.js index 432269998a9..95f271da6fc 100644 --- a/src/pages/workspace/WorkspaceMembersPage.js +++ b/src/pages/workspace/WorkspaceMembersPage.js @@ -107,6 +107,7 @@ class WorkspaceMembersPage extends React.Component { * Remove selected users from the workspace */ removeUsers() { + this.validate(); Policy.removeMembers(this.state.selectedEmployees, this.props.route.params.policyID); this.setState({ selectedEmployees: [], @@ -196,6 +197,15 @@ class WorkspaceMembersPage extends React.Component { } } + validate() { + _.each(this.state.selectedEmployees, (member) => { + if (member === this.props.policy.owner) { + const error = this.props.translate('workspace.people.error.cannotRemove'); + setWorkspaceMemberError(member, error); + } + }); + } + /** * Do not move this or make it an anonymous function it is a method * so it will not be recreated each time we render an item @@ -250,13 +260,6 @@ class WorkspaceMembersPage extends React.Component { ); } - validate() { - _.each(this.state.selectedEmployees, member => { - if (member) - }); - // this.props.policy.owner !== item.login && this.props.session.email !== item.login && item.pendingAction !== CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE; - } - render() { const policyMemberList = lodashGet(this.props, 'policyMemberList', {}); let data = [];