Skip to content

Commit

Permalink
Merge pull request Expensify#42893 from nkdengineer/fix/42576
Browse files Browse the repository at this point in the history
fix: Custom name user searched with email id shows no results found
  • Loading branch information
thienlnam authored Jun 11, 2024
2 parents a779f7d + ec9bc7c commit 1d7ed05
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 27 deletions.
21 changes: 21 additions & 0 deletions src/libs/OptionsListUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -601,6 +601,26 @@ function getAlternateText(option: ReportUtils.OptionData, {showChatPreviewLine =
: LocalePhoneNumber.formatPhoneNumber(option.participantsList && option.participantsList.length > 0 ? option.participantsList[0].login ?? '' : '');
}

function isSearchStringMatchUserDetails(personalDetail: PersonalDetails, searchValue: string) {
let memberDetails = '';
if (personalDetail.login) {
memberDetails += ` ${personalDetail.login}`;
}
if (personalDetail.firstName) {
memberDetails += ` ${personalDetail.firstName}`;
}
if (personalDetail.lastName) {
memberDetails += ` ${personalDetail.lastName}`;
}
if (personalDetail.displayName) {
memberDetails += ` ${PersonalDetailsUtils.getDisplayNameOrDefault(personalDetail)}`;
}
if (personalDetail.phoneNumber) {
memberDetails += ` ${personalDetail.phoneNumber}`;
}
return isSearchStringMatch(searchValue.trim(), memberDetails.toLowerCase());
}

/**
* Get the last message text from the report directly or from other sources for special cases.
*/
Expand Down Expand Up @@ -2471,6 +2491,7 @@ export {
getPersonalDetailsForAccountIDs,
getIOUConfirmationOptionsFromPayeePersonalDetail,
getSearchText,
isSearchStringMatchUserDetails,
getAllReportErrors,
getPolicyExpenseReportOption,
getParticipantsOption,
Expand Down
23 changes: 2 additions & 21 deletions src/pages/RoomMembersPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -178,27 +178,8 @@ function RoomMembersPage({report, session, policies}: RoomMembersPageProps) {
}

// If search value is provided, filter out members that don't match the search value
if (searchValue.trim()) {
let memberDetails = '';
if (details.login) {
memberDetails += ` ${details.login.toLowerCase()}`;
}
if (details.firstName) {
memberDetails += ` ${details.firstName.toLowerCase()}`;
}
if (details.lastName) {
memberDetails += ` ${details.lastName.toLowerCase()}`;
}
if (details.displayName) {
memberDetails += ` ${PersonalDetailsUtils.getDisplayNameOrDefault(details).toLowerCase()}`;
}
if (details.phoneNumber) {
memberDetails += ` ${details.phoneNumber.toLowerCase()}`;
}

if (!OptionsListUtils.isSearchStringMatch(searchValue.trim(), memberDetails)) {
return;
}
if (searchValue.trim() && !OptionsListUtils.isSearchStringMatchUserDetails(details, searchValue)) {
return;
}
const pendingChatMember = report?.pendingChatMembers?.findLast((member) => member.accountID === accountID.toString());

Expand Down
12 changes: 6 additions & 6 deletions src/pages/workspace/workflows/WorkspaceWorkflowsApproverPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,10 @@ function WorkspaceWorkflowsApproverPage({policy, personalDetails, isLoadingRepor
Log.hmmm(`[WorkspaceMembersPage] no personal details found for policy member with accountID: ${accountID}`);
return;
}
const searchValue = OptionsListUtils.getSearchValueForPhoneOrEmail(searchTerm);
if (searchValue.trim() && !OptionsListUtils.isSearchStringMatchUserDetails(details, searchValue)) {
return;
}

const isOwner = policy?.owner === details.login;
const isAdmin = policyEmployee.role === CONST.POLICY.ROLE.ADMIN;
Expand Down Expand Up @@ -104,20 +108,16 @@ function WorkspaceWorkflowsApproverPage({policy, personalDetails, isLoadingRepor
}
});
return [policyMemberDetails, approverDetails];
}, [personalDetails, translate, policy?.approver, isDeletedPolicyEmployee, policy?.owner, policy?.employeeList]);
}, [policy?.employeeList, policy?.owner, policy?.approver, isDeletedPolicyEmployee, personalDetails, searchTerm, translate]);

const sections: MembersSection[] = useMemo(() => {
const sectionsArray: MembersSection[] = [];

if (searchTerm !== '') {
const filteredOptions = [...formattedApprover, ...formattedPolicyEmployeeList].filter((option) => {
const searchValue = OptionsListUtils.getSearchValueForPhoneOrEmail(searchTerm);
return !!option.text?.toLowerCase().includes(searchValue) || !!option.login?.toLowerCase().includes(searchValue);
});
return [
{
title: undefined,
data: filteredOptions,
data: [...formattedApprover, ...formattedPolicyEmployeeList],
shouldShow: true,
},
];
Expand Down

0 comments on commit 1d7ed05

Please sign in to comment.