Skip to content
Merged
46 changes: 0 additions & 46 deletions src/pages/workspace/WorkspaceMembersPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@ import {
removeMembers,
updateWorkspaceMembersRole,
} from '@libs/actions/Policy/Member';
import {removeApprovalWorkflow as removeApprovalWorkflowAction, updateApprovalWorkflow} from '@libs/actions/Workflow';
import {canUseTouchScreen} from '@libs/DeviceCapabilities';
import {getLatestErrorMessageField} from '@libs/ErrorUtils';
import Log from '@libs/Log';
Expand All @@ -77,7 +76,6 @@ import {
} from '@libs/PolicyUtils';
import {getDisplayNameForParticipant} from '@libs/ReportUtils';
import tokenizedSearch from '@libs/tokenizedSearch';
import {convertPolicyEmployeesToApprovalWorkflows, updateWorkflowDataOnApproverRemoval} from '@libs/WorkflowUtils';
import variables from '@styles/variables';
import {close} from '@userActions/Modal';
import {dismissAddedWithPrimaryLoginMessages} from '@userActions/Policy/Policy';
Expand Down Expand Up @@ -175,17 +173,6 @@ function WorkspaceMembersPage({personalDetails, route, policy}: WorkspaceMembers
const [connectionSyncProgress] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY_CONNECTION_SYNC_PROGRESS}${policyID}`);
const illustrations = useMemoizedLazyIllustrations(['ReceiptWrangler', 'EmptyShelves']);

const ownerDetails = personalDetails?.[policy?.ownerAccountID ?? CONST.DEFAULT_NUMBER_ID] ?? ({} as PersonalDetails);
const {approvalWorkflows} = useMemo(
() =>
convertPolicyEmployeesToApprovalWorkflows({
policy,
personalDetails: personalDetails ?? {},
localeCompare,
}),
[personalDetails, policy, localeCompare],
);

const canSelectMultiple = isPolicyAdmin && (shouldUseNarrowLayout ? isMobileSelectionModeEnabled : true);

const confirmModalPrompt = useMemo(() => {
Expand Down Expand Up @@ -254,39 +241,6 @@ function WorkspaceMembersPage({personalDetails, route, policy}: WorkspaceMembers
* Please see https://github.com/Expensify/App/blob/main/README.md#Security for more details
*/
const removeUsers = () => {
// Check if any of the members are approvers
const hasApprovers = selectedEmployees.some((email) => isPolicyApprover(policy, email));

if (hasApprovers) {
const ownerEmail = ownerDetails.login;
let currentWorkflows = approvalWorkflows;
for (const login of selectedEmployees) {
if (!isPolicyApprover(policy, login)) {
continue;
}

const accountID = policyMemberEmailsToAccountIDs[login];
const removedApprover = personalDetails?.[accountID];
if (!removedApprover?.login || !ownerEmail) {
continue;
}
const updatedWorkflows = updateWorkflowDataOnApproverRemoval({
approvalWorkflows: currentWorkflows,
removedApprover,
ownerDetails,
});
currentWorkflows = updatedWorkflows.filter((workflow) => !workflow.removeApprovalWorkflow);
for (const workflow of updatedWorkflows) {
if (workflow?.removeApprovalWorkflow) {
const {removeApprovalWorkflow, ...updatedWorkflow} = workflow;
removeApprovalWorkflowAction(updatedWorkflow, policy);
} else {
updateApprovalWorkflow(workflow, [], [], policy);
}
}
}
}

setSelectedEmployees([]);
removeMembers(policy, selectedEmployees, policyMemberEmailsToAccountIDs);
};
Expand Down
38 changes: 1 addition & 37 deletions src/pages/workspace/members/WorkspaceMemberDetailsPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,12 @@ import useStyleUtils from '@hooks/useStyleUtils';
import useThemeIllustrations from '@hooks/useThemeIllustrations';
import useThemeStyles from '@hooks/useThemeStyles';
import {setPolicyPreventSelfApproval} from '@libs/actions/Policy/Policy';
import {removeApprovalWorkflow as removeApprovalWorkflowAction, updateApprovalWorkflow} from '@libs/actions/Workflow';
import {getAllCardsForWorkspace, getCardFeedIcon, getCardFeedWithDomainID, getPlaidInstitutionIconUrl, lastFourNumbersFromCardName, maskCardNumber} from '@libs/CardUtils';
import navigateAfterInteraction from '@libs/Navigation/navigateAfterInteraction';
import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types';
import {getDisplayNameOrDefault, getPhoneNumber} from '@libs/PersonalDetailsUtils';
import {isControlPolicy, isPolicyApprover} from '@libs/PolicyUtils';
import shouldRenderTransferOwnerButton from '@libs/shouldRenderTransferOwnerButton';
import {convertPolicyEmployeesToApprovalWorkflows, updateWorkflowDataOnApproverRemoval} from '@libs/WorkflowUtils';
import Navigation from '@navigation/Navigation';
import type {SettingsNavigatorParamList} from '@navigation/types';
import NotFoundPage from '@pages/ErrorPage/NotFoundPage';
Expand Down Expand Up @@ -72,7 +70,7 @@ function WorkspaceMemberDetailsPage({personalDetails, policy, route}: WorkspaceM
const {convertToDisplayString} = useCurrencyListActions();
const icons = useMemoizedLazyExpensifyIcons(['RemoveMembers', 'Info', 'Transfer']);
const styles = useThemeStyles();
const {formatPhoneNumber, translate, localeCompare} = useLocalize();
const {formatPhoneNumber, translate} = useLocalize();
const StyleUtils = useStyleUtils();
const illustrations = useThemeIllustrations();
const companyCardFeedIcons = useCompanyCardFeedIcons();
Expand Down Expand Up @@ -106,13 +104,6 @@ function WorkspaceMemberDetailsPage({personalDetails, policy, route}: WorkspaceM
const {isAccountLocked} = useLockedAccountState();
const {showLockedAccountModal} = useLockedAccountActions();

const {approvalWorkflows} = convertPolicyEmployeesToApprovalWorkflows({
policy,
personalDetails: personalDetails ?? {},
localeCompare,
currentUserLogin: currentUserPersonalDetails?.login,
});

useEffect(() => {
openPolicyMemberProfilePage(policyID, accountID);
}, [policyID, accountID]);
Expand Down Expand Up @@ -175,33 +166,6 @@ function WorkspaceMemberDetailsPage({personalDetails, policy, route}: WorkspaceM
};

const removeUser = () => {
const ownerEmail = ownerDetails?.login;
const removedApprover = personalDetails?.[accountID];

// If the user is not an approver, proceed with member removal
if (!isPolicyApprover(policy, memberLogin) || !removedApprover?.login || !ownerEmail) {
removeMemberAndCloseModal();
return;
}

// Update approval workflows after approver removal
const updatedWorkflows = updateWorkflowDataOnApproverRemoval({
approvalWorkflows,
removedApprover,
ownerDetails,
});

for (const workflow of updatedWorkflows) {
if (workflow?.removeApprovalWorkflow) {
const {removeApprovalWorkflow, ...updatedWorkflow} = workflow;

removeApprovalWorkflowAction(updatedWorkflow, policy);
} else {
updateApprovalWorkflow(workflow, [], [], policy);
}
}

// Remove the member and close the modal
removeMemberAndCloseModal();
};

Expand Down
Loading