Skip to content

Commit fb0d47c

Browse files
authored
Merge pull request Expensify#91161 from huult/83836-migrate-expensify-cards-settings-v3
migrate EXPENSIFY_CARD_DETAILS
2 parents b7a3a2f + 9f16ee2 commit fb0d47c

10 files changed

Lines changed: 26 additions & 21 deletions

File tree

src/ROUTES.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -485,17 +485,22 @@ const DYNAMIC_ROUTES = {
485485
SCREENS.WORKSPACE.DYNAMIC_WORKSPACE_EXPENSIFY_CARD_ISSUE_NEW,
486486
],
487487
},
488+
EXPENSIFY_CARD_DETAILS: {
489+
path: 'expensify-card-details/:cardID/:policyID',
490+
entryScreens: [SCREENS.WORKSPACE.EXPENSIFY_CARD, SCREENS.REPORT, SCREENS.RIGHT_MODAL.SEARCH_REPORT, SCREENS.RIGHT_MODAL.SEARCH_MONEY_REQUEST_REPORT, SCREENS.PROFILE_ROOT],
491+
getRoute: (cardID: string, policyID: string) => `expensify-card-details/${cardID}/${policyID}` as const,
492+
},
488493
EXPENSIFY_CARD_LIMIT_TYPE: {
489494
path: 'edit/limit-type',
490-
entryScreens: [SCREENS.WORKSPACE.EXPENSIFY_CARD_DETAILS, SCREENS.EXPENSIFY_CARD.EXPENSIFY_CARD_DETAILS],
495+
entryScreens: [SCREENS.WORKSPACE.EXPENSIFY_CARD_DETAILS, SCREENS.EXPENSIFY_CARD.DYNAMIC_EXPENSIFY_CARD_DETAILS],
491496
},
492497
EXPENSIFY_CARD_LIMIT: {
493498
path: 'edit/limit',
494-
entryScreens: [SCREENS.WORKSPACE.EXPENSIFY_CARD_DETAILS, SCREENS.EXPENSIFY_CARD.EXPENSIFY_CARD_DETAILS],
499+
entryScreens: [SCREENS.WORKSPACE.EXPENSIFY_CARD_DETAILS, SCREENS.EXPENSIFY_CARD.DYNAMIC_EXPENSIFY_CARD_DETAILS],
495500
},
496501
EXPENSIFY_CARD_NAME: {
497502
path: 'edit/name',
498-
entryScreens: [SCREENS.WORKSPACE.EXPENSIFY_CARD_DETAILS, SCREENS.EXPENSIFY_CARD.EXPENSIFY_CARD_DETAILS],
503+
entryScreens: [SCREENS.WORKSPACE.EXPENSIFY_CARD_DETAILS, SCREENS.EXPENSIFY_CARD.DYNAMIC_EXPENSIFY_CARD_DETAILS],
499504
},
500505
WORKSPACE_EXPENSIFY_CARD_SETTINGS_ACCOUNT: {
501506
path: 'account',
@@ -2783,11 +2788,6 @@ const ROUTES = {
27832788

27842789
getRoute: (policyID: string, cardID: string, backTo?: string) => getUrlWithBackToParam(`workspaces/${policyID}/expensify-card/${cardID}`, backTo),
27852790
},
2786-
EXPENSIFY_CARD_DETAILS: {
2787-
route: 'settings/:policyID/expensify-card/:cardID',
2788-
2789-
getRoute: (policyID: string, cardID: string, backTo?: string) => getUrlWithBackToParam(`settings/${policyID}/expensify-card/${cardID}`, backTo),
2790-
},
27912791
EXPENSIFY_CARD_EXPIRY_OPTIONS: {
27922792
route: 'settings/:policyID/expensify-card/:cardID/edit/expiry-options',
27932793

src/SCREENS.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -457,7 +457,7 @@ const SCREENS = {
457457
SETTINGS_CATEGORY_GL_CODE: 'Settings_Category_GL_Code',
458458
},
459459
EXPENSIFY_CARD: {
460-
EXPENSIFY_CARD_DETAILS: 'Expensify_Card_Details',
460+
DYNAMIC_EXPENSIFY_CARD_DETAILS: 'Dynamic_Expensify_Card_Details',
461461
DYNAMIC_EXPENSIFY_CARD_NAME: 'Dynamic_Expensify_Card_Name',
462462
DYNAMIC_EXPENSIFY_CARD_LIMIT: 'Dynamic_Expensify_Card_Limit',
463463
DYNAMIC_EXPENSIFY_CARD_LIMIT_TYPE: 'Dynamic_Expensify_Card_Limit_Type',

src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -349,7 +349,7 @@ const TagsModalStackNavigator = createModalStackNavigator({
349349
});
350350

351351
const ExpensifyCardModalStackNavigator = createModalStackNavigator({
352-
[SCREENS.EXPENSIFY_CARD.EXPENSIFY_CARD_DETAILS]: () => require<ReactComponentModule>('../../../../pages/workspace/expensifyCard/WorkspaceExpensifyCardDetailsPage').default,
352+
[SCREENS.EXPENSIFY_CARD.DYNAMIC_EXPENSIFY_CARD_DETAILS]: () => require<ReactComponentModule>('../../../../pages/workspace/expensifyCard/WorkspaceExpensifyCardDetailsPage').default,
353353
[SCREENS.EXPENSIFY_CARD.DYNAMIC_EXPENSIFY_CARD_NAME]: () => require<ReactComponentModule>('../../../../pages/workspace/expensifyCard/DynamicExpensifyCardNamePage').default,
354354
[SCREENS.EXPENSIFY_CARD.DYNAMIC_EXPENSIFY_CARD_LIMIT]: () => require<ReactComponentModule>('../../../../pages/workspace/expensifyCard/DynamicExpensifyCardLimitPage').default,
355355
[SCREENS.EXPENSIFY_CARD.DYNAMIC_EXPENSIFY_CARD_LIMIT_TYPE]: () => require<ReactComponentModule>('../../../../pages/workspace/expensifyCard/DynamicExpensifyCardLimitTypePage').default,

src/libs/Navigation/linkingConfig/config.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1563,9 +1563,7 @@ const config: LinkingOptions<RootNavigatorParamList>['config'] = {
15631563
},
15641564
[SCREENS.RIGHT_MODAL.EXPENSIFY_CARD]: {
15651565
screens: {
1566-
[SCREENS.EXPENSIFY_CARD.EXPENSIFY_CARD_DETAILS]: {
1567-
path: ROUTES.EXPENSIFY_CARD_DETAILS.route,
1568-
},
1566+
[SCREENS.EXPENSIFY_CARD.DYNAMIC_EXPENSIFY_CARD_DETAILS]: DYNAMIC_ROUTES.EXPENSIFY_CARD_DETAILS.path,
15691567
[SCREENS.EXPENSIFY_CARD.DYNAMIC_EXPENSIFY_CARD_NAME]: DYNAMIC_ROUTES.EXPENSIFY_CARD_NAME.path,
15701568
[SCREENS.EXPENSIFY_CARD.DYNAMIC_EXPENSIFY_CARD_LIMIT]: DYNAMIC_ROUTES.EXPENSIFY_CARD_LIMIT.path,
15711569
[SCREENS.EXPENSIFY_CARD.DYNAMIC_EXPENSIFY_CARD_LIMIT_TYPE]: DYNAMIC_ROUTES.EXPENSIFY_CARD_LIMIT_TYPE.path,

src/libs/Navigation/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1372,7 +1372,7 @@ type SettingsNavigatorParamList = {
13721372
// eslint-disable-next-line no-restricted-syntax -- `backTo` usages in this file are legacy. Do not add new `backTo` params to screens. See contributingGuides/NAVIGATION.md
13731373
backTo?: Routes;
13741374
};
1375-
[SCREENS.EXPENSIFY_CARD.EXPENSIFY_CARD_DETAILS]: {
1375+
[SCREENS.EXPENSIFY_CARD.DYNAMIC_EXPENSIFY_CARD_DETAILS]: {
13761376
policyID: string;
13771377
cardID: string;
13781378
// eslint-disable-next-line no-restricted-syntax -- `backTo` usages in this file are legacy. Do not add new `backTo` params to screens. See contributingGuides/NAVIGATION.md

src/libs/ReportActionsUtils.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import CONST from '@src/CONST';
1414
import IntlStore from '@src/languages/IntlStore';
1515
import type {TranslationPaths} from '@src/languages/types';
1616
import ONYXKEYS from '@src/ONYXKEYS';
17-
import ROUTES from '@src/ROUTES';
17+
import ROUTES, {DYNAMIC_ROUTES} from '@src/ROUTES';
1818
import type {
1919
Card,
2020
CompanyCardFeed,
@@ -56,6 +56,7 @@ import {formatPhoneNumber} from './LocalePhoneNumber';
5656
import {formatMessageElementList} from './Localize';
5757
import Log from './Log';
5858
import type {MessageElementBase, MessageTextElement} from './MessageElement';
59+
import createDynamicRoute from './Navigation/helpers/dynamicRoutesUtils/createDynamicRoute';
5960
import getReportURLForCurrentContext from './Navigation/helpers/getReportURLForCurrentContext';
6061
import {getIsOffline, subscribe as subscribeNetworkState} from './NetworkState';
6162
import Parser from './Parser';
@@ -4380,7 +4381,10 @@ function getCardIssuedMessage({
43804381
const assigneeAccountID = cardIssuedActionOriginalMessage?.assigneeAccountID ?? CONST.DEFAULT_NUMBER_ID;
43814382
const cardID = cardIssuedActionOriginalMessage?.cardID ?? CONST.DEFAULT_NUMBER_ID;
43824383
const assignee = shouldRenderHTML ? `<mention-user accountID="${assigneeAccountID}"/>` : Parser.htmlToText(`<mention-user accountID="${assigneeAccountID}"/>`);
4383-
const navigateRoute = shouldNavigateToCardDetails ? ROUTES.EXPENSIFY_CARD_DETAILS.getRoute(policyID, String(cardID)) : ROUTES.SETTINGS_DOMAIN_CARD_DETAIL.getRoute(String(cardID));
4384+
4385+
const navigateRoute = shouldNavigateToCardDetails
4386+
? createDynamicRoute(DYNAMIC_ROUTES.EXPENSIFY_CARD_DETAILS.getRoute(String(cardID), policyID))
4387+
: ROUTES.SETTINGS_DOMAIN_CARD_DETAIL.getRoute(String(cardID));
43844388
const isExpensifyCardActive = isCardActive(expensifyCard);
43854389
const expensifyCardLink = (expensifyCardLinkText: string) =>
43864390
shouldRenderHTML && isExpensifyCardActive ? `<a href='${environmentURL}/${navigateRoute}'>${expensifyCardLinkText}</a>` : expensifyCardLinkText;

src/pages/workspace/expensifyCard/DynamicExpensifyCardLimitPage.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ function DynamicExpensifyCardLimitPage({route}: DynamicExpensifyCardLimitPagePro
6868
};
6969

7070
const goBack = useCallback(() => {
71-
Navigation.goBack(backPath);
71+
Navigation.goBack(backPath, {compareParams: false});
7272
}, [backPath]);
7373

7474
const updateCardLimit = (newLimit: number) => {

src/pages/workspace/expensifyCard/DynamicExpensifyCardLimitTypePage.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ function DynamicExpensifyCardLimitTypePage({route}: WorkspaceEditCardLimitTypePa
7575
const backPath = useDynamicBackPath(DYNAMIC_ROUTES.EXPENSIFY_CARD_LIMIT_TYPE.path);
7676

7777
const goBack = () => {
78-
Navigation.goBack(backPath);
78+
Navigation.goBack(backPath, {compareParams: false});
7979
};
8080

8181
const fetchCardLimitTypeData = () => {

src/pages/workspace/expensifyCard/DynamicExpensifyCardNamePage.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ function DynamicExpensifyCardNamePage({route}: DynamicExpensifyCardNamePageProps
4040
const card = cardsList?.[cardID];
4141

4242
const goBack = useCallback(() => {
43-
Navigation.goBack(backPath);
43+
Navigation.goBack(backPath, {compareParams: false});
4444
}, [backPath]);
4545

4646
const submit = (values: FormOnyxValues<typeof ONYXKEYS.FORMS.EDIT_EXPENSIFY_CARD_NAME_FORM>) => {

src/pages/workspace/expensifyCard/WorkspaceExpensifyCardDetailsPage.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import useConfirmModal from '@hooks/useConfirmModal';
2222
import useCurrencyForExpensifyCard from '@hooks/useCurrencyForExpensifyCard';
2323
import {useCurrencyListActions} from '@hooks/useCurrencyList';
2424
import useDefaultFundID from '@hooks/useDefaultFundID';
25+
import useDynamicBackPath from '@hooks/useDynamicBackPath';
2526
import useEnvironment from '@hooks/useEnvironment';
2627
import useExpensifyCardFeeds from '@hooks/useExpensifyCardFeeds';
2728
import {useMemoizedLazyExpensifyIcons, useMemoizedLazyIllustrations} from '@hooks/useLazyAsset';
@@ -55,7 +56,7 @@ import isLoadingOnyxValue from '@src/types/utils/isLoadingOnyxValue';
5556

5657
type WorkspaceExpensifyCardDetailsPageProps = PlatformStackScreenProps<
5758
SettingsNavigatorParamList,
58-
typeof SCREENS.WORKSPACE.EXPENSIFY_CARD_DETAILS | typeof SCREENS.EXPENSIFY_CARD.EXPENSIFY_CARD_DETAILS
59+
typeof SCREENS.WORKSPACE.EXPENSIFY_CARD_DETAILS | typeof SCREENS.EXPENSIFY_CARD.DYNAMIC_EXPENSIFY_CARD_DETAILS
5960
>;
6061

6162
type LimitHintTranslationKey = 'cardPage.smartLimit.title' | 'cardPage.monthlyLimit.title' | 'cardPage.fixedLimit.title';
@@ -77,6 +78,8 @@ function WorkspaceExpensifyCardDetailsPage({route}: WorkspaceExpensifyCardDetail
7778
const {isProduction} = useEnvironment();
7879
const navigation = useNavigation<NavigationProp<SettingsNavigatorParamList>>();
7980
const {policyID, cardID, backTo} = route.params;
81+
const backPath = useDynamicBackPath(DYNAMIC_ROUTES.EXPENSIFY_CARD_DETAILS.path);
82+
const isQuickSettingsFlow = route.name === SCREENS.EXPENSIFY_CARD.DYNAMIC_EXPENSIFY_CARD_DETAILS;
8083
const {convertToDisplayString} = useCurrencyListActions();
8184
const defaultFundID = useDefaultFundID(policyID);
8285

@@ -262,7 +265,7 @@ function WorkspaceExpensifyCardDetailsPage({route}: WorkspaceExpensifyCardDetail
262265
>
263266
<HeaderWithBackButton
264267
title={translate('cardPage.expensifyCard')}
265-
onBackButtonPress={() => Navigation.goBack(backTo)}
268+
onBackButtonPress={() => Navigation.goBack(isQuickSettingsFlow ? backPath : backTo)}
266269
/>
267270
<ScrollView addBottomSafeAreaPadding>
268271
{canManageCardFreeze && isCardFrozen(card) ? (

0 commit comments

Comments
 (0)