Skip to content

Commit

Permalink
Merge pull request #40793 from callstack-internal/perf/invite-to-work…
Browse files Browse the repository at this point in the history
…space-filtering

perf: Intive to workspace options filtering
  • Loading branch information
roryabraham committed Jun 28, 2024
2 parents 8b25f0a + d16fd0f commit 7450cf5
Showing 1 changed file with 16 additions and 2 deletions.
18 changes: 16 additions & 2 deletions src/pages/workspace/WorkspaceInvitePage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,21 @@ function WorkspaceInvitePage({route, betas, invitedEmailsToAccountIDsDraft, poli

const excludedUsers = useMemo(() => PolicyUtils.getIneligibleInvitees(policy?.employeeList), [policy?.employeeList]);

const defaultOptions = useMemo(() => {
if (!areOptionsInitialized) {
return {recentReports: [], personalDetails: [], userToInvite: null, currentUserOption: null, categoryOptions: [], tagOptions: [], taxRatesOptions: []};
}

const inviteOptions = OptionsListUtils.getMemberInviteOptions(options.personalDetails, betas ?? [], '', excludedUsers, true);

return {...inviteOptions, recentReports: [], currentUserOption: null, categoryOptions: [], tagOptions: [], taxRatesOptions: []};
}, [areOptionsInitialized, betas, excludedUsers, options.personalDetails]);

const inviteOptions = useMemo(
() => OptionsListUtils.filterOptions(defaultOptions, debouncedSearchTerm, {excludeLogins: excludedUsers}),
[debouncedSearchTerm, defaultOptions, excludedUsers],
);

useEffect(() => {
if (!areOptionsInitialized) {
return;
Expand All @@ -103,7 +118,6 @@ function WorkspaceInvitePage({route, betas, invitedEmailsToAccountIDsDraft, poli
const newPersonalDetailsDict: Record<number, OptionData> = {};
const newSelectedOptionsDict: Record<number, MemberForList> = {};

const inviteOptions = OptionsListUtils.getMemberInviteOptions(options.personalDetails, betas ?? [], debouncedSearchTerm, excludedUsers, true);
// Update selectedOptions with the latest personalDetails and policyEmployeeList information
const detailsMap: Record<string, MemberForList> = {};
inviteOptions.personalDetails.forEach((detail) => {
Expand Down Expand Up @@ -158,7 +172,7 @@ function WorkspaceInvitePage({route, betas, invitedEmailsToAccountIDsDraft, poli
setSelectedOptions(Object.values(newSelectedOptionsDict));

// eslint-disable-next-line react-hooks/exhaustive-deps -- we don't want to recalculate when selectedOptions change
}, [options.personalDetails, policy?.employeeList, betas, debouncedSearchTerm, excludedUsers, areOptionsInitialized]);
}, [options.personalDetails, policy?.employeeList, betas, debouncedSearchTerm, excludedUsers, areOptionsInitialized, inviteOptions.personalDetails, inviteOptions.userToInvite]);

const sections: MembersSection[] = useMemo(() => {
const sectionsArr: MembersSection[] = [];
Expand Down

0 comments on commit 7450cf5

Please sign in to comment.