Skip to content

Commit cebbd25

Browse files
authored
Merge pull request Expensify#90682 from huult/83369-migrate-reports-core-part-4
83369 migrate reports core part 4
2 parents ca781c0 + 524abdf commit cebbd25

49 files changed

Lines changed: 209 additions & 189 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/ROUTES.ts

Lines changed: 26 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,28 @@ const DYNAMIC_ROUTES = {
156156
SCREENS.REPORT_CHANGE_WORKSPACE.ROOT,
157157
],
158158
},
159+
EDIT_REPORT_FIELD: {
160+
path: 'edit/policyField/:policyID/:fieldID',
161+
entryScreens: [SCREENS.REPORT, SCREENS.RIGHT_MODAL.SEARCH_REPORT, SCREENS.RIGHT_MODAL.EXPENSE_REPORT, SCREENS.RIGHT_MODAL.SEARCH_MONEY_REQUEST_REPORT, SCREENS.REPORT_DETAILS.ROOT],
162+
getRoute: (policyID: string, fieldID: string) => `edit/policyField/${policyID}/${encodeURIComponent(fieldID)}` as const,
163+
},
164+
PROFILE: {
165+
path: 'a/:accountID',
166+
entryScreens: ['*'],
167+
getRoute: (accountID?: number, login?: string) => getUrlWithParams(`a/${accountID}`, {login}),
168+
queryParams: ['login'],
169+
},
170+
PROFILE_AVATAR: {
171+
path: 'avatar/:accountID',
172+
entryScreens: ['*'],
173+
getRoute: (accountID: number) => `avatar/${accountID}` as const,
174+
},
175+
NEW_REPORT_WORKSPACE_SELECTION: {
176+
path: 'new-report-workspace-selection',
177+
entryScreens: ['*'],
178+
getRoute: (isMovingExpenses?: boolean) => `new-report-workspace-selection${isMovingExpenses ? '?isMovingExpenses=true' : ''}` as const,
179+
queryParams: ['isMovingExpenses'],
180+
},
159181
NETSUITE_AUTO_SYNC: {
160182
path: 'netsuite-autosync',
161183
entryScreens: [SCREENS.WORKSPACE.ACCOUNTING.NETSUITE_ADVANCED, SCREENS.WORKSPACE.ACCOUNTING.CARD_RECONCILIATION],
@@ -452,7 +474,7 @@ const DYNAMIC_ROUTES = {
452474
},
453475
NOTIFICATION_PREFERENCES: {
454476
path: 'notification-preferences',
455-
entryScreens: [SCREENS.REPORT_SETTINGS.ROOT, SCREENS.PROFILE_ROOT],
477+
entryScreens: [SCREENS.REPORT_SETTINGS.ROOT, SCREENS.DYNAMIC_PROFILE],
456478
getRoute: (reportID: string) => getUrlWithParams('notification-preferences', {reportID}),
457479
queryParams: ['reportID'],
458480
},
@@ -512,7 +534,7 @@ const DYNAMIC_ROUTES = {
512534
},
513535
EXPENSIFY_CARD_DETAILS: {
514536
path: 'expensify-card-details/:cardID/:policyID',
515-
entryScreens: [SCREENS.WORKSPACE.EXPENSIFY_CARD, SCREENS.REPORT, SCREENS.RIGHT_MODAL.SEARCH_REPORT, SCREENS.RIGHT_MODAL.SEARCH_MONEY_REQUEST_REPORT, SCREENS.PROFILE_ROOT],
537+
entryScreens: [SCREENS.WORKSPACE.EXPENSIFY_CARD, SCREENS.REPORT, SCREENS.RIGHT_MODAL.SEARCH_REPORT, SCREENS.RIGHT_MODAL.SEARCH_MONEY_REQUEST_REPORT, SCREENS.DYNAMIC_PROFILE],
516538
getRoute: (cardID: string, policyID: string) => `expensify-card-details/${cardID}/${policyID}` as const,
517539
},
518540
EXPENSIFY_CARD_LIMIT_TYPE: {
@@ -671,7 +693,7 @@ const DYNAMIC_ROUTES = {
671693
SCREENS.RIGHT_MODAL.EXPENSE_REPORT,
672694
SCREENS.RIGHT_MODAL.SEARCH_MONEY_REQUEST_REPORT,
673695
SCREENS.REPORT_DETAILS.ROOT,
674-
SCREENS.PROFILE_ROOT,
696+
SCREENS.DYNAMIC_PROFILE,
675697
],
676698
getRoute: (reportID?: string) => getUrlWithParams('notes', reportID ? {reportID} : {}),
677699
queryParams: ['reportID'],
@@ -684,7 +706,7 @@ const DYNAMIC_ROUTES = {
684706
SCREENS.RIGHT_MODAL.EXPENSE_REPORT,
685707
SCREENS.RIGHT_MODAL.SEARCH_MONEY_REQUEST_REPORT,
686708
SCREENS.REPORT_DETAILS.ROOT,
687-
SCREENS.PROFILE_ROOT,
709+
SCREENS.DYNAMIC_PROFILE,
688710
SCREENS.DYNAMIC_PRIVATE_NOTES_LIST,
689711
],
690712
getRoute: (accountID: number, reportID?: string) => {
@@ -830,20 +852,6 @@ const ROUTES = {
830852
CONCIERGE: 'concierge',
831853
TRACK_EXPENSE: 'track-expense',
832854
SUBMIT_EXPENSE: 'submit-expense',
833-
PROFILE: {
834-
route: 'a/:accountID',
835-
getRoute: (accountID?: number, backTo?: string, login?: string) => {
836-
const baseRoute = getUrlWithBackToParam(`a/${accountID}`, backTo);
837-
const loginParam = login ? `?login=${encodeURIComponent(login)}` : '';
838-
return `${baseRoute}${loginParam}` as const;
839-
},
840-
},
841-
PROFILE_AVATAR: {
842-
route: 'a/:accountID/avatar',
843-
844-
getRoute: (accountID: number, backTo?: string) => getUrlWithBackToParam(`a/${accountID}/avatar` as const, backTo),
845-
},
846-
847855
// This is a special validation URL that will take the user to /workspace/new after validation. This is used
848856
// when linking users from e.com in order to share a session in this app.
849857
ENABLE_PAYMENTS: 'enable-payments',
@@ -1267,19 +1275,6 @@ const ROUTES = {
12671275
NEW_CHAT_EDIT_NAME: 'new/chat/confirm/name/edit',
12681276
NEW_ROOM: 'new/room',
12691277

1270-
NEW_REPORT_WORKSPACE_SELECTION: {
1271-
route: 'new-report-workspace-selection',
1272-
getRoute: (isMovingExpenses?: boolean, backTo?: string) => {
1273-
const params = new URLSearchParams();
1274-
if (isMovingExpenses) {
1275-
params.set('isMovingExpenses', 'true');
1276-
}
1277-
const query = params.toString();
1278-
const baseRoute = `new-report-workspace-selection${query ? `?${query}` : ''}` as const;
1279-
1280-
return getUrlWithBackToParam(baseRoute, backTo);
1281-
},
1282-
},
12831278
REPORT: 'r',
12841279
REPORT_WITH_ID: {
12851280
route: 'r/:reportID?/:reportActionID?',
@@ -1334,19 +1329,6 @@ const ROUTES = {
13341329
route: 'r/:threadReportID/edit/currency',
13351330
getRoute: (threadReportID: string, currency: string, backTo: string) => `r/${threadReportID}/edit/currency?currency=${currency}&backTo=${backTo}` as const,
13361331
},
1337-
EDIT_REPORT_FIELD_REQUEST: {
1338-
route: 'r/:reportID/edit/policyField/:policyID/:fieldID',
1339-
getRoute: (reportID: string | undefined, policyID: string | undefined, fieldID: string, backTo?: string) => {
1340-
if (!policyID || !reportID) {
1341-
Log.warn('Invalid policyID or reportID is used to build the EDIT_REPORT_FIELD_REQUEST route', {
1342-
policyID,
1343-
reportID,
1344-
});
1345-
}
1346-
1347-
return getUrlWithBackToParam(`r/${reportID}/edit/policyField/${policyID}/${encodeURIComponent(fieldID)}` as const, backTo);
1348-
},
1349-
},
13501332
REPORT_WITH_ID_DETAILS_SHARE_CODE: {
13511333
route: 'r/:reportID/details/shareCode',
13521334
getRoute: (reportID: string | undefined, backTo?: string) => {

src/SCREENS.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ const PROTECTED_SCREENS = {
1717
const SCREENS = {
1818
...PROTECTED_SCREENS,
1919
REPORT: 'Report',
20-
PROFILE_AVATAR: 'ProfileAvatar',
20+
DYNAMIC_PROFILE_AVATAR: 'Dynamic_Profile_Avatar',
2121
WORKSPACE_AVATAR: 'WorkspaceAvatar',
2222
WORKSPACE_DOCUMENT: 'WorkspaceDocument',
2323
REPORT_AVATAR: 'ReportAvatar',
@@ -516,7 +516,7 @@ const SCREENS = {
516516
},
517517

518518
NEW_REPORT_WORKSPACE_SELECTION: {
519-
ROOT: 'NewReportWorkspaceSelection_Root',
519+
DYNAMIC_ROOT: 'Dynamic_NewReportWorkspaceSelection_Root',
520520
},
521521

522522
SET_DEFAULT_WORKSPACE: 'SetDefaultWorkspace',
@@ -915,7 +915,7 @@ const SCREENS = {
915915

916916
EDIT_REQUEST: {
917917
CURRENCY: 'EditRequest_Currency',
918-
REPORT_FIELD: 'EditRequest_ReportField',
918+
DYNAMIC_REPORT_FIELD: 'Dynamic_EditRequest_ReportField',
919919
},
920920

921921
NEW_CHAT: {
@@ -978,7 +978,7 @@ const SCREENS = {
978978
WALLET_STATEMENT_ROOT: 'WalletStatement_Root',
979979
SIGN_IN_ROOT: 'SignIn_Root',
980980
DETAILS_ROOT: 'Details_Root',
981-
PROFILE_ROOT: 'Profile_Root',
981+
DYNAMIC_PROFILE: 'Dynamic_Profile_Root',
982982
AUTO_SUBMIT_ROOT: 'AutoSubmit_Modal_Root',
983983
DYNAMIC_CHANGE_POLICY_EDUCATIONAL_ROOT: 'DynamicChangePolicyEducational_Root',
984984
REPORT_DESCRIPTION_ROOT: 'Report_Description_Root',

src/components/AvatarWithDisplayName.tsx

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import useResponsiveLayout from '@hooks/useResponsiveLayout';
1313
import useStyleUtils from '@hooks/useStyleUtils';
1414
import useTheme from '@hooks/useTheme';
1515
import useThemeStyles from '@hooks/useThemeStyles';
16+
import createDynamicRoute from '@libs/Navigation/helpers/dynamicRoutesUtils/createDynamicRoute';
1617
import Navigation from '@libs/Navigation/Navigation';
1718
import {getPersonalDetailsForAccountIDs} from '@libs/OptionsListUtils';
1819
import {getHumanAgentAccountIDFromReportAction, getHumanAgentFirstName} from '@libs/ReportActionsUtils';
@@ -37,7 +38,7 @@ import {
3738
import variables from '@styles/variables';
3839
import CONST from '@src/CONST';
3940
import ONYXKEYS from '@src/ONYXKEYS';
40-
import ROUTES from '@src/ROUTES';
41+
import ROUTES, {DYNAMIC_ROUTES} from '@src/ROUTES';
4142
import type {Policy, Report} from '@src/types/onyx';
4243
import {getButtonRole} from './Button/utils';
4344
import DisplayNames from './DisplayNames';
@@ -232,7 +233,11 @@ function AvatarWithDisplayName({
232233

233234
const navigateToEditReportTitle = (event?: GestureResponderEvent | KeyboardEvent) => {
234235
event?.stopPropagation?.();
235-
Navigation.navigate(ROUTES.EDIT_REPORT_FIELD_REQUEST.getRoute(report?.reportID, report?.policyID, CONST.REPORT_FIELD_TITLE_FIELD_ID, Navigation.getReportRHPActiveRoute()));
236+
if (!report?.policyID) {
237+
return;
238+
}
239+
240+
Navigation.navigate(createDynamicRoute(DYNAMIC_ROUTES.EDIT_REPORT_FIELD.getRoute(report.policyID, CONST.REPORT_FIELD_TITLE_FIELD_ID)));
236241
};
237242

238243
const showActorDetails = () => {
@@ -243,7 +248,7 @@ function AvatarWithDisplayName({
243248
}
244249

245250
if (isExpenseReport(report) && report?.ownerAccountID) {
246-
Navigation.navigate(ROUTES.PROFILE.getRoute(report.ownerAccountID));
251+
Navigation.navigate(createDynamicRoute(DYNAMIC_ROUTES.PROFILE.getRoute(report.ownerAccountID)));
247252
return;
248253
}
249254

@@ -255,7 +260,7 @@ function AvatarWithDisplayName({
255260
if (isChatThread(report)) {
256261
// In an ideal situation account ID won't be 0
257262
if (actorAccountID.current && actorAccountID.current > 0) {
258-
Navigation.navigate(ROUTES.PROFILE.getRoute(actorAccountID.current));
263+
Navigation.navigate(createDynamicRoute(DYNAMIC_ROUTES.PROFILE.getRoute(actorAccountID.current)));
259264
return;
260265
}
261266
}

src/components/FrozenCardHeader.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,13 @@ import useOnyx from '@hooks/useOnyx';
88
import useTheme from '@hooks/useTheme';
99
import useThemeStyles from '@hooks/useThemeStyles';
1010
import DateUtils from '@libs/DateUtils';
11+
import createDynamicRoute from '@libs/Navigation/helpers/dynamicRoutesUtils/createDynamicRoute';
1112
import {getDisplayNameOrDefault} from '@libs/PersonalDetailsUtils';
1213
import Navigation from '@navigation/Navigation';
1314
import variables from '@styles/variables';
1415
import CONST from '@src/CONST';
1516
import ONYXKEYS from '@src/ONYXKEYS';
16-
import ROUTES from '@src/ROUTES';
17+
import {DYNAMIC_ROUTES} from '@src/ROUTES';
1718
import Button from './Button';
1819
import Text from './Text';
1920
import TextLink from './TextLink';
@@ -64,7 +65,7 @@ function FrozenCardHeader({cardPreview, children, style, onUnfreezePress, onAskT
6465
<>
6566
{adminFrozenTextPrefix}
6667
<TextLink
67-
onPress={() => Navigation.navigate(ROUTES.PROFILE.getRoute(Number(frozenByAccountID), Navigation.getActiveRoute()))}
68+
onPress={() => Navigation.navigate(createDynamicRoute(DYNAMIC_ROUTES.PROFILE.getRoute(Number(frozenByAccountID))))}
6869
style={[styles.textLabel, styles.link]}
6970
>
7071
{frozenByName}
@@ -79,7 +80,7 @@ function FrozenCardHeader({cardPreview, children, style, onUnfreezePress, onAskT
7980
<>
8081
{frozenNeedsUnfreezePrefix}
8182
<TextLink
82-
onPress={() => Navigation.navigate(ROUTES.PROFILE.getRoute(Number(frozenByAccountID), Navigation.getActiveRoute()))}
83+
onPress={() => Navigation.navigate(createDynamicRoute(DYNAMIC_ROUTES.PROFILE.getRoute(Number(frozenByAccountID))))}
8384
style={[styles.textLabel, styles.link]}
8485
>
8586
{frozenByName}

src/components/HTMLEngineProvider/HTMLRenderers/MentionUserRenderer.tsx

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,11 @@ import type {WithCurrentUserPersonalDetailsProps} from '@components/withCurrentU
1515
import useLocalize from '@hooks/useLocalize';
1616
import useStyleUtils from '@hooks/useStyleUtils';
1717
import useThemeStyles from '@hooks/useThemeStyles';
18+
import createDynamicRoute from '@libs/Navigation/helpers/dynamicRoutesUtils/createDynamicRoute';
1819
import Navigation from '@libs/Navigation/Navigation';
1920
import {getAccountIDsByLogins, getDisplayNameOrDefault, getShortMentionIfFound} from '@libs/PersonalDetailsUtils';
2021
import CONST from '@src/CONST';
21-
import ROUTES from '@src/ROUTES';
22+
import {DYNAMIC_ROUTES} from '@src/ROUTES';
2223
import type {Route} from '@src/ROUTES';
2324
import asMutable from '@src/types/utils/asMutable';
2425
import {isEmptyObject} from '@src/types/utils/EmptyObject';
@@ -45,7 +46,7 @@ function MentionUserRenderer({style, tnode, TDefaultRenderer, currentUserPersona
4546
accountID = parseInt(htmlAttribAccountID, 10);
4647
mentionDisplayText = formatPhoneNumber(user?.login ?? '') || getDisplayNameOrDefault(user);
4748
mentionDisplayText = getShortMentionIfFound(mentionDisplayText, htmlAttributeAccountID, currentUserPersonalDetails, user?.login ?? '') ?? '';
48-
navigationRoute = ROUTES.PROFILE.getRoute(accountID, Navigation.getReportRHPActiveRoute());
49+
navigationRoute = createDynamicRoute(DYNAMIC_ROUTES.PROFILE.getRoute(accountID), Navigation.getReportRHPActiveRoute());
4950
} else if ('data' in tnode && !isEmptyObject(tnode.data)) {
5051
tnodeClone = cloneDeep(tnode);
5152
// We need to remove the LTR unicode and leading @ from data as it is not part of the login
@@ -57,13 +58,13 @@ function MentionUserRenderer({style, tnode, TDefaultRenderer, currentUserPersona
5758
);
5859

5960
accountID = getAccountIDsByLogins([mentionDisplayText])?.at(0) ?? -1;
60-
navigationRoute = ROUTES.PROFILE.getRoute(accountID, Navigation.getReportRHPActiveRoute(), mentionDisplayText);
61+
navigationRoute = createDynamicRoute(DYNAMIC_ROUTES.PROFILE.getRoute(accountID, mentionDisplayText), Navigation.getReportRHPActiveRoute());
6162
mentionDisplayText = Str.removeSMSDomain(mentionDisplayText);
6263
} else if (!isEmpty(htmlAttribAccountID)) {
6364
// accountID not found in personal details and mention data not provided
6465
accountID = parseInt(htmlAttribAccountID, 10);
6566
mentionDisplayText = getDisplayNameOrDefault();
66-
navigationRoute = ROUTES.PROFILE.getRoute(accountID, Navigation.getReportRHPActiveRoute());
67+
navigationRoute = createDynamicRoute(DYNAMIC_ROUTES.PROFILE.getRoute(accountID), Navigation.getReportRHPActiveRoute());
6768
} else {
6869
// If neither an account ID or email is provided, don't render anything
6970
return null;
@@ -86,10 +87,10 @@ function MentionUserRenderer({style, tnode, TDefaultRenderer, currentUserPersona
8687
onPress={(event) => {
8788
event.preventDefault();
8889
if (!isEmpty(htmlAttribAccountID)) {
89-
Navigation.navigate(ROUTES.PROFILE.getRoute(parseInt(htmlAttribAccountID, 10), Navigation.getReportRHPActiveRoute()));
90+
Navigation.navigate(createDynamicRoute(DYNAMIC_ROUTES.PROFILE.getRoute(parseInt(htmlAttribAccountID, 10)), Navigation.getReportRHPActiveRoute()));
9091
return;
9192
}
92-
Navigation.navigate(ROUTES.PROFILE.getRoute(accountID, Navigation.getReportRHPActiveRoute(), mentionDisplayText));
93+
Navigation.navigate(createDynamicRoute(DYNAMIC_ROUTES.PROFILE.getRoute(accountID, mentionDisplayText), Navigation.getReportRHPActiveRoute()));
9394
}}
9495
role={CONST.ROLE.LINK}
9596
accessibilityLabel={`/${navigationRoute}`}

src/components/HTMLEngineProvider/HTMLRenderers/UserDetailsRenderer.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@ import {TNodeChildrenRenderer} from 'react-native-render-html';
44
import Text from '@components/Text';
55
import UserDetailsTooltip from '@components/UserDetailsTooltip';
66
import useThemeStyles from '@hooks/useThemeStyles';
7+
import createDynamicRoute from '@libs/Navigation/helpers/dynamicRoutesUtils/createDynamicRoute';
78
import Navigation from '@libs/Navigation/Navigation';
89
import {isOptimisticPersonalDetail} from '@libs/ReportUtils';
910
import CONST from '@src/CONST';
10-
import ROUTES from '@src/ROUTES';
11+
import {DYNAMIC_ROUTES} from '@src/ROUTES';
1112

1213
type UserDetailsRendererProps = CustomRendererProps<TText | TPhrasing>;
1314

@@ -35,7 +36,7 @@ function UserDetailsRenderer({tnode, ...defaultRendererProps}: UserDetailsRender
3536
<Text
3637
{...defaultRendererProps}
3738
style={[styles.textStrong]}
38-
onPress={() => Navigation.navigate(ROUTES.PROFILE.getRoute(accountID, Navigation.getActiveRoute()))}
39+
onPress={() => Navigation.navigate(createDynamicRoute(DYNAMIC_ROUTES.PROFILE.getRoute(accountID)))}
3940
suppressHighlighting
4041
role={CONST.ROLE.LINK}
4142
>

src/components/MoneyRequestReportView/MoneyRequestReportActionsList.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -450,7 +450,7 @@ function MoneyRequestReportActionsList({onLayout}: MoneyRequestReportListProps)
450450
hasNewestReportAction,
451451
setIsFloatingMessageCounterVisible,
452452
scrollToEnd: reportScrollManager.scrollToEnd,
453-
resetKey: report.reportID,
453+
resetKey: report?.reportID ?? reportIDFromRoute ?? '',
454454
});
455455

456456
/**

src/components/MoneyRequestReportView/MoneyRequestViewReportFields.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import useCurrentUserPersonalDetails from '@hooks/useCurrentUserPersonalDetails'
88
import useThemeStyles from '@hooks/useThemeStyles';
99
import {clearReportFieldKeyErrors} from '@libs/actions/Report';
1010
import {resolveReportFieldValue} from '@libs/Formula';
11+
import createDynamicRoute from '@libs/Navigation/helpers/dynamicRoutesUtils/createDynamicRoute';
1112
import Navigation from '@libs/Navigation/Navigation';
1213
import {
1314
getFieldViolation,
@@ -23,7 +24,7 @@ import {
2324
} from '@libs/ReportUtils';
2425
import type {ThemeStyles} from '@styles/index';
2526
import CONST from '@src/CONST';
26-
import ROUTES from '@src/ROUTES';
27+
import {DYNAMIC_ROUTES} from '@src/ROUTES';
2728
import type {Policy, PolicyReportField, Report, ReportViolationName} from '@src/types/onyx';
2829
import type {PendingAction} from '@src/types/onyx/OnyxCommon';
2930

@@ -62,7 +63,11 @@ function ReportFieldView(reportField: EnrichedPolicyReportField, report: OnyxEnt
6263
description={Str.UCFirst(reportField.name)}
6364
title={reportField.fieldValue}
6465
onPress={() => {
65-
Navigation.navigate(ROUTES.EDIT_REPORT_FIELD_REQUEST.getRoute(report?.reportID, report?.policyID, reportField.fieldID, Navigation.getActiveRoute()));
66+
if (!report?.policyID) {
67+
return;
68+
}
69+
70+
Navigation.navigate(createDynamicRoute(DYNAMIC_ROUTES.EDIT_REPORT_FIELD.getRoute(report.policyID, reportField.fieldID)));
6671
}}
6772
shouldShowRightIcon={!reportField.isFieldDisabled}
6873
wrapperStyle={[styles.pv2, styles.taskDescriptionMenuItem]}

src/components/ReportActionAvatars/ReportActionAvatar.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,14 @@ import useTheme from '@hooks/useTheme';
1919
import useThemeIllustrations from '@hooks/useThemeIllustrations';
2020
import useThemeStyles from '@hooks/useThemeStyles';
2121
import {getCardFeedIcon} from '@libs/CardUtils';
22+
import createDynamicRoute from '@libs/Navigation/helpers/dynamicRoutesUtils/createDynamicRoute';
2223
import {getUserDetailTooltipText, sortIconsByName} from '@libs/ReportUtils';
2324
import type {AvatarSource} from '@libs/UserAvatarUtils';
2425
import Navigation from '@navigation/Navigation';
2526
import variables from '@styles/variables';
2627
import CONST from '@src/CONST';
2728
import ONYXKEYS from '@src/ONYXKEYS';
28-
import ROUTES from '@src/ROUTES';
29+
import ROUTES, {DYNAMIC_ROUTES} from '@src/ROUTES';
2930
import type {CardFeed} from '@src/types/onyx/CardFeeds';
3031
import type {Icon as IconType} from '@src/types/onyx/OnyxCommon';
3132

@@ -85,7 +86,8 @@ function ProfileAvatar(props: Parameters<typeof Avatar>[0] & {useProfileNavigati
8586
}
8687
return Navigation.navigate(ROUTES.WORKSPACE_AVATAR.getRoute(String(avatarID), firstLetter));
8788
}
88-
return Navigation.navigate(ROUTES.PROFILE_AVATAR.getRoute(Number(avatarID), Navigation.getActiveRoute()));
89+
90+
return Navigation.navigate(createDynamicRoute(DYNAMIC_ROUTES.PROFILE_AVATAR.getRoute(Number(avatarID))));
8991
};
9092

9193
return (

0 commit comments

Comments
 (0)