Skip to content

Commit 4e685a8

Browse files
authored
Merge pull request Expensify#68438 from dukenv0307/fix/68160
Users missing in the modal to add to the approval flow
2 parents 55eeee6 + b8a7f53 commit 4e685a8

4 files changed

Lines changed: 11 additions & 13 deletions

File tree

src/libs/PolicyUtils.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -678,7 +678,8 @@ function getApprovalWorkflow(policy: OnyxEntry<Policy> | SearchPolicy): ValueOf<
678678
}
679679

680680
function getDefaultApprover(policy: OnyxEntry<Policy> | SearchPolicy): string {
681-
return policy?.approver ?? policy?.owner ?? '';
681+
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
682+
return policy?.approver || policy?.owner || '';
682683
}
683684

684685
function getRuleApprovers(policy: OnyxEntry<Policy> | SearchPolicy, expenseReport: OnyxEntry<Report>) {

src/pages/workspace/WorkspaceMembersPage.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavig
5151
import type {WorkspaceSplitNavigatorParamList} from '@libs/Navigation/types';
5252
import {isPersonalDetailsReady, sortAlphabetically} from '@libs/OptionsListUtils';
5353
import {getAccountIDsByLogins, getDisplayNameOrDefault, getPersonalDetailsByIDs} from '@libs/PersonalDetailsUtils';
54-
import {getMemberAccountIDsForWorkspace, isDeletedPolicyEmployee, isExpensifyTeam, isPaidGroupPolicy, isPolicyAdmin as isPolicyAdminUtils} from '@libs/PolicyUtils';
54+
import {getDefaultApprover, getMemberAccountIDsForWorkspace, isDeletedPolicyEmployee, isExpensifyTeam, isPaidGroupPolicy, isPolicyAdmin as isPolicyAdminUtils} from '@libs/PolicyUtils';
5555
import {getDisplayNameForParticipant} from '@libs/ReportUtils';
5656
import StringUtils from '@libs/StringUtils';
5757
import {convertPolicyEmployeesToApprovalWorkflows, updateWorkflowDataOnApproverRemoval} from '@libs/WorkflowUtils';
@@ -145,16 +145,15 @@ function WorkspaceMembersPage({personalDetails, route, policy}: WorkspaceMembers
145145
const policyID = route.params.policyID;
146146

147147
const ownerDetails = personalDetails?.[policy?.ownerAccountID ?? CONST.DEFAULT_NUMBER_ID] ?? ({} as PersonalDetails);
148-
const policyApproverEmail = policy?.approver;
149148
const {approvalWorkflows} = useMemo(
150149
() =>
151150
convertPolicyEmployeesToApprovalWorkflows({
152151
employees: policy?.employeeList ?? {},
153-
defaultApprover: policyApproverEmail ?? policy?.owner ?? '',
152+
defaultApprover: getDefaultApprover(policy),
154153
personalDetails: personalDetails ?? {},
155154
localeCompare,
156155
}),
157-
[personalDetails, policy?.employeeList, policy?.owner, policyApproverEmail, localeCompare],
156+
[personalDetails, policy, localeCompare],
158157
);
159158

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

src/pages/workspace/members/WorkspaceMemberDetailsPage.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ import {convertToDisplayString} from '@libs/CurrencyUtils';
3232
import navigateAfterInteraction from '@libs/Navigation/navigateAfterInteraction';
3333
import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types';
3434
import {getDisplayNameOrDefault, getPhoneNumber} from '@libs/PersonalDetailsUtils';
35-
import {isControlPolicy} from '@libs/PolicyUtils';
35+
import {getDefaultApprover, isControlPolicy} from '@libs/PolicyUtils';
3636
import shouldRenderTransferOwnerButton from '@libs/shouldRenderTransferOwnerButton';
3737
import {convertPolicyEmployeesToApprovalWorkflows, updateWorkflowDataOnApproverRemoval} from '@libs/WorkflowUtils';
3838
import Navigation from '@navigation/Navigation';
@@ -104,16 +104,15 @@ function WorkspaceMemberDetailsPage({personalDetails, policy, route}: WorkspaceM
104104
const phoneNumber = getPhoneNumber(details);
105105
const {isAccountLocked, showLockedAccountModal} = useContext(LockedAccountContext);
106106

107-
const policyApproverEmail = policy?.approver;
108107
const {approvalWorkflows} = useMemo(
109108
() =>
110109
convertPolicyEmployeesToApprovalWorkflows({
111110
employees: policy?.employeeList ?? {},
112-
defaultApprover: policyApproverEmail ?? policy?.owner ?? '',
111+
defaultApprover: getDefaultApprover(policy),
113112
personalDetails: personalDetails ?? {},
114113
localeCompare,
115114
}),
116-
[personalDetails, policy?.employeeList, policy?.owner, policyApproverEmail, localeCompare],
115+
[personalDetails, policy, localeCompare],
117116
);
118117

119118
useEffect(() => {

src/pages/workspace/workflows/WorkspaceWorkflowsPage.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ import Navigation from '@libs/Navigation/Navigation';
4040
import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types';
4141
import {getPaymentMethodDescription} from '@libs/PaymentUtils';
4242
import {getPersonalDetailByEmail} from '@libs/PersonalDetailsUtils';
43-
import {getCorrectedAutoReportingFrequency, isControlPolicy, isPaidGroupPolicy as isPaidGroupPolicyUtil, isPolicyAdmin as isPolicyAdminUtil} from '@libs/PolicyUtils';
43+
import {getCorrectedAutoReportingFrequency, getDefaultApprover, isControlPolicy, isPaidGroupPolicy as isPaidGroupPolicyUtil, isPolicyAdmin as isPolicyAdminUtil} from '@libs/PolicyUtils';
4444
import {convertPolicyEmployeesToApprovalWorkflows, INITIAL_APPROVAL_WORKFLOW} from '@libs/WorkflowUtils';
4545
import type {WorkspaceSplitNavigatorParamList} from '@navigation/types';
4646
import AccessOrNotFoundWrapper from '@pages/workspace/AccessOrNotFoundWrapper';
@@ -73,18 +73,17 @@ function WorkspaceWorkflowsPage({policy, route}: WorkspaceWorkflowsPageProps) {
7373
const [cardList] = useOnyx(`${ONYXKEYS.COLLECTION.WORKSPACE_CARDS_LIST}`, {canBeMissing: false});
7474
const workspaceCards = getAllCardsForWorkspace(workspaceAccountID, cardList, cardFeeds);
7575
const isSmartLimitEnabled = isSmartLimitEnabledUtil(workspaceCards);
76-
const policyApproverEmail = policy?.approver;
7776
const [isUpdateWorkspaceCurrencyModalOpen, setIsUpdateWorkspaceCurrencyModalOpen] = useState(false);
7877
const [personalDetails] = useOnyx(ONYXKEYS.PERSONAL_DETAILS_LIST, {canBeMissing: false});
7978
const {approvalWorkflows, availableMembers, usedApproverEmails} = useMemo(
8079
() =>
8180
convertPolicyEmployeesToApprovalWorkflows({
8281
employees: policy?.employeeList ?? {},
83-
defaultApprover: policyApproverEmail ?? policy?.owner ?? '',
82+
defaultApprover: getDefaultApprover(policy),
8483
personalDetails: personalDetails ?? {},
8584
localeCompare,
8685
}),
87-
[personalDetails, policy?.employeeList, policy?.owner, policyApproverEmail, localeCompare],
86+
[personalDetails, policy, localeCompare],
8887
);
8988
const {isBetaEnabled} = usePermissions();
9089

0 commit comments

Comments
 (0)