Skip to content
Open
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
4 changes: 2 additions & 2 deletions config/eslint/eslint.seatbelt.tsv
Original file line number Diff line number Diff line change
Expand Up @@ -502,7 +502,7 @@
"../../src/pages/iou/SplitExpensePage.tsx" "react-hooks/set-state-in-effect" 3
"../../src/pages/iou/request/step/IOURequestEditReportCommon.tsx" "@typescript-eslint/no-deprecated/ConfirmModal" 1
"../../src/pages/iou/request/step/IOURequestStepAmount.tsx" "react-hooks/set-state-in-effect" 1
"../../src/pages/iou/request/step/IOURequestStepCategory.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
"../../src/pages/iou/request/step/DynamicIOURequestStepCategoryPage.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
"../../src/pages/iou/request/step/IOURequestStepConfirmation.tsx" "react-hooks/preserve-manual-memoization" 1
"../../src/pages/iou/request/step/IOURequestStepDestination.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
"../../src/pages/iou/request/step/IOURequestStepDistance.tsx" "react-hooks/set-state-in-effect" 1
Expand All @@ -518,7 +518,7 @@
"../../src/pages/iou/request/step/IOURequestStepScan/hooks/useMobileReceiptScan.ts" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
"../../src/pages/iou/request/step/IOURequestStepSubrate.tsx" "@typescript-eslint/no-deprecated/InteractionManager.runAfterInteractions" 1
"../../src/pages/iou/request/step/IOURequestStepSubrate.tsx" "react-hooks/set-state-in-effect" 1
"../../src/pages/iou/request/step/IOURequestStepUpgrade.tsx" "@typescript-eslint/no-deprecated/ConfirmModal" 1
"../../src/pages/iou/request/step/DynamicIOURequestStepUpgradePage.tsx" "@typescript-eslint/no-deprecated/ConfirmModal" 1
"../../src/pages/iou/request/step/confirmation/submitDismissStrategies.ts" "no-restricted-imports" 1
"../../src/pages/media/AttachmentModalScreen/AttachmentModalBaseContent/index.tsx" "react-hooks/set-state-in-effect" 3
"../../src/pages/media/AttachmentModalScreen/routes/TransactionReceiptModalContent.tsx" "@typescript-eslint/no-deprecated/ConfirmModal" 1
Expand Down
184 changes: 120 additions & 64 deletions src/ROUTES.ts
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,126 @@ const DYNAMIC_ROUTES = {
entryScreens: ['*'],
getRoute: (accountID: number) => `avatar/${accountID}` as const,
},
MONEY_REQUEST_STEP_TAX_RATE: {
path: 'money-request/tax-rate/:action/:iouType/:transactionID/:reportID?',
entryScreens: [
SCREENS.MONEY_REQUEST.STEP_CONFIRMATION,
SCREENS.REPORT,
SCREENS.RIGHT_MODAL.EXPENSE_REPORT,
SCREENS.RIGHT_MODAL.SEARCH_REPORT,
SCREENS.RIGHT_MODAL.SEARCH_REPORT_ACTIONS,
SCREENS.RIGHT_MODAL.SEARCH_MONEY_REQUEST_REPORT,
],
getRoute: (action: IOUAction, iouType: IOUType, transactionID: string | undefined, reportID?: string) => {
if (!transactionID || !reportID) {
Log.warn('Invalid transactionID or reportID is used to build the MONEY_REQUEST_STEP_TAX_RATE dynamic route');
}

return `money-request/tax-rate/${action as string}/${iouType as string}/${transactionID}${reportID ? `/${reportID}` : ''}` as const;
},
},
MONEY_REQUEST_STEP_TAX_AMOUNT: {
path: 'money-request/tax-amount/:action/:iouType/:transactionID/:reportID?',
entryScreens: [
SCREENS.MONEY_REQUEST.STEP_CONFIRMATION,
SCREENS.REPORT,
SCREENS.RIGHT_MODAL.EXPENSE_REPORT,
SCREENS.RIGHT_MODAL.SEARCH_REPORT,
SCREENS.RIGHT_MODAL.SEARCH_REPORT_ACTIONS,
SCREENS.RIGHT_MODAL.SEARCH_MONEY_REQUEST_REPORT,
],
getRoute: (action: IOUAction, iouType: IOUType, transactionID: string | undefined, reportID?: string) => {
if (!transactionID || !reportID) {
Log.warn('Invalid transactionID or reportID is used to build the MONEY_REQUEST_STEP_TAX_AMOUNT dynamic route');
}

return `money-request/tax-amount/${action as string}/${iouType as string}/${transactionID}${reportID ? `/${reportID}` : ''}` as const;
},
},
MONEY_REQUEST_STEP_CATEGORY: {
path: 'money-request/category/:action/:iouType/:transactionID/:reportID/:reportActionID?',
entryScreens: [
SCREENS.MONEY_REQUEST.STEP_CONFIRMATION,
SCREENS.MONEY_REQUEST.SPLIT_EXPENSE_EDIT,
SCREENS.REPORT,
SCREENS.RIGHT_MODAL.EXPENSE_REPORT,
SCREENS.RIGHT_MODAL.SEARCH_REPORT,
SCREENS.RIGHT_MODAL.SEARCH_REPORT_ACTIONS,
SCREENS.RIGHT_MODAL.SEARCH_MONEY_REQUEST_REPORT,
],
getRoute: (action: IOUAction, iouType: IOUType, transactionID: string | undefined, reportID: string | undefined, reportActionID?: string) => {
if (!transactionID || !reportID) {
Log.warn('Invalid transactionID or reportID is used to build the MONEY_REQUEST_STEP_CATEGORY dynamic route');
}

return `money-request/category/${action as string}/${iouType as string}/${transactionID}/${reportID}${reportActionID ? `/${reportActionID}` : ''}` as const;
},
},
MONEY_REQUEST_ATTENDEE: {
path: 'money-request/attendees/:action/:iouType/:transactionID/:reportID',
entryScreens: [
SCREENS.MONEY_REQUEST.STEP_CONFIRMATION,
SCREENS.REPORT,
SCREENS.RIGHT_MODAL.EXPENSE_REPORT,
SCREENS.RIGHT_MODAL.SEARCH_REPORT,
SCREENS.RIGHT_MODAL.SEARCH_REPORT_ACTIONS,
SCREENS.RIGHT_MODAL.SEARCH_MONEY_REQUEST_REPORT,
],
getRoute: (action: IOUAction, iouType: IOUType, transactionID: string | undefined, reportID: string | undefined) => {
if (!transactionID || !reportID) {
Log.warn('Invalid transactionID or reportID is used to build the MONEY_REQUEST_ATTENDEE dynamic route');
}

return `money-request/attendees/${action as string}/${iouType as string}/${transactionID}/${reportID}` as const;
},
},
MONEY_REQUEST_ACCOUNTANT: {
path: 'money-request/accountant/:action/:iouType/:transactionID/:reportID',
entryScreens: [
SCREENS.MONEY_REQUEST.STEP_CONFIRMATION,
SCREENS.REPORT,
SCREENS.REPORT_DETAILS.DYNAMIC_ROOT,
SCREENS.RIGHT_MODAL.EXPENSE_REPORT,
SCREENS.RIGHT_MODAL.SEARCH_REPORT,
SCREENS.RIGHT_MODAL.SEARCH_REPORT_ACTIONS,
SCREENS.RIGHT_MODAL.SEARCH_MONEY_REQUEST_REPORT,
],
getRoute: (action: IOUAction, iouType: IOUType, transactionID: string | undefined, reportID: string | undefined) => {
if (!transactionID || !reportID) {
Log.warn('Invalid transactionID or reportID is used to build the MONEY_REQUEST_ACCOUNTANT dynamic route');
}

return `money-request/accountant/${action as string}/${iouType as string}/${transactionID}/${reportID}` as const;
},
},
MONEY_REQUEST_UPGRADE: {
path: 'money-request/upgrade/:action/:iouType/:transactionID/:reportID/:upgradePath?',
entryScreens: [
SCREENS.MONEY_REQUEST.STEP_CONFIRMATION,
SCREENS.MONEY_REQUEST.SPLIT_EXPENSE_EDIT,
SCREENS.HOME,
SCREENS.INBOX,
SCREENS.REPORT,
SCREENS.RIGHT_MODAL.EXPENSE_REPORT,
SCREENS.RIGHT_MODAL.SEARCH_REPORT,
SCREENS.RIGHT_MODAL.SEARCH_REPORT_ACTIONS,
SCREENS.RIGHT_MODAL.SEARCH_MONEY_REQUEST_REPORT,
SCREENS.SEARCH.ROOT,
SCREENS.SEARCH.TRANSACTIONS_CHANGE_REPORT_SEARCH_RHP,
],
getRoute: (params: {action: IOUAction; iouType: IOUType; transactionID: string; reportID: string; upgradePath?: string; shouldSubmitExpense?: boolean}) => {
const {action, iouType, transactionID, reportID, upgradePath, shouldSubmitExpense} = params;
const upgradePathParam = upgradePath ? `/${upgradePath}` : '';
const basePath = `money-request/upgrade/${action as string}/${iouType as string}/${transactionID}/${reportID}${upgradePathParam}` as const;

if (shouldSubmitExpense) {
return `${basePath}?shouldSubmitExpense=true` as const;
}

return basePath;
},
queryParams: ['shouldSubmitExpense'],
},
NEW_REPORT_WORKSPACE_SELECTION: {
path: 'new-report-workspace-selection',
entryScreens: ['*'],
Expand Down Expand Up @@ -1659,26 +1779,6 @@ const ROUTES = {
return getUrlWithBackToParam(`${action as string}/${iouType as string}/amount/${transactionID}/${reportID}/${reportActionID ? `${reportActionID}/` : ''}${pageIndex}`, backTo);
},
},
MONEY_REQUEST_STEP_TAX_RATE: {
route: ':action/:iouType/taxRate/:transactionID/:reportID?',
getRoute: (action: IOUAction, iouType: IOUType, transactionID: string | undefined, reportID: string | undefined, backTo = '') => {
if (!transactionID || !reportID) {
Log.warn('Invalid transactionID or reportID is used to build the MONEY_REQUEST_STEP_TAX_RATE route');
}

return getUrlWithBackToParam(`${action as string}/${iouType as string}/taxRate/${transactionID}/${reportID}`, backTo);
},
},
MONEY_REQUEST_STEP_TAX_AMOUNT: {
route: ':action/:iouType/taxAmount/:transactionID/:reportID?',
getRoute: (action: IOUAction, iouType: IOUType, transactionID: string | undefined, reportID: string | undefined, backTo = '') => {
if (!transactionID || !reportID) {
Log.warn('Invalid transactionID or reportID is used to build the MONEY_REQUEST_STEP_TAX_AMOUNT route');
}

return getUrlWithBackToParam(`${action as string}/${iouType as string}/taxAmount/${transactionID}/${reportID}`, backTo);
},
},
MONEY_REQUEST_STEP_CATEGORY_CREATE: {
route: ':action/:iouType/category/new/:transactionID/:reportID/:reportActionID?',
getRoute: (action: IOUAction, iouType: IOUType, transactionID: string | undefined, reportID: string | undefined, reportActionID?: string, backTo = '') => {
Expand All @@ -1689,50 +1789,6 @@ const ROUTES = {
return getUrlWithBackToParam(`${action as string}/${iouType as string}/category/new/${transactionID}/${reportID}${reportActionID ? `/${reportActionID}` : ''}`, backTo);
},
},
MONEY_REQUEST_STEP_CATEGORY: {
route: ':action/:iouType/category/:transactionID/:reportID/:reportActionID?',
getRoute: (action: IOUAction, iouType: IOUType, transactionID: string | undefined, reportID: string | undefined, backTo = '', reportActionID?: string) => {
if (!transactionID || !reportID) {
Log.warn('Invalid transactionID or reportID is used to build the MONEY_REQUEST_STEP_CATEGORY route');
}

return getUrlWithBackToParam(`${action as string}/${iouType as string}/category/${transactionID}/${reportID}${reportActionID ? `/${reportActionID}` : ''}`, backTo);
},
},
MONEY_REQUEST_ATTENDEE: {
route: ':action/:iouType/attendees/:transactionID/:reportID',
getRoute: (action: IOUAction, iouType: IOUType, transactionID: string | undefined, reportID: string | undefined, backTo = '') => {
if (!transactionID || !reportID) {
Log.warn('Invalid transactionID or reportID is used to build the MONEY_REQUEST_ATTENDEE route');
}

return getUrlWithBackToParam(`${action as string}/${iouType as string}/attendees/${transactionID}/${reportID}`, backTo);
},
},
MONEY_REQUEST_ACCOUNTANT: {
route: ':action/:iouType/accountant/:transactionID/:reportID',
getRoute: (action: IOUAction, iouType: IOUType, transactionID: string | undefined, reportID: string | undefined, backTo = '') => {
if (!transactionID || !reportID) {
Log.warn('Invalid transactionID or reportID is used to build the MONEY_REQUEST_ACCOUNTANT route');
}

return getUrlWithBackToParam(`${action as string}/${iouType as string}/accountant/${transactionID}/${reportID}`, backTo);
},
},
MONEY_REQUEST_UPGRADE: {
route: ':action/:iouType/upgrade/:transactionID/:reportID/:upgradePath?',
getRoute: (params: {action: IOUAction; iouType: IOUType; transactionID: string; reportID: string; backTo?: string; shouldSubmitExpense?: boolean; upgradePath?: string}) => {
const {action, iouType, transactionID, reportID, backTo = '', shouldSubmitExpense = false, upgradePath} = params;
const upgradePathParam = upgradePath ? `/${upgradePath}` : '';
const baseURL = `${action as string}/${iouType as string}/upgrade/${transactionID}/${reportID}${upgradePathParam}` as const;

if (shouldSubmitExpense) {
return getUrlWithBackToParam(`${baseURL}?shouldSubmitExpense=${shouldSubmitExpense}` as const, backTo);
}

return getUrlWithBackToParam(baseURL, backTo);
},
},
MONEY_REQUEST_STEP_DESTINATION: {
route: ':action/:iouType/destination/:transactionID/:reportID',
getRoute: (action: IOUAction, iouType: IOUType, transactionID: string, reportID: string, backTo = '') =>
Expand Down
12 changes: 6 additions & 6 deletions src/SCREENS.ts
Original file line number Diff line number Diff line change
Expand Up @@ -372,9 +372,9 @@ const SCREENS = {
STEP_CONFIRMATION: 'Money_Request_Step_Confirmation',
STEP_CONFIRMATION_VERIFY_ACCOUNT: 'Money_Request_Step_Confirmation_Verify_Account',
START: 'Money_Request_Start',
STEP_UPGRADE: 'Money_Request_Step_Upgrade',
DYNAMIC_STEP_UPGRADE: 'Dynamic_Money_Request_Step_Upgrade',
STEP_AMOUNT: 'Money_Request_Step_Amount',
STEP_CATEGORY: 'Money_Request_Step_Category',
DYNAMIC_STEP_CATEGORY: 'Dynamic_Money_Request_Step_Category',
STEP_CATEGORY_CREATE: 'Money_Request_Step_Category_Create',
STEP_DATE: 'Money_Request_Step_Date',
STEP_DESCRIPTION: 'Money_Request_Step_Description',
Expand All @@ -385,8 +385,8 @@ const SCREENS = {
STEP_SCAN: 'Money_Request_Step_Scan',
STEP_TAG: 'Money_Request_Step_Tag',
STEP_WAYPOINT: 'Money_Request_Step_Waypoint',
STEP_TAX_AMOUNT: 'Money_Request_Step_Tax_Amount',
STEP_TAX_RATE: 'Money_Request_Step_Tax_Rate',
DYNAMIC_STEP_TAX_AMOUNT: 'Dynamic_Money_Request_Step_Tax_Amount',
DYNAMIC_STEP_TAX_RATE: 'Dynamic_Money_Request_Step_Tax_Rate',
RECEIPT_VIEW: 'Money_Request_Receipt_View',
STEP_SEND_FROM: 'Money_Request_Step_Send_From',
STEP_COMPANY_INFO: 'Money_Request_Step_Company_Info',
Expand All @@ -395,8 +395,8 @@ const SCREENS = {
EDIT_WAYPOINT: 'Money_Request_Edit_Waypoint',
RECEIPT: 'Money_Request_Receipt',
STATE_SELECTOR: 'Money_Request_State_Selector',
STEP_ATTENDEES: 'Money_Request_Attendee',
STEP_ACCOUNTANT: 'Money_Request_Accountant',
DYNAMIC_STEP_ATTENDEES: 'Dynamic_Money_Request_Attendee',
DYNAMIC_STEP_ACCOUNTANT: 'Dynamic_Money_Request_Step_Accountant',
STEP_DESTINATION: 'Money_Request_Destination',
STEP_TIME: 'Money_Request_Time',
STEP_SUBRATE: 'Money_Request_SubRate',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,13 @@ import useAttendees from '@hooks/useAttendees';
import useLocalize from '@hooks/useLocalize';
import useThemeStyles from '@hooks/useThemeStyles';
import {enrichAndSortAttendees} from '@libs/AttendeeUtils';
import createDynamicRoute from '@libs/Navigation/helpers/dynamicRoutesUtils/createDynamicRoute';
import Navigation from '@libs/Navigation/Navigation';
import {getAttendeesListDisplayString} from '@libs/TransactionUtils';
import CONST from '@src/CONST';
import type {IOUAction, IOUType} from '@src/CONST';
import type {TranslationPaths} from '@src/languages/types';
import ROUTES from '@src/ROUTES';
import {DYNAMIC_ROUTES} from '@src/ROUTES';
import type * as OnyxTypes from '@src/types/onyx';
import {attendeeSliceSelector} from './selectors';
import useTransactionSelector from './useTransactionSelector';
Expand Down Expand Up @@ -67,7 +68,7 @@ function AttendeeField({formattedAmountPerAttendee, isReadOnly, transactionID, a
return;
}

Navigation.navigate(ROUTES.MONEY_REQUEST_ATTENDEE.getRoute(action, iouType, transactionID, reportID, Navigation.getActiveRoute()));
Navigation.navigate(createDynamicRoute(DYNAMIC_ROUTES.MONEY_REQUEST_ATTENDEE.getRoute(action, iouType, transactionID, reportID)));
}}
interactive={!isReadOnly}
brickRoadIndicator={shouldDisplayAttendeesError ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : undefined}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,12 @@ import {useMemoizedLazyExpensifyIcons} from '@hooks/useLazyAsset';
import useLocalize from '@hooks/useLocalize';
import useThemeStyles from '@hooks/useThemeStyles';
import {getDecodedLeafCategoryName} from '@libs/CategoryUtils';
import createDynamicRoute from '@libs/Navigation/helpers/dynamicRoutesUtils/createDynamicRoute';
import Navigation from '@libs/Navigation/Navigation';
import CONST from '@src/CONST';
import type {IOUAction, IOUType} from '@src/CONST';
import type {TranslationPaths} from '@src/languages/types';
import ROUTES from '@src/ROUTES';
import ROUTES, {DYNAMIC_ROUTES} from '@src/ROUTES';
import type * as OnyxTypes from '@src/types/onyx';
import {categoryStateSelector} from './selectors';
import useTransactionSelector from './useTransactionSelector';
Expand Down Expand Up @@ -78,23 +79,24 @@ function CategoryField({

if (shouldNavigateToUpgradePath) {
Navigation.navigate(
ROUTES.MONEY_REQUEST_UPGRADE.getRoute({
action,
iouType,
transactionID,
reportID,
backTo: ROUTES.MONEY_REQUEST_STEP_CATEGORY.getRoute(action, iouType, transactionID, reportID, Navigation.getActiveRoute(), reportActionID),
upgradePath: CONST.UPGRADE_PATHS.CATEGORIES,
}),
createDynamicRoute(
DYNAMIC_ROUTES.MONEY_REQUEST_UPGRADE.getRoute({
action,
iouType,
transactionID,
reportID,
upgradePath: CONST.UPGRADE_PATHS.CATEGORIES,
}),
),
);
} else if (!policy && shouldSelectPolicy) {
Navigation.navigate(
ROUTES.SET_DEFAULT_WORKSPACE.getRoute(
ROUTES.MONEY_REQUEST_STEP_CATEGORY.getRoute(action, iouType, transactionID, reportID, Navigation.getActiveRoute(), reportActionID),
createDynamicRoute(DYNAMIC_ROUTES.MONEY_REQUEST_STEP_CATEGORY.getRoute(action, iouType, transactionID, reportID, reportActionID)),
),
);
} else {
Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_CATEGORY.getRoute(action, iouType, transactionID, reportID, Navigation.getActiveRoute(), reportActionID));
Navigation.navigate(createDynamicRoute(DYNAMIC_ROUTES.MONEY_REQUEST_STEP_CATEGORY.getRoute(action, iouType, transactionID, reportID, reportActionID)));
}
}}
style={[styles.moneyRequestMenuItem]}
Expand Down
Loading
Loading