Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 14 additions & 13 deletions src/pages/InviteReportParticipantsPage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -59,19 +59,20 @@ function InviteReportParticipantsPage({report}: InviteReportParticipantsPageProp
return res;
}, [report]);

const {searchTerm, setSearchTerm, availableOptions, selectedOptions, selectedOptionsForDisplay, toggleSelection, areOptionsInitialized, onListEndReached} = useSearchSelector({
selectionMode: CONST.SEARCH_SELECTOR.SELECTION_MODE_MULTI,
searchContext: CONST.SEARCH_SELECTOR.SEARCH_CONTEXT_MEMBER_INVITE,
includeUserToInvite: true,
excludeLogins: excludedUsers,
includeRecentReports: true,
shouldInitialize: didScreenTransitionEnd,
});
const {searchTerm, debouncedSearchTerm, setSearchTerm, availableOptions, selectedOptions, selectedOptionsForDisplay, toggleSelection, areOptionsInitialized, onListEndReached} =
useSearchSelector({
selectionMode: CONST.SEARCH_SELECTOR.SELECTION_MODE_MULTI,
searchContext: CONST.SEARCH_SELECTOR.SEARCH_CONTEXT_MEMBER_INVITE,
includeUserToInvite: true,
excludeLogins: excludedUsers,
includeRecentReports: true,
shouldInitialize: didScreenTransitionEnd,
});

useEffect(() => {
updateUserSearchPhrase(searchTerm);
searchInServer(searchTerm);
}, [searchTerm]);
updateUserSearchPhrase(debouncedSearchTerm);
searchInServer(debouncedSearchTerm);
}, [debouncedSearchTerm]);

const sections = useMemo(() => {
const sectionsArray: Sections = [];
Expand Down Expand Up @@ -149,7 +150,7 @@ function InviteReportParticipantsPage({report}: InviteReportParticipantsPageProp
}, [selectedOptions, goBack, reportID, validate, formatPhoneNumber]);

const headerMessage = useMemo(() => {
const processedLogin = searchTerm.trim().toLowerCase();
const processedLogin = debouncedSearchTerm.trim().toLowerCase();
const expensifyEmails = CONST.EXPENSIFY_EMAILS;
if (!availableOptions.userToInvite && expensifyEmails.includes(processedLogin)) {
return translate('messages.errorMessageInvalidEmail');
Expand All @@ -170,7 +171,7 @@ function InviteReportParticipantsPage({report}: InviteReportParticipantsPageProp
false,
);
}, [
searchTerm,
debouncedSearchTerm,
availableOptions.userToInvite,
availableOptions.recentReports.length,
availableOptions.personalDetails.length,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,14 +68,15 @@ function BaseOnboardingWorkspaceInvite({shouldUseNativeStyles}: BaseOnboardingWo
);
}, [policy?.employeeList]);

const {searchTerm, setSearchTerm, availableOptions, selectedOptions, selectedOptionsForDisplay, toggleSelection, areOptionsInitialized, searchOptions} = useSearchSelector({
selectionMode: CONST.SEARCH_SELECTOR.SELECTION_MODE_MULTI,
searchContext: CONST.SEARCH_SELECTOR.SEARCH_CONTEXT_MEMBER_INVITE,
includeUserToInvite: true,
excludeLogins: excludedUsers,
includeRecentReports: false,
shouldInitialize: didScreenTransitionEnd,
});
const {searchTerm, debouncedSearchTerm, setSearchTerm, availableOptions, selectedOptions, selectedOptionsForDisplay, toggleSelection, areOptionsInitialized, searchOptions} =
useSearchSelector({
selectionMode: CONST.SEARCH_SELECTOR.SELECTION_MODE_MULTI,
searchContext: CONST.SEARCH_SELECTOR.SEARCH_CONTEXT_MEMBER_INVITE,
includeUserToInvite: true,
excludeLogins: excludedUsers,
includeRecentReports: false,
shouldInitialize: didScreenTransitionEnd,
});

const welcomeNoteSubject = useMemo(
() => `# ${currentUserPersonalDetails?.displayName ?? ''} invited you to ${policy?.name ?? 'a workspace'}`,
Expand All @@ -85,8 +86,8 @@ function BaseOnboardingWorkspaceInvite({shouldUseNativeStyles}: BaseOnboardingWo
const welcomeNote = useMemo(() => translate('workspace.common.welcomeNote'), [translate]);

useEffect(() => {
searchInServer(searchTerm);
}, [searchTerm]);
searchInServer(debouncedSearchTerm);
}, [debouncedSearchTerm]);

const sections: Sections[] = useMemo(() => {
const sectionsArr: Sections[] = [];
Expand Down Expand Up @@ -194,7 +195,7 @@ function BaseOnboardingWorkspaceInvite({shouldUseNativeStyles}: BaseOnboardingWo
}, [completeOnboarding, onboardingPolicyID, policy?.employeeList, selectedOptions, welcomeNote, welcomeNoteSubject, formatPhoneNumber]);

const headerMessage = useMemo(() => {
const searchValue = searchTerm.trim().toLowerCase();
const searchValue = debouncedSearchTerm.trim().toLowerCase();
if (!availableOptions.userToInvite && CONST.EXPENSIFY_EMAILS_OBJECT[searchValue]) {
return translate('messages.errorMessageInvalidEmail');
}
Expand All @@ -206,7 +207,7 @@ function BaseOnboardingWorkspaceInvite({shouldUseNativeStyles}: BaseOnboardingWo
}
return getHeaderMessage(searchOptions.personalDetails.length + selectedOptions.length !== 0, !!searchOptions.userToInvite, searchValue, countryCode, false);
}, [
searchTerm,
debouncedSearchTerm,
availableOptions.userToInvite,
excludedUsers,
countryCode,
Expand Down
12 changes: 6 additions & 6 deletions src/pages/iou/request/MoneyRequestParticipantsSelector.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ function MoneyRequestParticipantsSelector({
[isIOUSplit, iouType, onParticipantsAdded],
);

const {searchTerm, setSearchTerm, availableOptions, selectedOptions, toggleSelection, areOptionsInitialized, onListEndReached, contactState} = useSearchSelector({
const {searchTerm, debouncedSearchTerm, setSearchTerm, availableOptions, selectedOptions, toggleSelection, areOptionsInitialized, onListEndReached, contactState} = useSearchSelector({
selectionMode: isIOUSplit ? CONST.SEARCH_SELECTOR.SELECTION_MODE_MULTI : CONST.SEARCH_SELECTOR.SELECTION_MODE_SINGLE,
searchContext: CONST.SEARCH_SELECTOR.SEARCH_CONTEXT_GENERAL,
includeUserToInvite: !isCategorizeOrShareAction && !isPerDiemRequest,
Expand All @@ -235,19 +235,19 @@ function MoneyRequestParticipantsSelector({
},
});

const cleanSearchTerm = useMemo(() => searchTerm.trim().toLowerCase(), [searchTerm]);
const cleanSearchTerm = useMemo(() => debouncedSearchTerm.trim().toLowerCase(), [debouncedSearchTerm]);

useEffect(() => {
searchInServer(searchTerm.trim());
}, [searchTerm]);
searchInServer(debouncedSearchTerm.trim());
}, [debouncedSearchTerm]);

const inputHelperText = useMemo(
() =>
getHeaderMessage(
(availableOptions.personalDetails ?? []).length + (availableOptions.recentReports ?? []).length + (availableOptions.workspaceChats ?? []).length !== 0 ||
!isEmptyObject(availableOptions.selfDMChat),
!!availableOptions?.userToInvite,
searchTerm.trim(),
debouncedSearchTerm.trim(),
countryCode,
participants.some((participant) => getPersonalDetailSearchTerms(participant).join(' ').toLowerCase().includes(cleanSearchTerm)),
),
Expand All @@ -260,7 +260,7 @@ function MoneyRequestParticipantsSelector({
availableOptions?.userToInvite,
availableOptions.workspaceChats,
cleanSearchTerm,
searchTerm,
debouncedSearchTerm,
participants,
countryCode,
],
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ function VacationDelegatePage() {
const [vacationDelegate] = useOnyx(ONYXKEYS.NVP_PRIVATE_VACATION_DELEGATE, {canBeMissing: true});
const currentVacationDelegate = vacationDelegate?.delegate;
const delegatePersonalDetails = getPersonalDetailByEmail(currentVacationDelegate ?? '');
const icons = useMemoizedLazyExpensifyIcons(['FallbackAvatar'] as const);
const icons = useMemoizedLazyExpensifyIcons(['FallbackAvatar']);

const excludeLogins = useMemo(
() => ({
Expand All @@ -45,7 +45,7 @@ function VacationDelegatePage() {
[currentVacationDelegate],
);

const {searchTerm, setSearchTerm, availableOptions, areOptionsInitialized, onListEndReached} = useSearchSelector({
const {searchTerm, debouncedSearchTerm, setSearchTerm, availableOptions, areOptionsInitialized, onListEndReached} = useSearchSelector({
selectionMode: CONST.SEARCH_SELECTOR.SELECTION_MODE_SINGLE,
maxRecentReportsToShow: CONST.IOU.MAX_RECENT_REPORTS_TO_SHOW,
searchContext: CONST.SEARCH_SELECTOR.SEARCH_CONTEXT_GENERAL,
Expand All @@ -60,11 +60,11 @@ function VacationDelegatePage() {
return getHeaderMessage(
(availableOptions.recentReports?.length || 0) + (availableOptions.personalDetails?.length || 0) !== 0,
!!availableOptions.userToInvite,
searchTerm.trim(),
debouncedSearchTerm.trim(),
countryCode,
false,
);
}, [availableOptions.recentReports?.length, availableOptions.personalDetails?.length, availableOptions.userToInvite, searchTerm, countryCode]);
}, [availableOptions.recentReports?.length, availableOptions.personalDetails?.length, availableOptions.userToInvite, debouncedSearchTerm, countryCode]);

const sections = useMemo(() => {
const sectionsList = [];
Expand Down Expand Up @@ -161,8 +161,8 @@ function VacationDelegatePage() {
);

useEffect(() => {
searchInServer(searchTerm);
}, [searchTerm]);
searchInServer(debouncedSearchTerm);
}, [debouncedSearchTerm]);

return (
<>
Expand Down
38 changes: 24 additions & 14 deletions src/pages/workspace/WorkspaceInvitePage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -95,16 +95,26 @@ function WorkspaceInvitePage({route, policy}: WorkspaceInvitePageProps) {
});
}, [invitedEmailsToAccountIDsDraft, personalDetails]);

const {searchTerm, setSearchTerm, availableOptions, selectedOptions, selectedOptionsForDisplay, toggleSelection, areOptionsInitialized, onListEndReached, searchOptions} =
useSearchSelector({
selectionMode: CONST.SEARCH_SELECTOR.SELECTION_MODE_MULTI,
searchContext: CONST.SEARCH_SELECTOR.SEARCH_CONTEXT_MEMBER_INVITE,
includeUserToInvite: true,
excludeLogins: excludedUsers,
includeRecentReports: false,
shouldInitialize: didScreenTransitionEnd,
initialSelected: initiallySelectedOptions,
});
const {
searchTerm,
debouncedSearchTerm,
setSearchTerm,
availableOptions,
selectedOptions,
selectedOptionsForDisplay,
toggleSelection,
areOptionsInitialized,
onListEndReached,
searchOptions,
} = useSearchSelector({
selectionMode: CONST.SEARCH_SELECTOR.SELECTION_MODE_MULTI,
searchContext: CONST.SEARCH_SELECTOR.SEARCH_CONTEXT_MEMBER_INVITE,
includeUserToInvite: true,
excludeLogins: excludedUsers,
includeRecentReports: false,
shouldInitialize: didScreenTransitionEnd,
initialSelected: initiallySelectedOptions,
});

const sections: Sections[] = useMemo(() => {
const sectionsArr: Sections[] = [];
Expand Down Expand Up @@ -180,7 +190,7 @@ function WorkspaceInvitePage({route, policy}: WorkspaceInvitePageProps) {
);

const headerMessage = useMemo(() => {
const searchValue = searchTerm.trim().toLowerCase();
const searchValue = debouncedSearchTerm.trim().toLowerCase();
if (!availableOptions.userToInvite && CONST.EXPENSIFY_EMAILS_OBJECT[searchValue]) {
return translate('messages.errorMessageInvalidEmail');
}
Expand All @@ -192,7 +202,7 @@ function WorkspaceInvitePage({route, policy}: WorkspaceInvitePageProps) {
}
return getHeaderMessage(searchOptions.personalDetails.length + selectedOptions.length !== 0, !!searchOptions.userToInvite, searchValue, countryCode, false);
}, [
searchTerm,
debouncedSearchTerm,
availableOptions.userToInvite,
excludedUsers,
countryCode,
Expand All @@ -219,8 +229,8 @@ function WorkspaceInvitePage({route, policy}: WorkspaceInvitePageProps) {
);

useEffect(() => {
searchInServer(searchTerm);
}, [searchTerm]);
searchInServer(debouncedSearchTerm);
}, [debouncedSearchTerm]);

return (
<AccessOrNotFoundWrapper
Expand Down
10 changes: 5 additions & 5 deletions src/pages/workspace/companyCards/assignCard/AssigneeStep.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ function AssigneeStep({route}: AssigneeStepProps) {
const {translate, formatPhoneNumber, localeCompare} = useLocalize();
const styles = useThemeStyles();
const {isOffline} = useNetwork();
const icons = useMemoizedLazyExpensifyIcons(['FallbackAvatar'] as const);
const icons = useMemoizedLazyExpensifyIcons(['FallbackAvatar']);
const policy = usePolicy(policyID);
const [assignCard] = useOnyx(ONYXKEYS.ASSIGN_CARD, {canBeMissing: true});
const [countryCode = CONST.DEFAULT_COUNTRY_CODE] = useOnyx(ONYXKEYS.COUNTRY_CODE, {canBeMissing: false});
Expand Down Expand Up @@ -222,16 +222,16 @@ function AssigneeStep({route}: AssigneeStepProps) {
]);
Comment thread
abzokhattab marked this conversation as resolved.

useEffect(() => {
searchInServer(searchTerm);
}, [searchTerm]);
searchInServer(debouncedSearchTerm);
}, [debouncedSearchTerm]);

const headerMessage = useMemo(() => {
const searchValue = searchTerm.trim().toLowerCase();
const searchValue = debouncedSearchTerm.trim().toLowerCase();
if (!availableOptions.userToInvite && CONST.EXPENSIFY_EMAILS_OBJECT[searchValue]) {
return translate('messages.errorMessageInvalidEmail');
}
return getHeaderMessage(assignees.length > 0, !!availableOptions.userToInvite, searchValue, countryCode, false);
}, [searchTerm, availableOptions.userToInvite, assignees?.length, countryCode, translate]);
}, [debouncedSearchTerm, availableOptions.userToInvite, assignees?.length, countryCode, translate]);

const textInputOptions = useMemo(
() => ({
Expand Down
15 changes: 8 additions & 7 deletions src/pages/workspace/expensifyCard/issueNew/AssigneeStep.tsx
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import React, {useEffect, useMemo, useState} from 'react';
import type {OnyxEntry} from 'react-native-onyx';
import * as Expensicons from '@components/Icon/Expensicons';
import InteractiveStepWrapper from '@components/InteractiveStepWrapper';
import SelectionList from '@components/SelectionList';
import UserListItem from '@components/SelectionList/ListItem/UserListItem';
import type {ListItem} from '@components/SelectionList/types';
import Text from '@components/Text';
import useCurrencyForExpensifyCard from '@hooks/useCurrencyForExpensifyCard';
import {useMemoizedLazyExpensifyIcons} from '@hooks/useLazyAsset';
import useLocalize from '@hooks/useLocalize';
import useNetwork from '@hooks/useNetwork';
import useOnyx from '@hooks/useOnyx';
Expand Down Expand Up @@ -44,6 +44,7 @@ type AssigneeStepProps = {
function AssigneeStep({policy, stepNames, startStepIndex, route}: AssigneeStepProps) {
const {translate, formatPhoneNumber, localeCompare} = useLocalize();
const styles = useThemeStyles();
const icons = useMemoizedLazyExpensifyIcons(['FallbackAvatar']);
const {isOffline} = useNetwork();
const policyID = route.params.policyID;
const [issueNewCard] = useOnyx(`${ONYXKEYS.COLLECTION.ISSUE_NEW_EXPENSIFY_CARD}${policyID}`, {canBeMissing: true});
Expand Down Expand Up @@ -136,7 +137,7 @@ function AssigneeStep({policy, stepNames, startStepIndex, route}: AssigneeStepPr
isSelected: issueNewCard?.data?.assigneeEmail === email,
icons: [
{
source: personalDetail?.avatar ?? Expensicons.FallbackAvatar,
source: personalDetail?.avatar ?? icons.FallbackAvatar,
name: formatPhoneNumber(email),
type: CONST.ICON_TYPE_AVATAR,
id: personalDetail?.accountID,
Expand All @@ -148,7 +149,7 @@ function AssigneeStep({policy, stepNames, startStepIndex, route}: AssigneeStepPr
membersList = sortAlphabetically(membersList, 'text', localeCompare);

return membersList;
}, [policy?.employeeList, localeCompare, isOffline, issueNewCard?.data?.assigneeEmail, formatPhoneNumber]);
}, [policy?.employeeList, localeCompare, isOffline, issueNewCard?.data?.assigneeEmail, formatPhoneNumber, icons.FallbackAvatar]);

const assignees = useMemo(() => {
if (!debouncedSearchTerm) {
Expand Down Expand Up @@ -187,16 +188,16 @@ function AssigneeStep({policy, stepNames, startStepIndex, route}: AssigneeStepPr
]);

useEffect(() => {
searchInServer(searchTerm);
}, [searchTerm]);
searchInServer(debouncedSearchTerm);
}, [debouncedSearchTerm]);

const headerMessage = useMemo(() => {
const searchValue = searchTerm.trim().toLowerCase();
const searchValue = debouncedSearchTerm.trim().toLowerCase();
if (!availableOptions.userToInvite && CONST.EXPENSIFY_EMAILS_OBJECT[searchValue]) {
return translate('messages.errorMessageInvalidEmail');
}
return getHeaderMessage(assignees.length > 0, !!availableOptions.userToInvite, searchValue, countryCode, false);
}, [searchTerm, availableOptions.userToInvite, assignees.length, countryCode, translate]);
}, [debouncedSearchTerm, availableOptions.userToInvite, assignees.length, countryCode, translate]);

const textInputOptions = useMemo(
() => ({
Expand Down
Loading
Loading