Skip to content

Commit 72dc4b6

Browse files
authored
Merge pull request Expensify#88511 from callstack-internal/perf/report-welcome-text
[No QA] perf: avoid mapping all personal details in ReportWelcomeText
2 parents cd199f8 + f7587b5 commit 72dc4b6

3 files changed

Lines changed: 7 additions & 11 deletions

File tree

src/components/ReportWelcomeText.tsx

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import {View} from 'react-native';
33
import type {OnyxEntry} from 'react-native-onyx';
44
import useEnvironment from '@hooks/useEnvironment';
55
import useLocalize from '@hooks/useLocalize';
6-
import useMappedPersonalDetails, {personalDetailMapper} from '@hooks/useMappedPersonalDetails';
76
import useOnyx from '@hooks/useOnyx';
87
import usePreferredPolicy from '@hooks/usePreferredPolicy';
98
import useReportAttributes from '@hooks/useReportAttributes';
@@ -28,7 +27,7 @@ import CONST from '@src/CONST';
2827
import type {IOUType} from '@src/CONST';
2928
import ONYXKEYS from '@src/ONYXKEYS';
3029
import ROUTES from '@src/ROUTES';
31-
import type {OnyxInputOrEntry, PersonalDetailsList, Policy, Report} from '@src/types/onyx';
30+
import type {Policy, Report} from '@src/types/onyx';
3231
import RenderHTML from './RenderHTML';
3332
import Text from './Text';
3433

@@ -45,7 +44,7 @@ function ReportWelcomeText({report, policy}: ReportWelcomeTextProps) {
4544
const styles = useThemeStyles();
4645
const {environmentURL} = useEnvironment();
4746
const reportAttributes = useReportAttributes();
48-
const [personalDetails] = useMappedPersonalDetails(personalDetailMapper);
47+
const [personalDetails] = useOnyx(ONYXKEYS.PERSONAL_DETAILS_LIST);
4948
const {isRestrictedToPreferredPolicy} = usePreferredPolicy();
5049
const isPolicyExpenseChat = isPolicyExpenseChatReportUtils(report);
5150
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
@@ -108,9 +107,7 @@ function ReportWelcomeText({report, policy}: ReportWelcomeTextProps) {
108107
// If we are the only participant (e.g. solo group chat) then keep the current user personal details so the welcome message does not show up empty.
109108
const shouldExcludeCurrentUser = participantAccountIDs.length > 0;
110109
const participantAccountIDsExcludeCurrentUser = getParticipantsAccountIDsForDisplay(report, undefined, undefined, shouldExcludeCurrentUser);
111-
const participantPersonalDetailListExcludeCurrentUser = Object.values(
112-
getPersonalDetailsForAccountIDs(participantAccountIDsExcludeCurrentUser, personalDetails as OnyxInputOrEntry<PersonalDetailsList>),
113-
);
110+
const participantPersonalDetailListExcludeCurrentUser = Object.values(getPersonalDetailsForAccountIDs(participantAccountIDsExcludeCurrentUser, personalDetails));
114111
const welcomeMessage = SidebarUtils.getWelcomeMessage({
115112
report,
116113
policy,

src/pages/Debug/Report/DebugReportActions.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import SelectionList from '@components/SelectionList';
66
import RadioListItem from '@components/SelectionList/ListItem/RadioListItem';
77
import useDebouncedState from '@hooks/useDebouncedState';
88
import useLocalize from '@hooks/useLocalize';
9-
import useMappedPersonalDetails, {personalDetailMapper} from '@hooks/useMappedPersonalDetails';
109
import useOnyx from '@hooks/useOnyx';
1110
import useReportAttributes from '@hooks/useReportAttributes';
1211
import useReportIsArchived from '@hooks/useReportIsArchived';
@@ -20,7 +19,7 @@ import SidebarUtils from '@libs/SidebarUtils';
2019
import CONST from '@src/CONST';
2120
import ONYXKEYS from '@src/ONYXKEYS';
2221
import ROUTES from '@src/ROUTES';
23-
import type {OnyxInputOrEntry, PersonalDetailsList, ReportAction, ReportActions} from '@src/types/onyx';
22+
import type {ReportAction, ReportActions} from '@src/types/onyx';
2423

2524
type DebugReportActionsProps = {
2625
reportID: string;
@@ -36,7 +35,7 @@ function DebugReportActions({reportID}: DebugReportActionsProps) {
3635
const [invoiceReceiverPolicy] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY}${invoiceReceiverPolicyID}`);
3736
const isReportArchived = useReportIsArchived(reportID);
3837
const ifUserCanPerformWriteAction = canUserPerformWriteAction(report, isReportArchived);
39-
const [personalDetails] = useMappedPersonalDetails(personalDetailMapper);
38+
const [personalDetails] = useOnyx(ONYXKEYS.PERSONAL_DETAILS_LIST);
4039
const [conciergeReportID] = useOnyx(ONYXKEYS.CONCIERGE_REPORT_ID);
4140
const reportAttributes = useReportAttributes();
4241

@@ -56,7 +55,7 @@ function DebugReportActions({reportID}: DebugReportActionsProps) {
5655
[getSortedAllReportActionsSelector],
5756
);
5857
const participantAccountIDs = getParticipantsAccountIDsForDisplay(report, undefined, undefined, true);
59-
const participantPersonalDetailList = Object.values(getPersonalDetailsForAccountIDs(participantAccountIDs, personalDetails as OnyxInputOrEntry<PersonalDetailsList>));
58+
const participantPersonalDetailList = Object.values(getPersonalDetailsForAccountIDs(participantAccountIDs, personalDetails));
6059

6160
const getReportActionDebugText = useCallback(
6261
(reportAction: ReportAction) => {

tests/unit/ReportWelcomeTextTest.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ describe('ReportWelcomeText', () => {
162162
expect(screen.getByText('Expensify')).toBeTruthy();
163163
});
164164

165-
it('uses personal details from Onyx via useMappedPersonalDetails', async () => {
165+
it('uses personal details from Onyx', async () => {
166166
const report: Report = {
167167
reportID: '5',
168168
type: CONST.REPORT.TYPE.CHAT,

0 commit comments

Comments
 (0)