diff --git a/.well-known/apple-app-site-association b/.well-known/apple-app-site-association
index a2c7365f7de8..394e45f8d9ae 100644
--- a/.well-known/apple-app-site-association
+++ b/.well-known/apple-app-site-association
@@ -52,6 +52,10 @@
"/": "/split/*",
"comment": "Split Expense"
},
+ {
+ "/": "/submit/*",
+ "comment": "Submit Expense"
+ },
{
"/": "/request/*",
"comment": "Submit Expense"
@@ -76,6 +80,10 @@
"/": "/search/*",
"comment": "Search"
},
+ {
+ "/": "/pay/*",
+ "comment": "Pay someone"
+ },
{
"/": "/send/*",
"comment": "Pay someone"
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 84364f2ef7ff..520602a28a02 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -62,6 +62,7 @@
+
@@ -70,6 +71,7 @@
+
@@ -81,6 +83,7 @@
+
@@ -89,6 +92,7 @@
+
diff --git a/src/CONST.ts b/src/CONST.ts
index ab5a67274955..8d523dd71a3d 100755
--- a/src/CONST.ts
+++ b/src/CONST.ts
@@ -1414,16 +1414,18 @@ const CONST = {
ACTION: {
EDIT: 'edit',
CREATE: 'create',
- REQUEST: 'request',
+ SUBMIT: 'submit',
CATEGORIZE: 'categorize',
SHARE: 'share',
},
DEFAULT_AMOUNT: 0,
TYPE: {
SEND: 'send',
+ PAY: 'pay',
SPLIT: 'split',
REQUEST: 'request',
- TRACK_EXPENSE: 'track-expense',
+ SUBMIT: 'submit',
+ TRACK: 'track',
},
REQUEST_TYPE: {
DISTANCE: 'distance',
@@ -3380,9 +3382,9 @@ const CONST = {
REFERRAL_PROGRAM: {
CONTENT_TYPES: {
- MONEY_REQUEST: 'request',
+ SUBMIT_EXPENSE: 'submitExpense',
START_CHAT: 'startChat',
- SEND_MONEY: 'sendMoney',
+ PAY_SOMEONE: 'paySomeone',
REFER_FRIEND: 'referralFriend',
SHARE_CODE: 'shareCode',
},
diff --git a/src/ROUTES.ts b/src/ROUTES.ts
index ac12fc5de521..d372b30d2393 100644
--- a/src/ROUTES.ts
+++ b/src/ROUTES.ts
@@ -423,20 +423,20 @@ const ROUTES = {
},
MONEY_REQUEST_STATE_SELECTOR: {
- route: 'request/state',
+ route: 'submit/state',
getRoute: (state?: string, backTo?: string, label?: string) =>
- `${getUrlWithBackToParam(`request/state${state ? `?state=${encodeURIComponent(state)}` : ''}`, backTo)}${
+ `${getUrlWithBackToParam(`submit/state${state ? `?state=${encodeURIComponent(state)}` : ''}`, backTo)}${
// the label param can be an empty string so we cannot use a nullish ?? operator
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
label ? `${backTo || state ? '&' : '?'}label=${encodeURIComponent(label)}` : ''
}` as const,
},
- IOU_REQUEST: 'request/new',
- IOU_SEND: 'send/new',
- IOU_SEND_ADD_BANK_ACCOUNT: 'send/new/add-bank-account',
- IOU_SEND_ADD_DEBIT_CARD: 'send/new/add-debit-card',
- IOU_SEND_ENABLE_PAYMENTS: 'send/new/enable-payments',
+ IOU_REQUEST: 'submit/new',
+ IOU_SEND: 'pay/new',
+ IOU_SEND_ADD_BANK_ACCOUNT: 'pay/new/add-bank-account',
+ IOU_SEND_ADD_DEBIT_CARD: 'pay/new/add-debit-card',
+ IOU_SEND_ENABLE_PAYMENTS: 'pay/new/enable-payments',
NEW_TASK: 'new/task',
NEW_TASK_ASSIGNEE: 'new/task/assignee',
@@ -695,7 +695,7 @@ const ROUTES = {
route: 'referral/:contentType',
getRoute: (contentType: string, backTo?: string) => getUrlWithBackToParam(`referral/${contentType}`, backTo),
},
- PROCESS_MONEY_REQUEST_HOLD: 'hold-request-educational',
+ PROCESS_MONEY_REQUEST_HOLD: 'hold-expense-educational',
ONBOARDING_ROOT: 'onboarding',
ONBOARDING_PERSONAL_DETAILS: 'onboarding/personal-details',
ONBOARDING_WORK: 'onboarding/work',
@@ -739,6 +739,7 @@ const ROUTES = {
*/
const HYBRID_APP_ROUTES = {
MONEY_REQUEST_CREATE: '/request/new/scan',
+ MONEY_REQUEST_SUBMIT_CREATE: '/submit/new/scan',
} as const;
export {HYBRID_APP_ROUTES, getUrlWithBackToParam};
diff --git a/src/components/AttachmentModal.tsx b/src/components/AttachmentModal.tsx
index 7d13524b78df..1612e97c4903 100644
--- a/src/components/AttachmentModal.tsx
+++ b/src/components/AttachmentModal.tsx
@@ -422,7 +422,7 @@ function AttachmentModal({
Navigation.navigate(
ROUTES.MONEY_REQUEST_STEP_SCAN.getRoute(
CONST.IOU.ACTION.EDIT,
- CONST.IOU.TYPE.REQUEST,
+ CONST.IOU.TYPE.SUBMIT,
transaction?.transactionID ?? '',
report?.reportID ?? '',
Navigation.getActiveRouteWithoutParams(),
diff --git a/src/components/MoneyRequestConfirmationList.tsx b/src/components/MoneyRequestConfirmationList.tsx
index e309df1ab654..fc790e082ad7 100755
--- a/src/components/MoneyRequestConfirmationList.tsx
+++ b/src/components/MoneyRequestConfirmationList.tsx
@@ -98,7 +98,7 @@ type MoneyRequestConfirmationListProps = MoneyRequestConfirmationListOnyxProps &
iouCurrencyCode?: string;
/** IOU type */
- iouType?: IOUType;
+ iouType?: Exclude;
/** IOU date */
iouCreated?: string;
@@ -183,7 +183,7 @@ function MoneyRequestConfirmationList({
onSendMoney,
onConfirm,
onSelectParticipant,
- iouType = CONST.IOU.TYPE.REQUEST,
+ iouType = CONST.IOU.TYPE.SUBMIT,
isScanRequest = false,
iouAmount,
policyCategories,
@@ -226,10 +226,10 @@ function MoneyRequestConfirmationList({
const {canUseP2PDistanceRequests, canUseViolations} = usePermissions(iouType);
const {isOffline} = useNetwork();
- const isTypeRequest = iouType === CONST.IOU.TYPE.REQUEST;
+ const isTypeRequest = iouType === CONST.IOU.TYPE.SUBMIT;
const isTypeSplit = iouType === CONST.IOU.TYPE.SPLIT;
- const isTypeSend = iouType === CONST.IOU.TYPE.SEND;
- const isTypeTrackExpense = iouType === CONST.IOU.TYPE.TRACK_EXPENSE;
+ const isTypeSend = iouType === CONST.IOU.TYPE.PAY;
+ const isTypeTrackExpense = iouType === CONST.IOU.TYPE.TRACK;
const transactionID = transaction?.transactionID ?? '';
const customUnitRateID = TransactionUtils.getRateID(transaction) ?? '';
@@ -586,7 +586,7 @@ function MoneyRequestConfirmationList({
return;
}
- if (iouType === CONST.IOU.TYPE.SEND) {
+ if (iouType === CONST.IOU.TYPE.PAY) {
if (!paymentMethod) {
return;
}
@@ -637,7 +637,7 @@ function MoneyRequestConfirmationList({
return;
}
- const shouldShowSettlementButton = iouType === CONST.IOU.TYPE.SEND;
+ const shouldShowSettlementButton = iouType === CONST.IOU.TYPE.PAY;
const shouldDisableButton = selectedParticipants.length === 0;
const button = shouldShowSettlementButton ? (
@@ -1010,7 +1010,7 @@ function MoneyRequestConfirmationList({
: // The empty receipt component should only show for IOU Requests of a paid policy ("Team" or "Corporate")
PolicyUtils.isPaidGroupPolicy(policy) &&
!isDistanceRequest &&
- iouType === CONST.IOU.TYPE.REQUEST && (
+ iouType === CONST.IOU.TYPE.SUBMIT && (
Navigation.navigate(
diff --git a/src/components/ReferralProgramCTA.tsx b/src/components/ReferralProgramCTA.tsx
index 0588f31a0a8c..237fc8f955a3 100644
--- a/src/components/ReferralProgramCTA.tsx
+++ b/src/components/ReferralProgramCTA.tsx
@@ -15,9 +15,9 @@ import Tooltip from './Tooltip';
type ReferralProgramCTAProps = {
referralContentType:
- | typeof CONST.REFERRAL_PROGRAM.CONTENT_TYPES.MONEY_REQUEST
+ | typeof CONST.REFERRAL_PROGRAM.CONTENT_TYPES.SUBMIT_EXPENSE
| typeof CONST.REFERRAL_PROGRAM.CONTENT_TYPES.START_CHAT
- | typeof CONST.REFERRAL_PROGRAM.CONTENT_TYPES.SEND_MONEY
+ | typeof CONST.REFERRAL_PROGRAM.CONTENT_TYPES.PAY_SOMEONE
| typeof CONST.REFERRAL_PROGRAM.CONTENT_TYPES.REFER_FRIEND;
style?: ViewStyle;
onDismiss?: () => void;
diff --git a/src/components/ReportActionItem/MoneyRequestView.tsx b/src/components/ReportActionItem/MoneyRequestView.tsx
index 10d7b85afc64..f337f2f40c71 100644
--- a/src/components/ReportActionItem/MoneyRequestView.tsx
+++ b/src/components/ReportActionItem/MoneyRequestView.tsx
@@ -285,7 +285,7 @@ function MoneyRequestView({
shouldShowRightIcon={canEditDistance}
titleStyle={styles.flex1}
onPress={() =>
- Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_DISTANCE.getRoute(CONST.IOU.ACTION.EDIT, CONST.IOU.TYPE.REQUEST, transaction?.transactionID ?? '', report.reportID))
+ Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_DISTANCE.getRoute(CONST.IOU.ACTION.EDIT, CONST.IOU.TYPE.SUBMIT, transaction?.transactionID ?? '', report.reportID))
}
/>
@@ -311,7 +311,7 @@ function MoneyRequestView({
shouldShowRightIcon={canEditDistance}
titleStyle={styles.flex1}
onPress={() =>
- Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_DISTANCE.getRoute(CONST.IOU.ACTION.EDIT, CONST.IOU.TYPE.REQUEST, transaction?.transactionID ?? '', report.reportID))
+ Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_DISTANCE.getRoute(CONST.IOU.ACTION.EDIT, CONST.IOU.TYPE.SUBMIT, transaction?.transactionID ?? '', report.reportID))
}
/>
@@ -359,7 +359,7 @@ function MoneyRequestView({
Navigation.navigate(
ROUTES.MONEY_REQUEST_STEP_SCAN.getRoute(
CONST.IOU.ACTION.EDIT,
- CONST.IOU.TYPE.REQUEST,
+ CONST.IOU.TYPE.SUBMIT,
transaction?.transactionID ?? '',
report.reportID,
Navigation.getActiveRouteWithoutParams(),
@@ -379,7 +379,7 @@ function MoneyRequestView({
interactive={canEditAmount}
shouldShowRightIcon={canEditAmount}
onPress={() =>
- Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_AMOUNT.getRoute(CONST.IOU.ACTION.EDIT, CONST.IOU.TYPE.REQUEST, transaction?.transactionID ?? '', report.reportID))
+ Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_AMOUNT.getRoute(CONST.IOU.ACTION.EDIT, CONST.IOU.TYPE.SUBMIT, transaction?.transactionID ?? '', report.reportID))
}
brickRoadIndicator={getErrorForField('amount') ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : undefined}
error={getErrorForField('amount')}
@@ -395,7 +395,7 @@ function MoneyRequestView({
titleStyle={styles.flex1}
onPress={() =>
Navigation.navigate(
- ROUTES.MONEY_REQUEST_STEP_DESCRIPTION.getRoute(CONST.IOU.ACTION.EDIT, CONST.IOU.TYPE.REQUEST, transaction?.transactionID ?? '', report.reportID),
+ ROUTES.MONEY_REQUEST_STEP_DESCRIPTION.getRoute(CONST.IOU.ACTION.EDIT, CONST.IOU.TYPE.SUBMIT, transaction?.transactionID ?? '', report.reportID),
)
}
wrapperStyle={[styles.pv2, styles.taskDescriptionMenuItem]}
@@ -416,7 +416,7 @@ function MoneyRequestView({
titleStyle={styles.flex1}
onPress={() =>
Navigation.navigate(
- ROUTES.MONEY_REQUEST_STEP_MERCHANT.getRoute(CONST.IOU.ACTION.EDIT, CONST.IOU.TYPE.REQUEST, transaction?.transactionID ?? '', report.reportID),
+ ROUTES.MONEY_REQUEST_STEP_MERCHANT.getRoute(CONST.IOU.ACTION.EDIT, CONST.IOU.TYPE.SUBMIT, transaction?.transactionID ?? '', report.reportID),
)
}
brickRoadIndicator={getErrorForField('merchant') ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : undefined}
@@ -432,7 +432,7 @@ function MoneyRequestView({
shouldShowRightIcon={canEditDate}
titleStyle={styles.flex1}
onPress={() =>
- Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_DATE.getRoute(CONST.IOU.ACTION.EDIT, CONST.IOU.TYPE.REQUEST, transaction?.transactionID ?? '', report.reportID))
+ Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_DATE.getRoute(CONST.IOU.ACTION.EDIT, CONST.IOU.TYPE.SUBMIT, transaction?.transactionID ?? '', report.reportID))
}
brickRoadIndicator={getErrorForField('date') ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : undefined}
error={getErrorForField('date')}
@@ -448,7 +448,7 @@ function MoneyRequestView({
titleStyle={styles.flex1}
onPress={() =>
Navigation.navigate(
- ROUTES.MONEY_REQUEST_STEP_CATEGORY.getRoute(CONST.IOU.ACTION.EDIT, CONST.IOU.TYPE.REQUEST, transaction?.transactionID ?? '', report.reportID),
+ ROUTES.MONEY_REQUEST_STEP_CATEGORY.getRoute(CONST.IOU.ACTION.EDIT, CONST.IOU.TYPE.SUBMIT, transaction?.transactionID ?? '', report.reportID),
)
}
brickRoadIndicator={getErrorForField('category') ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : undefined}
@@ -470,7 +470,7 @@ function MoneyRequestView({
titleStyle={styles.flex1}
onPress={() =>
Navigation.navigate(
- ROUTES.MONEY_REQUEST_STEP_TAG.getRoute(CONST.IOU.ACTION.EDIT, CONST.IOU.TYPE.REQUEST, orderWeight, transaction?.transactionID ?? '', report.reportID),
+ ROUTES.MONEY_REQUEST_STEP_TAG.getRoute(CONST.IOU.ACTION.EDIT, CONST.IOU.TYPE.SUBMIT, orderWeight, transaction?.transactionID ?? '', report.reportID),
)
}
brickRoadIndicator={
@@ -504,7 +504,7 @@ function MoneyRequestView({
titleStyle={styles.flex1}
onPress={() =>
Navigation.navigate(
- ROUTES.MONEY_REQUEST_STEP_TAX_RATE.getRoute(CONST.IOU.ACTION.EDIT, CONST.IOU.TYPE.REQUEST, transaction?.transactionID ?? '', report.reportID),
+ ROUTES.MONEY_REQUEST_STEP_TAX_RATE.getRoute(CONST.IOU.ACTION.EDIT, CONST.IOU.TYPE.SUBMIT, transaction?.transactionID ?? '', report.reportID),
)
}
brickRoadIndicator={getErrorForField('tax') ? CONST.BRICK_ROAD_INDICATOR_STATUS.ERROR : undefined}
@@ -523,7 +523,7 @@ function MoneyRequestView({
titleStyle={styles.flex1}
onPress={() =>
Navigation.navigate(
- ROUTES.MONEY_REQUEST_STEP_TAX_AMOUNT.getRoute(CONST.IOU.ACTION.EDIT, CONST.IOU.TYPE.REQUEST, transaction?.transactionID ?? '', report.reportID),
+ ROUTES.MONEY_REQUEST_STEP_TAX_AMOUNT.getRoute(CONST.IOU.ACTION.EDIT, CONST.IOU.TYPE.SUBMIT, transaction?.transactionID ?? '', report.reportID),
)
}
/>
diff --git a/src/components/ReportWelcomeText.tsx b/src/components/ReportWelcomeText.tsx
index 219199c25bc3..d61bd5186ecc 100644
--- a/src/components/ReportWelcomeText.tsx
+++ b/src/components/ReportWelcomeText.tsx
@@ -44,7 +44,7 @@ function ReportWelcomeText({report, policy, personalDetails}: ReportWelcomeTextP
const displayNamesWithTooltips = ReportUtils.getDisplayNamesWithTooltips(OptionsListUtils.getPersonalDetailsForAccountIDs(participantAccountIDs, personalDetails), isMultipleParticipant);
const isUserPolicyAdmin = PolicyUtils.isPolicyAdmin(policy);
const roomWelcomeMessage = ReportUtils.getRoomWelcomeMessage(report, isUserPolicyAdmin);
- const moneyRequestOptions = ReportUtils.getMoneyRequestOptions(report, policy, participantAccountIDs, canUseTrackExpense);
+ const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, policy, participantAccountIDs, canUseTrackExpense);
const additionalText = moneyRequestOptions.map((item) => translate(`reportActionsView.iouTypes.${item}`)).join(', ');
const canEditPolicyDescription = ReportUtils.canEditPolicyDescription(policy);
const reportName = ReportUtils.getReportName(report);
@@ -160,9 +160,9 @@ function ReportWelcomeText({report, policy, personalDetails}: ReportWelcomeTextP
))}
)}
- {(moneyRequestOptions.includes(CONST.IOU.TYPE.SEND) ||
- moneyRequestOptions.includes(CONST.IOU.TYPE.REQUEST) ||
- moneyRequestOptions.includes(CONST.IOU.TYPE.TRACK_EXPENSE)) && {translate('reportActionsView.usePlusButton', {additionalText})}}
+ {(moneyRequestOptions.includes(CONST.IOU.TYPE.PAY) || moneyRequestOptions.includes(CONST.IOU.TYPE.SUBMIT) || moneyRequestOptions.includes(CONST.IOU.TYPE.TRACK)) && (
+ {translate('reportActionsView.usePlusButton', {additionalText})}
+ )}
>
);
diff --git a/src/hooks/useDismissedReferralBanners.ts b/src/hooks/useDismissedReferralBanners.ts
index 94ccd0a0b567..23a3ecefbbc9 100644
--- a/src/hooks/useDismissedReferralBanners.ts
+++ b/src/hooks/useDismissedReferralBanners.ts
@@ -5,9 +5,9 @@ import ONYXKEYS from '@src/ONYXKEYS';
type UseDismissedReferralBannersProps = {
referralContentType:
- | typeof CONST.REFERRAL_PROGRAM.CONTENT_TYPES.MONEY_REQUEST
+ | typeof CONST.REFERRAL_PROGRAM.CONTENT_TYPES.SUBMIT_EXPENSE
| typeof CONST.REFERRAL_PROGRAM.CONTENT_TYPES.START_CHAT
- | typeof CONST.REFERRAL_PROGRAM.CONTENT_TYPES.SEND_MONEY
+ | typeof CONST.REFERRAL_PROGRAM.CONTENT_TYPES.PAY_SOMEONE
| typeof CONST.REFERRAL_PROGRAM.CONTENT_TYPES.REFER_FRIEND;
};
diff --git a/src/languages/en.ts b/src/languages/en.ts
index 1ca1feaba048..eec4d660e44a 100755
--- a/src/languages/en.ts
+++ b/src/languages/en.ts
@@ -512,11 +512,10 @@ export default {
welcomeToRoom: ({roomName}: WelcomeToRoomParams) => `Welcome to ${roomName}!`,
usePlusButton: ({additionalText}: UsePlusButtonParams) => `\nYou can also use the + button to ${additionalText}, or assign a task!`,
iouTypes: {
- send: 'pay expenses',
+ pay: 'pay expenses',
split: 'split an expense',
- request: 'submit an expense',
- // eslint-disable-next-line @typescript-eslint/naming-convention
- 'track-expense': 'track an expense',
+ submit: 'submit an expense',
+ track: 'track an expense',
},
},
reportAction: {
@@ -2651,13 +2650,13 @@ export default {
header: `Start a chat, get $${CONST.REFERRAL_PROGRAM.REVENUE}`,
body: `Get paid to talk to your friends! Start a chat with a new Expensify account and get $${CONST.REFERRAL_PROGRAM.REVENUE} when they become a customer.`,
},
- [CONST.REFERRAL_PROGRAM.CONTENT_TYPES.MONEY_REQUEST]: {
+ [CONST.REFERRAL_PROGRAM.CONTENT_TYPES.SUBMIT_EXPENSE]: {
buttonText1: 'Submit expense, ',
buttonText2: `get $${CONST.REFERRAL_PROGRAM.REVENUE}.`,
header: `Submit an expense, get $${CONST.REFERRAL_PROGRAM.REVENUE}`,
body: `It pays to get paid! Submit an expense to a new Expensify account and get $${CONST.REFERRAL_PROGRAM.REVENUE} when they become a customer.`,
},
- [CONST.REFERRAL_PROGRAM.CONTENT_TYPES.SEND_MONEY]: {
+ [CONST.REFERRAL_PROGRAM.CONTENT_TYPES.PAY_SOMEONE]: {
buttonText1: 'Pay someone, ',
buttonText2: `get $${CONST.REFERRAL_PROGRAM.REVENUE}.`,
header: `Pay someone, get $${CONST.REFERRAL_PROGRAM.REVENUE}`,
diff --git a/src/languages/es.ts b/src/languages/es.ts
index 112993f848f6..57b5dde8297c 100644
--- a/src/languages/es.ts
+++ b/src/languages/es.ts
@@ -505,11 +505,10 @@ export default {
welcomeToRoom: ({roomName}: WelcomeToRoomParams) => `¡Bienvenido a ${roomName}!`,
usePlusButton: ({additionalText}: UsePlusButtonParams) => `\n¡También puedes usar el botón + de abajo para ${additionalText}, o asignar una tarea!`,
iouTypes: {
- send: 'pagar gastos',
+ pay: 'pagar gastos',
split: 'dividir un gasto',
- request: 'presentar un gasto',
- // eslint-disable-next-line @typescript-eslint/naming-convention
- 'track-expense': 'rastrear un gasto',
+ submit: 'presentar un gasto',
+ track: 'rastrear un gasto',
},
},
reportAction: {
@@ -3141,13 +3140,13 @@ export default {
header: `Inicia un chat y recibe $${CONST.REFERRAL_PROGRAM.REVENUE}`,
body: `¡Gana dinero por hablar con tus amigos! Inicia un chat con una cuenta nueva de Expensify y recibe $${CONST.REFERRAL_PROGRAM.REVENUE} cuando se conviertan en clientes.`,
},
- [CONST.REFERRAL_PROGRAM.CONTENT_TYPES.MONEY_REQUEST]: {
+ [CONST.REFERRAL_PROGRAM.CONTENT_TYPES.SUBMIT_EXPENSE]: {
buttonText1: 'Presentar gasto, ',
buttonText2: `recibe $${CONST.REFERRAL_PROGRAM.REVENUE}`,
header: `Presenta un gasto y consigue $${CONST.REFERRAL_PROGRAM.REVENUE}`,
body: `¡Vale la pena cobrar! Envia un gasto a una cuenta nueva de Expensify y recibe $${CONST.REFERRAL_PROGRAM.REVENUE} cuando se conviertan en clientes.`,
},
- [CONST.REFERRAL_PROGRAM.CONTENT_TYPES.SEND_MONEY]: {
+ [CONST.REFERRAL_PROGRAM.CONTENT_TYPES.PAY_SOMEONE]: {
buttonText1: 'Pagar a alguien, ',
buttonText2: `recibe $${CONST.REFERRAL_PROGRAM.REVENUE}`,
header: `Paga a alguien y recibe $${CONST.REFERRAL_PROGRAM.REVENUE}`,
diff --git a/src/libs/IOUUtils.ts b/src/libs/IOUUtils.ts
index 63930ffd7131..4a4ce6407fa2 100644
--- a/src/libs/IOUUtils.ts
+++ b/src/libs/IOUUtils.ts
@@ -9,7 +9,7 @@ import Navigation from './Navigation/Navigation';
import * as TransactionUtils from './TransactionUtils';
function navigateToStartMoneyRequestStep(requestType: IOURequestType, iouType: IOUType, transactionID: string, reportID: string, iouAction?: IOUAction): void {
- if (iouAction === CONST.IOU.ACTION.CATEGORIZE || iouAction === CONST.IOU.ACTION.REQUEST) {
+ if (iouAction === CONST.IOU.ACTION.CATEGORIZE || iouAction === CONST.IOU.ACTION.SUBMIT) {
Navigation.goBack();
return;
}
@@ -109,7 +109,16 @@ function isIOUReportPendingCurrencyConversion(iouReport: Report): boolean {
* Checks if the iou type is one of request, send, or split.
*/
function isValidMoneyRequestType(iouType: string): boolean {
- const moneyRequestType: string[] = [CONST.IOU.TYPE.REQUEST, CONST.IOU.TYPE.SPLIT, CONST.IOU.TYPE.SEND, CONST.IOU.TYPE.TRACK_EXPENSE];
+ const moneyRequestType: string[] = [CONST.IOU.TYPE.REQUEST, CONST.IOU.TYPE.SUBMIT, CONST.IOU.TYPE.SPLIT, CONST.IOU.TYPE.SEND, CONST.IOU.TYPE.PAY, CONST.IOU.TYPE.TRACK];
+ return moneyRequestType.includes(iouType);
+}
+
+/**
+ * Checks if the iou type is one of submit, pay, track, or split.
+ */
+// eslint-disable-next-line @typescript-eslint/naming-convention
+function temporary_isValidMoneyRequestType(iouType: string): boolean {
+ const moneyRequestType: string[] = [CONST.IOU.TYPE.SUBMIT, CONST.IOU.TYPE.SPLIT, CONST.IOU.TYPE.PAY, CONST.IOU.TYPE.TRACK];
return moneyRequestType.includes(iouType);
}
@@ -129,7 +138,7 @@ function insertTagIntoTransactionTagsString(transactionTags: string, tag: string
}
function isMovingTransactionFromTrackExpense(action?: IOUAction) {
- if (action === CONST.IOU.ACTION.REQUEST || action === CONST.IOU.ACTION.SHARE || action === CONST.IOU.ACTION.CATEGORIZE) {
+ if (action === CONST.IOU.ACTION.SUBMIT || action === CONST.IOU.ACTION.SHARE || action === CONST.IOU.ACTION.CATEGORIZE) {
return true;
}
@@ -144,4 +153,5 @@ export {
isValidMoneyRequestType,
navigateToStartMoneyRequestStep,
updateIOUOwnerAndTotal,
+ temporary_isValidMoneyRequestType,
};
diff --git a/src/libs/MoneyRequestUtils.ts b/src/libs/MoneyRequestUtils.ts
index 4e681e016b6b..2da048ffab4f 100644
--- a/src/libs/MoneyRequestUtils.ts
+++ b/src/libs/MoneyRequestUtils.ts
@@ -81,7 +81,7 @@ function replaceAllDigits(text: string, convertFn: (char: string) => string): st
* Check if distance expense or not
*/
function isDistanceRequest(iouType: IOUType, selectedTab: OnyxEntry): boolean {
- return iouType === CONST.IOU.TYPE.REQUEST && selectedTab === CONST.TAB_REQUEST.DISTANCE;
+ return (iouType === CONST.IOU.TYPE.REQUEST || iouType === CONST.IOU.TYPE.SUBMIT) && selectedTab === CONST.TAB_REQUEST.DISTANCE;
}
/**
diff --git a/src/libs/Navigation/Navigation.ts b/src/libs/Navigation/Navigation.ts
index b94c2c5fad4a..5209d8a594c1 100644
--- a/src/libs/Navigation/Navigation.ts
+++ b/src/libs/Navigation/Navigation.ts
@@ -94,7 +94,8 @@ function getActiveRouteIndex(stateOrRoute: StateOrRoute, index?: number): number
function parseHybridAppUrl(url: HybridAppRoute | Route): Route {
switch (url) {
case HYBRID_APP_ROUTES.MONEY_REQUEST_CREATE:
- return ROUTES.MONEY_REQUEST_CREATE.getRoute(CONST.IOU.ACTION.CREATE, CONST.IOU.TYPE.REQUEST, CONST.IOU.OPTIMISTIC_TRANSACTION_ID, ReportUtils.generateReportID());
+ case HYBRID_APP_ROUTES.MONEY_REQUEST_SUBMIT_CREATE:
+ return ROUTES.MONEY_REQUEST_CREATE.getRoute(CONST.IOU.ACTION.CREATE, CONST.IOU.TYPE.SUBMIT, CONST.IOU.OPTIMISTIC_TRANSACTION_ID, ReportUtils.generateReportID());
default:
return url;
}
diff --git a/src/libs/Navigation/types.ts b/src/libs/Navigation/types.ts
index f564ee01cbf7..60c3aedbc906 100644
--- a/src/libs/Navigation/types.ts
+++ b/src/libs/Navigation/types.ts
@@ -371,21 +371,21 @@ type RoomInviteNavigatorParamList = {
type MoneyRequestNavigatorParamList = {
[SCREENS.MONEY_REQUEST.STEP_PARTICIPANTS]: {
action: IOUAction;
- iouType: ValueOf;
+ iouType: Exclude;
transactionID: string;
reportID: string;
backTo: string;
};
[SCREENS.MONEY_REQUEST.STEP_DATE]: {
action: IOUAction;
- iouType: IOUType;
+ iouType: Exclude;
transactionID: string;
reportID: string;
backTo: Routes;
};
[SCREENS.MONEY_REQUEST.STEP_DESCRIPTION]: {
action: IOUAction;
- iouType: IOUType;
+ iouType: Exclude;
transactionID: string;
reportID: string;
backTo: Routes;
@@ -393,7 +393,7 @@ type MoneyRequestNavigatorParamList = {
};
[SCREENS.MONEY_REQUEST.STEP_CATEGORY]: {
action: IOUAction;
- iouType: IOUType;
+ iouType: Exclude;
transactionID: string;
reportActionID: string;
reportID: string;
@@ -401,7 +401,7 @@ type MoneyRequestNavigatorParamList = {
};
[SCREENS.MONEY_REQUEST.STEP_TAX_AMOUNT]: {
action: IOUAction;
- iouType: IOUType;
+ iouType: Exclude;
transactionID: string;
reportID: string;
backTo: Routes;
@@ -409,7 +409,7 @@ type MoneyRequestNavigatorParamList = {
};
[SCREENS.MONEY_REQUEST.STEP_TAG]: {
action: IOUAction;
- iouType: IOUType;
+ iouType: Exclude;
transactionID: string;
reportID: string;
backTo: Routes;
@@ -418,7 +418,7 @@ type MoneyRequestNavigatorParamList = {
};
[SCREENS.MONEY_REQUEST.STEP_TAX_RATE]: {
action: IOUAction;
- iouType: IOUType;
+ iouType: Exclude;
transactionID: string;
reportID: string;
backTo: Routes;
@@ -433,7 +433,7 @@ type MoneyRequestNavigatorParamList = {
};
[SCREENS.MONEY_REQUEST.STEP_MERCHANT]: {
action: IOUAction;
- iouType: IOUType;
+ iouType: Exclude;
transactionID: string;
reportID: string;
backTo: Routes;
@@ -491,7 +491,7 @@ type MoneyRequestNavigatorParamList = {
};
[SCREENS.MONEY_REQUEST.STEP_CONFIRMATION]: {
action: IOUAction;
- iouType: IOUType;
+ iouType: Exclude;
transactionID: string;
reportID: string;
pageIndex?: string;
diff --git a/src/libs/Permissions.ts b/src/libs/Permissions.ts
index 105736faeba0..c79e9011386f 100644
--- a/src/libs/Permissions.ts
+++ b/src/libs/Permissions.ts
@@ -29,7 +29,7 @@ function canUseTrackExpense(betas: OnyxEntry): boolean {
function canUseP2PDistanceRequests(betas: OnyxEntry, iouType: IOUType | undefined): boolean {
// Allow using P2P distance request for TrackExpense outside of the beta, because that project doesn't want to be limited by the more cautious P2P distance beta
- return !!betas?.includes(CONST.BETAS.P2P_DISTANCE_REQUESTS) || canUseAllBetas(betas) || iouType === CONST.IOU.TYPE.TRACK_EXPENSE;
+ return !!betas?.includes(CONST.BETAS.P2P_DISTANCE_REQUESTS) || canUseAllBetas(betas) || iouType === CONST.IOU.TYPE.TRACK;
}
function canUseWorkflowsDelayedSubmission(betas: OnyxEntry): boolean {
diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts
index fc677dedc96e..2f561918172c 100644
--- a/src/libs/ReportUtils.ts
+++ b/src/libs/ReportUtils.ts
@@ -5085,7 +5085,7 @@ function isGroupChatAdmin(report: OnyxEntry, accountID: number) {
* None of the options should show in chat threads or if there is some special Expensify account
* as a participant of the report.
*/
-function getMoneyRequestOptions(report: OnyxEntry, policy: OnyxEntry, reportParticipants: number[], canUseTrackExpense = true): IOUType[] {
+function getMoneyRequestOptions(report: OnyxEntry, policy: OnyxEntry, reportParticipants: number[], canUseTrackExpense = true, filterDeprecatedTypes = false): IOUType[] {
// In any thread or task report, we do not allow any new expenses yet
if (isChatThread(report) || isTaskReport(report) || (!canUseTrackExpense && isSelfDM(report))) {
return [];
@@ -5103,7 +5103,7 @@ function getMoneyRequestOptions(report: OnyxEntry, policy: OnyxEntry, policy: OnyxEntry,
+ policy: OnyxEntry,
+ reportParticipants: number[],
+ canUseTrackExpense = true,
+): Array> {
+ return getMoneyRequestOptions(report, policy, reportParticipants, canUseTrackExpense, true) as Array>;
+}
+
/**
* Allows a user to leave a policy room according to the following conditions of the visibility or chatType rNVP:
* `public` - Anyone can leave (because anybody can join)
@@ -6002,7 +6022,7 @@ function createDraftTransactionAndNavigateToParticipantSelector(transactionID: s
created: transactionCreated,
} as Transaction);
- Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_PARTICIPANTS.getRoute(CONST.IOU.TYPE.REQUEST, transactionID, reportID, undefined, actionName));
+ Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_PARTICIPANTS.getRoute(CONST.IOU.TYPE.SUBMIT, transactionID, reportID, undefined, actionName));
}
/**
@@ -6280,6 +6300,7 @@ export {
sortReportsByLastRead,
updateOptimisticParentReportAction,
updateReportPreview,
+ temporary_getMoneyRequestOptions,
};
export type {
diff --git a/src/libs/TransactionUtils.ts b/src/libs/TransactionUtils.ts
index e555c49e1007..eb794d2199f0 100644
--- a/src/libs/TransactionUtils.ts
+++ b/src/libs/TransactionUtils.ts
@@ -3,7 +3,6 @@ import type {OnyxCollection, OnyxEntry} from 'react-native-onyx';
import Onyx from 'react-native-onyx';
import type {ValueOf} from 'type-fest';
import CONST from '@src/CONST';
-import type {TranslationPaths} from '@src/languages/types';
import ONYXKEYS from '@src/ONYXKEYS';
import type {RecentWaypoint, Report, TaxRate, TaxRates, TaxRatesWithDefault, Transaction, TransactionViolation} from '@src/types/onyx';
import type {Comment, Receipt, TransactionChanges, TransactionPendingFieldsKey, Waypoint, WaypointCollection} from '@src/types/onyx/Transaction';
@@ -450,19 +449,6 @@ function getCreated(transaction: OnyxEntry, dateFormat: string = CO
return DateUtils.formatWithUTCTimeZone(created, dateFormat);
}
-/**
- * Returns the translation key to use for the header title
- */
-function getHeaderTitleTranslationKey(transaction: OnyxEntry): TranslationPaths {
- const headerTitles: Record = {
- [CONST.IOU.REQUEST_TYPE.DISTANCE]: 'tabSelector.distance',
- [CONST.IOU.REQUEST_TYPE.MANUAL]: 'tabSelector.manual',
- [CONST.IOU.REQUEST_TYPE.SCAN]: 'tabSelector.scan',
- };
-
- return headerTitles[getRequestType(transaction)];
-}
-
/**
* Determine whether a transaction is made with an Expensify card.
*/
@@ -669,7 +655,6 @@ export {
getEnabledTaxRateCount,
getUpdatedTransaction,
getDescription,
- getHeaderTitleTranslationKey,
getRequestType,
isManualRequest,
isScanRequest,
diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts
index ddcd47b52e2c..3d4e6c088609 100644
--- a/src/libs/actions/IOU.ts
+++ b/src/libs/actions/IOU.ts
@@ -2569,7 +2569,7 @@ function convertTrackedExpenseToRequest(
linkedTrackedExpenseReportAction,
linkedTrackedExpenseReportID,
transactionThreadReportID,
- CONST.IOU.ACTION.REQUEST,
+ CONST.IOU.ACTION.SUBMIT,
);
optimisticData?.push(...moveTransactionOptimisticData);
@@ -2810,7 +2810,7 @@ function requestMoney(
const activeReportID = isMoneyRequestReport ? report?.reportID : chatReport.reportID;
switch (action) {
- case CONST.IOU.ACTION.REQUEST: {
+ case CONST.IOU.ACTION.SUBMIT: {
if (!linkedTrackedExpenseReportAction || !actionableWhisperReportActionID || !linkedTrackedExpenseReportID) {
return;
}
diff --git a/src/pages/home/report/ReportActionCompose/AttachmentPickerWithMenuItems.tsx b/src/pages/home/report/ReportActionCompose/AttachmentPickerWithMenuItems.tsx
index 1294d2ca8aea..09f6e8598e6c 100644
--- a/src/pages/home/report/ReportActionCompose/AttachmentPickerWithMenuItems.tsx
+++ b/src/pages/home/report/ReportActionCompose/AttachmentPickerWithMenuItems.tsx
@@ -27,7 +27,7 @@ import CONST from '@src/CONST';
import ONYXKEYS from '@src/ONYXKEYS';
import type * as OnyxTypes from '@src/types/onyx';
-type MoneyRequestOptions = Record;
+type MoneyRequestOptions = Record, PopoverMenuItem>;
type AttachmentPickerWithMenuItemsOnyxProps = {
/** The policy tied to the report */
@@ -128,24 +128,24 @@ function AttachmentPickerWithMenuItems({
text: translate('iou.splitExpense'),
onSelected: () => IOU.startMoneyRequest(CONST.IOU.TYPE.SPLIT, report?.reportID ?? ''),
},
- [CONST.IOU.TYPE.REQUEST]: {
+ [CONST.IOU.TYPE.SUBMIT]: {
icon: Expensicons.MoneyCircle,
text: translate('iou.submitExpense'),
- onSelected: () => IOU.startMoneyRequest(CONST.IOU.TYPE.REQUEST, report?.reportID ?? ''),
+ onSelected: () => IOU.startMoneyRequest(CONST.IOU.TYPE.SUBMIT, report?.reportID ?? ''),
},
- [CONST.IOU.TYPE.SEND]: {
+ [CONST.IOU.TYPE.PAY]: {
icon: Expensicons.Send,
text: translate('iou.paySomeone', {name: ReportUtils.getPayeeName(report)}),
- onSelected: () => IOU.startMoneyRequest(CONST.IOU.TYPE.SEND, report?.reportID ?? ''),
+ onSelected: () => IOU.startMoneyRequest(CONST.IOU.TYPE.PAY, report?.reportID ?? ''),
},
- [CONST.IOU.TYPE.TRACK_EXPENSE]: {
+ [CONST.IOU.TYPE.TRACK]: {
icon: Expensicons.DocumentPlus,
text: translate('iou.trackExpense'),
- onSelected: () => IOU.startMoneyRequest(CONST.IOU.TYPE.TRACK_EXPENSE, report?.reportID ?? ''),
+ onSelected: () => IOU.startMoneyRequest(CONST.IOU.TYPE.TRACK, report?.reportID ?? ''),
},
};
- return ReportUtils.getMoneyRequestOptions(report, policy, reportParticipantIDs ?? [], canUseTrackExpense).map((option) => ({
+ return ReportUtils.temporary_getMoneyRequestOptions(report, policy, reportParticipantIDs ?? [], canUseTrackExpense).map((option) => ({
...options[option],
}));
}, [translate, report, policy, reportParticipantIDs, canUseTrackExpense]);
diff --git a/src/pages/home/report/ReportActionItem.tsx b/src/pages/home/report/ReportActionItem.tsx
index 8d11744740bd..7926647551d9 100644
--- a/src/pages/home/report/ReportActionItem.tsx
+++ b/src/pages/home/report/ReportActionItem.tsx
@@ -393,7 +393,7 @@ function ReportActionItem({
text: 'actionableMentionTrackExpense.submit',
key: `${action.reportActionID}-actionableMentionTrackExpense-submit`,
onPress: () => {
- ReportUtils.createDraftTransactionAndNavigateToParticipantSelector(transactionID, report.reportID, CONST.IOU.ACTION.REQUEST, action.reportActionID);
+ ReportUtils.createDraftTransactionAndNavigateToParticipantSelector(transactionID, report.reportID, CONST.IOU.ACTION.SUBMIT, action.reportActionID);
},
isMediumSized: true,
},
diff --git a/src/pages/home/sidebar/SidebarScreen/FloatingActionButtonAndPopover.tsx b/src/pages/home/sidebar/SidebarScreen/FloatingActionButtonAndPopover.tsx
index 9881b207592b..70c1f28fae22 100644
--- a/src/pages/home/sidebar/SidebarScreen/FloatingActionButtonAndPopover.tsx
+++ b/src/pages/home/sidebar/SidebarScreen/FloatingActionButtonAndPopover.tsx
@@ -169,13 +169,13 @@ function FloatingActionButtonAndPopover(
const navigateToQuickAction = () => {
switch (quickAction?.action) {
case CONST.QUICK_ACTIONS.REQUEST_MANUAL:
- IOU.startMoneyRequest(CONST.IOU.TYPE.REQUEST, quickAction?.chatReportID ?? '', CONST.IOU.REQUEST_TYPE.MANUAL, true);
+ IOU.startMoneyRequest(CONST.IOU.TYPE.SUBMIT, quickAction?.chatReportID ?? '', CONST.IOU.REQUEST_TYPE.MANUAL, true);
return;
case CONST.QUICK_ACTIONS.REQUEST_SCAN:
- IOU.startMoneyRequest(CONST.IOU.TYPE.REQUEST, quickAction?.chatReportID ?? '', CONST.IOU.REQUEST_TYPE.SCAN, true);
+ IOU.startMoneyRequest(CONST.IOU.TYPE.SUBMIT, quickAction?.chatReportID ?? '', CONST.IOU.REQUEST_TYPE.SCAN, true);
return;
case CONST.QUICK_ACTIONS.REQUEST_DISTANCE:
- IOU.startMoneyRequest(CONST.IOU.TYPE.REQUEST, quickAction?.chatReportID ?? '', CONST.IOU.REQUEST_TYPE.DISTANCE, true);
+ IOU.startMoneyRequest(CONST.IOU.TYPE.SUBMIT, quickAction?.chatReportID ?? '', CONST.IOU.REQUEST_TYPE.DISTANCE, true);
return;
case CONST.QUICK_ACTIONS.SPLIT_MANUAL:
IOU.startMoneyRequest(CONST.IOU.TYPE.SPLIT, quickAction?.chatReportID ?? '', CONST.IOU.REQUEST_TYPE.MANUAL, true);
@@ -187,19 +187,19 @@ function FloatingActionButtonAndPopover(
IOU.startMoneyRequest(CONST.IOU.TYPE.SPLIT, quickAction?.chatReportID ?? '', CONST.IOU.REQUEST_TYPE.DISTANCE, true);
return;
case CONST.QUICK_ACTIONS.SEND_MONEY:
- IOU.startMoneyRequest(CONST.IOU.TYPE.SEND, quickAction?.chatReportID ?? '', CONST.IOU.REQUEST_TYPE.MANUAL, true);
+ IOU.startMoneyRequest(CONST.IOU.TYPE.PAY, quickAction?.chatReportID ?? '', CONST.IOU.REQUEST_TYPE.MANUAL, true);
return;
case CONST.QUICK_ACTIONS.ASSIGN_TASK:
Task.clearOutTaskInfoAndNavigate(quickAction?.chatReportID ?? '', quickActionReport, quickAction.targetAccountID ?? 0, true);
break;
case CONST.QUICK_ACTIONS.TRACK_MANUAL:
- IOU.startMoneyRequest(CONST.IOU.TYPE.TRACK_EXPENSE, quickAction?.chatReportID ?? '', CONST.IOU.REQUEST_TYPE.MANUAL);
+ IOU.startMoneyRequest(CONST.IOU.TYPE.TRACK, quickAction?.chatReportID ?? '', CONST.IOU.REQUEST_TYPE.MANUAL);
break;
case CONST.QUICK_ACTIONS.TRACK_SCAN:
- IOU.startMoneyRequest(CONST.IOU.TYPE.TRACK_EXPENSE, quickAction?.chatReportID ?? '', CONST.IOU.REQUEST_TYPE.SCAN);
+ IOU.startMoneyRequest(CONST.IOU.TYPE.TRACK, quickAction?.chatReportID ?? '', CONST.IOU.REQUEST_TYPE.SCAN);
break;
case CONST.QUICK_ACTIONS.TRACK_DISTANCE:
- IOU.startMoneyRequest(CONST.IOU.TYPE.TRACK_EXPENSE, quickAction?.chatReportID ?? '', CONST.IOU.REQUEST_TYPE.DISTANCE);
+ IOU.startMoneyRequest(CONST.IOU.TYPE.TRACK, quickAction?.chatReportID ?? '', CONST.IOU.REQUEST_TYPE.DISTANCE);
break;
default:
}
@@ -295,7 +295,7 @@ function FloatingActionButtonAndPopover(
onSelected: () =>
interceptAnonymousUser(() =>
IOU.startMoneyRequest(
- CONST.IOU.TYPE.TRACK_EXPENSE,
+ CONST.IOU.TYPE.TRACK,
// When starting to create a track expense from the global FAB, we need to retrieve selfDM reportID.
// If it doesn't exist, we generate a random optimistic reportID and use it for all of the routes in the creation flow.
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
@@ -311,7 +311,7 @@ function FloatingActionButtonAndPopover(
onSelected: () =>
interceptAnonymousUser(() =>
IOU.startMoneyRequest(
- CONST.IOU.TYPE.REQUEST,
+ CONST.IOU.TYPE.SUBMIT,
// When starting to create an expense from the global FAB, there is not an existing report yet. A random optimistic reportID is generated and used
// for all of the routes in the creation flow.
ReportUtils.generateReportID(),
@@ -337,7 +337,7 @@ function FloatingActionButtonAndPopover(
onSelected: () =>
interceptAnonymousUser(() =>
IOU.startMoneyRequest(
- CONST.IOU.TYPE.SEND,
+ CONST.IOU.TYPE.PAY,
// When starting to pay someone from the global FAB, there is not an existing report yet. A random optimistic reportID is generated and used
// for all of the routes in the creation flow.
ReportUtils.generateReportID(),
diff --git a/src/pages/iou/request/IOURequestStartPage.tsx b/src/pages/iou/request/IOURequestStartPage.tsx
index f807038d9cd1..4a401d7de988 100644
--- a/src/pages/iou/request/IOURequestStartPage.tsx
+++ b/src/pages/iou/request/IOURequestStartPage.tsx
@@ -62,9 +62,11 @@ function IOURequestStartPage({
const [isDraggingOver, setIsDraggingOver] = useState(false);
const tabTitles = {
[CONST.IOU.TYPE.REQUEST]: translate('iou.submitExpense'),
+ [CONST.IOU.TYPE.SUBMIT]: translate('iou.submitExpense'),
[CONST.IOU.TYPE.SEND]: translate('iou.paySomeone', {name: ReportUtils.getPayeeName(report)}),
+ [CONST.IOU.TYPE.PAY]: translate('iou.paySomeone', {name: ReportUtils.getPayeeName(report)}),
[CONST.IOU.TYPE.SPLIT]: translate('iou.splitExpense'),
- [CONST.IOU.TYPE.TRACK_EXPENSE]: translate('iou.trackExpense'),
+ [CONST.IOU.TYPE.TRACK]: translate('iou.trackExpense'),
};
const transactionRequestType = useRef(TransactionUtils.getRequestType(transaction));
const {canUseP2PDistanceRequests} = usePermissions(iouType);
@@ -136,7 +138,7 @@ function IOURequestStartPage({
title={tabTitles[iouType]}
onBackButtonPress={navigateBack}
/>
- {iouType !== CONST.IOU.TYPE.SEND ? (
+ {iouType !== CONST.IOU.TYPE.SEND && iouType !== CONST.IOU.TYPE.PAY ? (
{
diff --git a/src/pages/iou/request/step/IOURequestStepAmount.tsx b/src/pages/iou/request/step/IOURequestStepAmount.tsx
index 9c5ab528c83a..4470b3f5b5c7 100644
--- a/src/pages/iou/request/step/IOURequestStepAmount.tsx
+++ b/src/pages/iou/request/step/IOURequestStepAmount.tsx
@@ -85,7 +85,7 @@ function IOURequestStepAmount({
// For quick button actions, we'll skip the confirmation page unless the report is archived or this is a workspace request, as
// the user will have to add a merchant.
const shouldSkipConfirmation: boolean = useMemo(() => {
- if (!skipConfirmation || !report?.reportID || iouType === CONST.IOU.TYPE.TRACK_EXPENSE) {
+ if (!skipConfirmation || !report?.reportID || iouType === CONST.IOU.TYPE.TRACK) {
return false;
}
@@ -132,6 +132,32 @@ function IOURequestStepAmount({
);
};
+ const navigateToParticipantPage = () => {
+ switch (iouType) {
+ case CONST.IOU.TYPE.REQUEST:
+ Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_PARTICIPANTS.getRoute(CONST.IOU.TYPE.SUBMIT, transactionID, reportID));
+ break;
+ case CONST.IOU.TYPE.SEND:
+ Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_PARTICIPANTS.getRoute(CONST.IOU.TYPE.PAY, transactionID, reportID));
+ break;
+ default:
+ Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_PARTICIPANTS.getRoute(iouType, transactionID, reportID));
+ }
+ };
+
+ const navigateToConfirmationPage = () => {
+ switch (iouType) {
+ case CONST.IOU.TYPE.REQUEST:
+ Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_CONFIRMATION.getRoute(CONST.IOU.ACTION.CREATE, CONST.IOU.TYPE.SUBMIT, transactionID, reportID));
+ break;
+ case CONST.IOU.TYPE.SEND:
+ Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_CONFIRMATION.getRoute(CONST.IOU.ACTION.CREATE, CONST.IOU.TYPE.PAY, transactionID, reportID));
+ break;
+ default:
+ Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_CONFIRMATION.getRoute(CONST.IOU.ACTION.CREATE, iouType, transactionID, reportID));
+ }
+ };
+
const navigateToNextPage = ({amount, paymentMethod}: AmountParams) => {
isSaveButtonPressed.current = true;
const amountInSmallestCurrencyUnits = CurrencyUtils.convertToBackendAmount(Number.parseFloat(amount));
@@ -173,7 +199,7 @@ function IOURequestStepAmount({
});
return;
}
- if (iouType === CONST.IOU.TYPE.SEND) {
+ if (iouType === CONST.IOU.TYPE.PAY || iouType === CONST.IOU.TYPE.SEND) {
if (paymentMethod && paymentMethod === CONST.IOU.PAYMENT_TYPE.EXPENSIFY) {
IOU.sendMoneyWithWallet(report, backendAmount, currency, '', currentUserPersonalDetails.accountID, participants[0]);
return;
@@ -182,7 +208,7 @@ function IOURequestStepAmount({
IOU.sendMoneyElsewhere(report, backendAmount, currency, '', currentUserPersonalDetails.accountID, participants[0]);
return;
}
- if (iouType === CONST.IOU.TYPE.REQUEST) {
+ if (iouType === CONST.IOU.TYPE.SUBMIT || iouType === CONST.IOU.TYPE.REQUEST) {
IOU.requestMoney(
report,
backendAmount,
@@ -199,13 +225,13 @@ function IOURequestStepAmount({
}
}
IOU.setMoneyRequestParticipantsFromReport(transactionID, report);
- Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_CONFIRMATION.getRoute(CONST.IOU.ACTION.CREATE, iouType, transactionID, reportID));
+ navigateToConfirmationPage();
return;
}
// If there was no reportID, then that means the user started this flow from the global + menu
// and an optimistic reportID was generated. In that case, the next step is to select the participants for this expense.
- Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_PARTICIPANTS.getRoute(iouType, transactionID, reportID));
+ navigateToParticipantPage();
};
const saveAmountAndCurrency = ({amount, paymentMethod}: AmountParams) => {
@@ -288,7 +314,7 @@ const IOURequestStepAmountWithOnyx = withOnyx
@@ -353,7 +353,7 @@ function IOURequestStepConfirmation({
return;
}
- if (iouType === CONST.IOU.TYPE.TRACK_EXPENSE || isCategorizingTrackExpense || isSharingTrackExpense) {
+ if (iouType === CONST.IOU.TYPE.TRACK || isCategorizingTrackExpense || isSharingTrackExpense) {
if (receiptFile && transaction) {
// If the transaction amount is zero, then the money is being requested through the "Scan" flow and the GPS coordinates need to be included.
if (transaction.amount === 0 && !isSharingTrackExpense && !isCategorizingTrackExpense) {
@@ -496,7 +496,7 @@ function IOURequestStepConfirmation({
diff --git a/src/pages/iou/request/step/IOURequestStepDistance.tsx b/src/pages/iou/request/step/IOURequestStepDistance.tsx
index c0c251003461..cc211c1ff16b 100644
--- a/src/pages/iou/request/step/IOURequestStepDistance.tsx
+++ b/src/pages/iou/request/step/IOURequestStepDistance.tsx
@@ -105,7 +105,7 @@ function IOURequestStepDistance({
// For quick button actions, we'll skip the confirmation page unless the report is archived or this is a workspace
// request and the workspace requires a category or a tag
const shouldSkipConfirmation: boolean = useMemo(() => {
- if (!skipConfirmation || !report?.reportID || iouType === CONST.IOU.TYPE.TRACK_EXPENSE) {
+ if (!skipConfirmation || !report?.reportID || iouType === CONST.IOU.TYPE.TRACK) {
return false;
}
@@ -176,12 +176,38 @@ function IOURequestStepDistance({
const navigateToWaypointEditPage = useCallback(
(index: number) => {
Navigation.navigate(
- ROUTES.MONEY_REQUEST_STEP_WAYPOINT.getRoute(action, CONST.IOU.TYPE.REQUEST, transactionID, report?.reportID, index.toString(), Navigation.getActiveRouteWithoutParams()),
+ ROUTES.MONEY_REQUEST_STEP_WAYPOINT.getRoute(action, CONST.IOU.TYPE.SUBMIT, transactionID, report?.reportID, index.toString(), Navigation.getActiveRouteWithoutParams()),
);
},
[action, transactionID, report?.reportID],
);
+ const navigateToParticipantPage = useCallback(() => {
+ switch (iouType) {
+ case CONST.IOU.TYPE.REQUEST:
+ Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_PARTICIPANTS.getRoute(CONST.IOU.TYPE.SUBMIT, transactionID, reportID));
+ break;
+ case CONST.IOU.TYPE.SEND:
+ Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_PARTICIPANTS.getRoute(CONST.IOU.TYPE.PAY, transactionID, reportID));
+ break;
+ default:
+ Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_PARTICIPANTS.getRoute(iouType, transactionID, reportID));
+ }
+ }, [iouType, reportID, transactionID]);
+
+ const navigateToConfirmationPage = useCallback(() => {
+ switch (iouType) {
+ case CONST.IOU.TYPE.REQUEST:
+ Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_CONFIRMATION.getRoute(CONST.IOU.ACTION.CREATE, CONST.IOU.TYPE.SUBMIT, transactionID, reportID));
+ break;
+ case CONST.IOU.TYPE.SEND:
+ Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_CONFIRMATION.getRoute(CONST.IOU.ACTION.CREATE, CONST.IOU.TYPE.PAY, transactionID, reportID));
+ break;
+ default:
+ Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_CONFIRMATION.getRoute(CONST.IOU.ACTION.CREATE, iouType, transactionID, reportID));
+ }
+ }, [iouType, reportID, transactionID]);
+
const navigateToNextStep = useCallback(() => {
if (backTo) {
Navigation.goBack(backTo);
@@ -233,14 +259,27 @@ function IOURequestStepDistance({
return;
}
IOU.setMoneyRequestParticipantsFromReport(transactionID, report);
- Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_CONFIRMATION.getRoute(CONST.IOU.ACTION.CREATE, iouType, transactionID, reportID));
+ navigateToConfirmationPage();
return;
}
// If there was no reportID, then that means the user started this flow from the global menu
// and an optimistic reportID was generated. In that case, the next step is to select the participants for this expense.
- Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_PARTICIPANTS.getRoute(iouType, transactionID, reportID));
- }, [report, iouType, reportID, transactionID, backTo, waypoints, currentUserPersonalDetails, personalDetails, shouldSkipConfirmation, transaction, translate]);
+ navigateToParticipantPage();
+ }, [
+ report,
+ iouType,
+ transactionID,
+ backTo,
+ waypoints,
+ currentUserPersonalDetails,
+ personalDetails,
+ shouldSkipConfirmation,
+ transaction,
+ translate,
+ navigateToParticipantPage,
+ navigateToConfirmationPage,
+ ]);
const getError = () => {
// Get route error if available else show the invalid number of waypoints error.
@@ -417,7 +456,7 @@ const IOURequestStepDistanceWithOnyx = withOnyx &
WithFullTransactionOrNotFoundProps;
-type IOURef = IOUType | null;
-
function IOURequestStepParticipants({
route: {
params: {iouType, reportID, transactionID, action},
@@ -46,7 +43,7 @@ function IOURequestStepParticipants({
if (action === CONST.IOU.ACTION.CATEGORIZE) {
return translate('iou.categorize');
}
- if (action === CONST.IOU.ACTION.REQUEST) {
+ if (action === CONST.IOU.ACTION.SUBMIT) {
return translate('iou.submitExpense');
}
if (action === CONST.IOU.ACTION.SHARE) {
@@ -55,16 +52,15 @@ function IOURequestStepParticipants({
if (isSplitRequest) {
return translate('iou.splitExpense');
}
- if (iouType === CONST.IOU.TYPE.SEND) {
+ if (iouType === CONST.IOU.TYPE.PAY) {
return translate('iou.paySomeone', {});
}
- return translate(TransactionUtils.getHeaderTitleTranslationKey(transaction));
- }, [iouType, transaction, translate, isSplitRequest, action]);
+ return translate('iou.submitExpense');
+ }, [iouType, translate, isSplitRequest, action]);
const receiptFilename = transaction?.filename;
const receiptPath = transaction?.receipt?.source;
const receiptType = transaction?.receipt?.type;
- const newIouType = useRef();
// When the component mounts, if there is a receipt, see if the image can be read from the disk. If not, redirect the user to the starting step of the flow.
// This is because until the expense is saved, the receipt file is only stored in the browsers memory as a blob:// and if the browser is refreshed, then
@@ -78,18 +74,7 @@ function IOURequestStepParticipants({
}, [receiptType, receiptPath, receiptFilename, iouRequestType, iouType, transactionID, reportID, action]);
const addParticipant = useCallback(
- (val: Participant[], selectedIouType: IOUType) => {
- const isSplit = selectedIouType === CONST.IOU.TYPE.SPLIT;
- // It's only possible to switch between REQUEST and SPLIT.
- // We want to update the IOU type only if it's not updated yet to prevent unnecessary updates.
- if (isSplit && iouType !== CONST.IOU.TYPE.SPLIT) {
- newIouType.current = CONST.IOU.TYPE.SPLIT;
- } else if (!isSplit && iouType === CONST.IOU.TYPE.SPLIT) {
- // Non-split can be either REQUEST or SEND. Instead of checking whether
- // the current IOU type is not a REQUEST (true for SEND), we check whether the current IOU type is a SPLIT.
- newIouType.current = CONST.IOU.TYPE.REQUEST;
- }
-
+ (val: Participant[]) => {
IOU.setMoneyRequestParticipants_temporaryForRefactor(transactionID, val);
const rateID = DistanceRequestUtils.getCustomUnitRateID(val[0]?.reportID ?? '');
IOU.setCustomUnitRateID(transactionID, rateID);
@@ -106,7 +91,7 @@ function IOURequestStepParticipants({
// When a participant is selected, the reportID needs to be saved because that's the reportID that will be used in the confirmation step.
selectedReportID.current = val[0]?.reportID ?? reportID;
},
- [reportID, transactionID, iouType],
+ [reportID, transactionID],
);
const goToNextStep = useCallback(() => {
diff --git a/src/pages/iou/request/step/IOURequestStepRoutePropTypes.js b/src/pages/iou/request/step/IOURequestStepRoutePropTypes.js
deleted file mode 100644
index f69e2b122c24..000000000000
--- a/src/pages/iou/request/step/IOURequestStepRoutePropTypes.js
+++ /dev/null
@@ -1,29 +0,0 @@
-import PropTypes from 'prop-types';
-import _ from 'underscore';
-import CONST from '@src/CONST';
-
-export default PropTypes.shape({
- /** Route specific parameters used on this screen via route :iouType/new/category/:reportID? */
- params: PropTypes.shape({
- /** What action is being performed, ie. create, edit */
- action: PropTypes.oneOf(_.values(CONST.IOU.ACTION)),
-
- /** The type of IOU report, i.e. split, request, send, track */
- iouType: PropTypes.oneOf(_.values(CONST.IOU.TYPE)).isRequired,
-
- /** The ID of the transaction being configured */
- transactionID: PropTypes.string.isRequired,
-
- /** The report ID of the IOU */
- reportID: PropTypes.string.isRequired,
-
- /** Index of the waypoint being edited */
- pageIndex: PropTypes.string,
-
- /** A path to go to when the user presses the back button */
- backTo: PropTypes.string,
-
- /** Indicates which tag list index was selected */
- tagIndex: PropTypes.string,
- }),
-});
diff --git a/src/pages/iou/request/step/IOURequestStepScan/index.native.tsx b/src/pages/iou/request/step/IOURequestStepScan/index.native.tsx
index 84c2137dafda..dc6985874321 100644
--- a/src/pages/iou/request/step/IOURequestStepScan/index.native.tsx
+++ b/src/pages/iou/request/step/IOURequestStepScan/index.native.tsx
@@ -65,7 +65,7 @@ function IOURequestStepScan({
// For quick button actions, we'll skip the confirmation page unless the report is archived or this is a workspace
// request and the workspace requires a category or a tag
const shouldSkipConfirmation: boolean = useMemo(() => {
- if (!skipConfirmation || !report?.reportID || iouType === CONST.IOU.TYPE.TRACK_EXPENSE) {
+ if (!skipConfirmation || !report?.reportID || iouType === CONST.IOU.TYPE.TRACK) {
return false;
}
@@ -179,6 +179,32 @@ function IOURequestStepScan({
Navigation.goBack();
};
+ const navigateToParticipantPage = useCallback(() => {
+ switch (iouType) {
+ case CONST.IOU.TYPE.REQUEST:
+ Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_PARTICIPANTS.getRoute(CONST.IOU.TYPE.SUBMIT, transactionID, reportID));
+ break;
+ case CONST.IOU.TYPE.SEND:
+ Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_PARTICIPANTS.getRoute(CONST.IOU.TYPE.PAY, transactionID, reportID));
+ break;
+ default:
+ Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_PARTICIPANTS.getRoute(iouType, transactionID, reportID));
+ }
+ }, [iouType, reportID, transactionID]);
+
+ const navigateToConfirmationPage = useCallback(() => {
+ switch (iouType) {
+ case CONST.IOU.TYPE.REQUEST:
+ Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_CONFIRMATION.getRoute(CONST.IOU.ACTION.CREATE, CONST.IOU.TYPE.SUBMIT, transactionID, reportID));
+ break;
+ case CONST.IOU.TYPE.SEND:
+ Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_CONFIRMATION.getRoute(CONST.IOU.ACTION.CREATE, CONST.IOU.TYPE.PAY, transactionID, reportID));
+ break;
+ default:
+ Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_CONFIRMATION.getRoute(CONST.IOU.ACTION.CREATE, iouType, transactionID, reportID));
+ }
+ }, [iouType, reportID, transactionID]);
+
const navigateToConfirmationStep = useCallback(
(file: FileObject, source: string) => {
if (backTo) {
@@ -187,8 +213,8 @@ function IOURequestStepScan({
}
// If the transaction was created from the global create, the person needs to select participants, so take them there.
- if (transaction?.isFromGlobalCreate && iouType !== CONST.IOU.TYPE.TRACK_EXPENSE && !report?.reportID) {
- Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_PARTICIPANTS.getRoute(iouType, transactionID, reportID));
+ if (transaction?.isFromGlobalCreate && iouType !== CONST.IOU.TYPE.TRACK && !report?.reportID) {
+ navigateToParticipantPage();
return;
}
@@ -233,9 +259,21 @@ function IOURequestStepScan({
);
return;
}
- Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_CONFIRMATION.getRoute(CONST.IOU.ACTION.CREATE, iouType, transactionID, reportID));
+ navigateToConfirmationPage();
},
- [iouType, report, reportID, transactionID, backTo, currentUserPersonalDetails, personalDetails, shouldSkipConfirmation, transaction],
+ [
+ iouType,
+ report,
+ reportID,
+ transactionID,
+ backTo,
+ currentUserPersonalDetails,
+ personalDetails,
+ shouldSkipConfirmation,
+ transaction,
+ navigateToConfirmationPage,
+ navigateToParticipantPage,
+ ],
);
const updateScanAndNavigate = useCallback(
@@ -452,7 +490,7 @@ const IOURequestStepScanWithOnyx = withOnyx {
- if (!skipConfirmation || !report?.reportID || iouType === CONST.IOU.TYPE.TRACK_EXPENSE) {
+ if (!skipConfirmation || !report?.reportID || iouType === CONST.IOU.TYPE.TRACK) {
return false;
}
@@ -219,6 +219,32 @@ function IOURequestStepScan({
Navigation.goBack(backTo);
};
+ const navigateToParticipantPage = useCallback(() => {
+ switch (iouType) {
+ case CONST.IOU.TYPE.REQUEST:
+ Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_PARTICIPANTS.getRoute(CONST.IOU.TYPE.SUBMIT, transactionID, reportID));
+ break;
+ case CONST.IOU.TYPE.SEND:
+ Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_PARTICIPANTS.getRoute(CONST.IOU.TYPE.PAY, transactionID, reportID));
+ break;
+ default:
+ Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_PARTICIPANTS.getRoute(iouType, transactionID, reportID));
+ }
+ }, [iouType, reportID, transactionID]);
+
+ const navigateToConfirmationPage = useCallback(() => {
+ switch (iouType) {
+ case CONST.IOU.TYPE.REQUEST:
+ Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_CONFIRMATION.getRoute(CONST.IOU.ACTION.CREATE, CONST.IOU.TYPE.SUBMIT, transactionID, reportID));
+ break;
+ case CONST.IOU.TYPE.SEND:
+ Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_CONFIRMATION.getRoute(CONST.IOU.ACTION.CREATE, CONST.IOU.TYPE.PAY, transactionID, reportID));
+ break;
+ default:
+ Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_CONFIRMATION.getRoute(CONST.IOU.ACTION.CREATE, iouType, transactionID, reportID));
+ }
+ }, [iouType, reportID, transactionID]);
+
const navigateToConfirmationStep = useCallback(
(file: FileObject, source: string) => {
if (backTo) {
@@ -227,8 +253,8 @@ function IOURequestStepScan({
}
// If the transaction was created from the global create, the person needs to select participants, so take them there.
- if (transaction?.isFromGlobalCreate && iouType !== CONST.IOU.TYPE.TRACK_EXPENSE && !report?.reportID) {
- Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_PARTICIPANTS.getRoute(iouType, transactionID, reportID));
+ if (transaction?.isFromGlobalCreate && iouType !== CONST.IOU.TYPE.TRACK && !report?.reportID) {
+ navigateToParticipantPage();
return;
}
@@ -273,9 +299,21 @@ function IOURequestStepScan({
);
return;
}
- Navigation.navigate(ROUTES.MONEY_REQUEST_STEP_CONFIRMATION.getRoute(CONST.IOU.ACTION.CREATE, iouType, transactionID, reportID));
+ navigateToConfirmationPage();
},
- [iouType, report, reportID, transactionID, backTo, currentUserPersonalDetails, personalDetails, shouldSkipConfirmation, transaction],
+ [
+ iouType,
+ report,
+ reportID,
+ transactionID,
+ backTo,
+ currentUserPersonalDetails,
+ personalDetails,
+ shouldSkipConfirmation,
+ transaction,
+ navigateToConfirmationPage,
+ navigateToParticipantPage,
+ ],
);
const updateScanAndNavigate = useCallback(
@@ -580,7 +618,7 @@ const IOURequestStepScanWithOnyx = withOnyx = WithWr
export default function , TRef>(
WrappedComponent: ComponentType>,
+ shouldIncludeDeprecatedIOUType = false,
): React.ComponentType, keyof WithWritableReportOrNotFoundOnyxProps>> {
// eslint-disable-next-line rulesdir/no-negated-variables
function WithWritableReportOrNotFound(props: TProps, ref: ForwardedRef) {
const {report = {reportID: ''}, route} = props;
- const iouTypeParamIsInvalid = !Object.values(CONST.IOU.TYPE).includes(route.params?.iouType);
+ const iouTypeParamIsInvalid = !Object.values(CONST.IOU.TYPE)
+ .filter((type) => shouldIncludeDeprecatedIOUType || (type !== CONST.IOU.TYPE.REQUEST && type !== CONST.IOU.TYPE.SEND))
+ .includes(route.params?.iouType);
const canUserPerformWriteAction = ReportUtils.canUserPerformWriteAction(report);
if (iouTypeParamIsInvalid || !canUserPerformWriteAction) {
diff --git a/src/pages/iou/steps/MoneyRequestAmountForm.tsx b/src/pages/iou/steps/MoneyRequestAmountForm.tsx
index a5ed35374e00..5727351f45da 100644
--- a/src/pages/iou/steps/MoneyRequestAmountForm.tsx
+++ b/src/pages/iou/steps/MoneyRequestAmountForm.tsx
@@ -97,7 +97,7 @@ function MoneyRequestAmountForm(
isCurrencyPressable = true,
isEditing = false,
skipConfirmation = false,
- iouType = CONST.IOU.TYPE.REQUEST,
+ iouType = CONST.IOU.TYPE.SUBMIT,
policyID = '',
bankAccountRoute = '',
onCurrencyButtonPress,
@@ -387,7 +387,7 @@ function MoneyRequestAmountForm(
longPressHandlerStateChanged={updateLongPressHandlerState}
/>
) : null}
- {iouType === CONST.IOU.TYPE.SEND && skipConfirmation ? (
+ {iouType === CONST.IOU.TYPE.PAY && skipConfirmation ? (
{
const reportParticipants = Array.from({length: 1000}, (v, i) => i + 1);
await waitForBatchedUpdates();
- await measureFunction(() => ReportUtils.getMoneyRequestOptions(report, policy, reportParticipants));
+ await measureFunction(() => ReportUtils.temporary_getMoneyRequestOptions(report, policy, reportParticipants));
});
test('[ReportUtils] getWorkspaceAvatar on 1k policies', async () => {
diff --git a/tests/unit/IOUUtilsTest.ts b/tests/unit/IOUUtilsTest.ts
index ddc220449e2f..b8640e4ecdf1 100644
--- a/tests/unit/IOUUtilsTest.ts
+++ b/tests/unit/IOUUtilsTest.ts
@@ -118,12 +118,13 @@ describe('IOUUtils', () => {
describe('isValidMoneyRequestType', () => {
test('Return true for valid iou type', () => {
- expect(IOUUtils.isValidMoneyRequestType('request')).toBe(true);
- expect(IOUUtils.isValidMoneyRequestType('split')).toBe(true);
- expect(IOUUtils.isValidMoneyRequestType('send')).toBe(true);
+ expect(IOUUtils.temporary_isValidMoneyRequestType('submit')).toBe(true);
+ expect(IOUUtils.temporary_isValidMoneyRequestType('split')).toBe(true);
+ expect(IOUUtils.temporary_isValidMoneyRequestType('pay')).toBe(true);
+ expect(IOUUtils.temporary_isValidMoneyRequestType('track')).toBe(true);
});
test('Return false for invalid iou type', () => {
- expect(IOUUtils.isValidMoneyRequestType('money')).toBe(false);
+ expect(IOUUtils.temporary_isValidMoneyRequestType('money')).toBe(false);
});
});
diff --git a/tests/unit/ReportUtilsTest.ts b/tests/unit/ReportUtilsTest.ts
index 0ed28ea84fcb..d0ea948bdb6c 100644
--- a/tests/unit/ReportUtilsTest.ts
+++ b/tests/unit/ReportUtilsTest.ts
@@ -359,7 +359,7 @@ describe('ReportUtils', () => {
describe('return empty iou options if', () => {
it('participants array contains excluded expensify iou emails', () => {
const allEmpty = CONST.EXPENSIFY_ACCOUNT_IDS.every((accountID) => {
- const moneyRequestOptions = ReportUtils.getMoneyRequestOptions(null, null, [currentUserAccountID, accountID]);
+ const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(null, null, [currentUserAccountID, accountID]);
return moneyRequestOptions.length === 0;
});
expect(allEmpty).toBe(true);
@@ -370,7 +370,7 @@ describe('ReportUtils', () => {
...LHNTestUtils.getFakeReport(),
chatType: CONST.REPORT.CHAT_TYPE.POLICY_ROOM,
};
- const moneyRequestOptions = ReportUtils.getMoneyRequestOptions(report, null, [currentUserAccountID]);
+ const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, null, [currentUserAccountID]);
expect(moneyRequestOptions.length).toBe(0);
});
@@ -380,7 +380,7 @@ describe('ReportUtils', () => {
chatType: CONST.REPORT.CHAT_TYPE.POLICY_EXPENSE_CHAT,
isOwnPolicyExpenseChat: false,
};
- const moneyRequestOptions = ReportUtils.getMoneyRequestOptions(report, null, [currentUserAccountID]);
+ const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, null, [currentUserAccountID]);
expect(moneyRequestOptions.length).toBe(0);
});
@@ -390,7 +390,7 @@ describe('ReportUtils', () => {
type: CONST.REPORT.TYPE.IOU,
statusNum: CONST.REPORT.STATUS_NUM.REIMBURSED,
};
- const moneyRequestOptions = ReportUtils.getMoneyRequestOptions(report, null, [currentUserAccountID]);
+ const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, null, [currentUserAccountID]);
expect(moneyRequestOptions.length).toBe(0);
});
@@ -401,7 +401,7 @@ describe('ReportUtils', () => {
stateNum: CONST.REPORT.STATE_NUM.APPROVED,
statusNum: CONST.REPORT.STATUS_NUM.APPROVED,
};
- const moneyRequestOptions = ReportUtils.getMoneyRequestOptions(report, null, [currentUserAccountID]);
+ const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, null, [currentUserAccountID]);
expect(moneyRequestOptions.length).toBe(0);
});
@@ -411,7 +411,7 @@ describe('ReportUtils', () => {
type: CONST.REPORT.TYPE.EXPENSE,
statusNum: CONST.REPORT.STATUS_NUM.REIMBURSED,
};
- const moneyRequestOptions = ReportUtils.getMoneyRequestOptions(report, null, [currentUserAccountID]);
+ const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, null, [currentUserAccountID]);
expect(moneyRequestOptions.length).toBe(0);
});
@@ -425,7 +425,7 @@ describe('ReportUtils', () => {
parentReportID: '100',
type: CONST.REPORT.TYPE.EXPENSE,
};
- const moneyRequestOptions = ReportUtils.getMoneyRequestOptions(report, null, [currentUserAccountID]);
+ const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, null, [currentUserAccountID]);
expect(moneyRequestOptions.length).toBe(0);
});
});
@@ -456,7 +456,7 @@ describe('ReportUtils', () => {
parentReportID: '101',
policyID: paidPolicy.id,
};
- const moneyRequestOptions = ReportUtils.getMoneyRequestOptions(report, paidPolicy, [currentUserAccountID, participantsAccountIDs[0]]);
+ const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, paidPolicy, [currentUserAccountID, participantsAccountIDs[0]]);
expect(moneyRequestOptions.length).toBe(0);
});
});
@@ -474,7 +474,7 @@ describe('ReportUtils', () => {
...LHNTestUtils.getFakeReport(),
chatType,
};
- const moneyRequestOptions = ReportUtils.getMoneyRequestOptions(report, null, [currentUserAccountID, participantsAccountIDs[0]]);
+ const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, null, [currentUserAccountID, participantsAccountIDs[0]]);
return moneyRequestOptions.length === 1 && moneyRequestOptions.includes(CONST.IOU.TYPE.SPLIT);
});
expect(onlyHaveSplitOption).toBe(true);
@@ -485,7 +485,7 @@ describe('ReportUtils', () => {
...LHNTestUtils.getFakeReport(),
chatType: CONST.REPORT.CHAT_TYPE.POLICY_ROOM,
};
- const moneyRequestOptions = ReportUtils.getMoneyRequestOptions(report, null, [currentUserAccountID, ...participantsAccountIDs]);
+ const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, null, [currentUserAccountID, ...participantsAccountIDs]);
expect(moneyRequestOptions.length).toBe(1);
expect(moneyRequestOptions.includes(CONST.IOU.TYPE.SPLIT)).toBe(true);
});
@@ -495,7 +495,7 @@ describe('ReportUtils', () => {
...LHNTestUtils.getFakeReport(),
chatType: CONST.REPORT.CHAT_TYPE.POLICY_ROOM,
};
- const moneyRequestOptions = ReportUtils.getMoneyRequestOptions(report, null, [currentUserAccountID, ...participantsAccountIDs]);
+ const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, null, [currentUserAccountID, ...participantsAccountIDs]);
expect(moneyRequestOptions.length).toBe(1);
expect(moneyRequestOptions.includes(CONST.IOU.TYPE.SPLIT)).toBe(true);
});
@@ -506,7 +506,7 @@ describe('ReportUtils', () => {
type: CONST.REPORT.TYPE.CHAT,
participantsAccountIDs: [currentUserAccountID, ...participantsAccountIDs],
};
- const moneyRequestOptions = ReportUtils.getMoneyRequestOptions(report, null, [currentUserAccountID, ...participantsAccountIDs.map(Number)]);
+ const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, null, [currentUserAccountID, ...participantsAccountIDs.map(Number)]);
expect(moneyRequestOptions.length).toBe(1);
expect(moneyRequestOptions.includes(CONST.IOU.TYPE.SPLIT)).toBe(true);
});
@@ -520,9 +520,9 @@ describe('ReportUtils', () => {
stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
statusNum: CONST.REPORT.STATUS_NUM.SUBMITTED,
};
- const moneyRequestOptions = ReportUtils.getMoneyRequestOptions(report, null, [currentUserAccountID, participantsAccountIDs[0]]);
+ const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, null, [currentUserAccountID, participantsAccountIDs[0]]);
expect(moneyRequestOptions.length).toBe(1);
- expect(moneyRequestOptions.includes(CONST.IOU.TYPE.REQUEST)).toBe(true);
+ expect(moneyRequestOptions.includes(CONST.IOU.TYPE.SUBMIT)).toBe(true);
});
it('it is an IOU report in submitted state even with pay expense permissions', () => {
@@ -532,9 +532,9 @@ describe('ReportUtils', () => {
stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
statusNum: CONST.REPORT.STATUS_NUM.SUBMITTED,
};
- const moneyRequestOptions = ReportUtils.getMoneyRequestOptions(report, null, [currentUserAccountID, participantsAccountIDs[0]]);
+ const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, null, [currentUserAccountID, participantsAccountIDs[0]]);
expect(moneyRequestOptions.length).toBe(1);
- expect(moneyRequestOptions.includes(CONST.IOU.TYPE.REQUEST)).toBe(true);
+ expect(moneyRequestOptions.includes(CONST.IOU.TYPE.SUBMIT)).toBe(true);
});
});
@@ -550,10 +550,10 @@ describe('ReportUtils', () => {
parentReportID: '102',
type: CONST.REPORT.TYPE.EXPENSE,
};
- const moneyRequestOptions = ReportUtils.getMoneyRequestOptions(report, null, [currentUserAccountID]);
+ const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, null, [currentUserAccountID]);
expect(moneyRequestOptions.length).toBe(2);
- expect(moneyRequestOptions.includes(CONST.IOU.TYPE.REQUEST)).toBe(true);
- expect(moneyRequestOptions.includes(CONST.IOU.TYPE.TRACK_EXPENSE)).toBe(true);
+ expect(moneyRequestOptions.includes(CONST.IOU.TYPE.SUBMIT)).toBe(true);
+ expect(moneyRequestOptions.includes(CONST.IOU.TYPE.TRACK)).toBe(true);
});
});
@@ -579,10 +579,10 @@ describe('ReportUtils', () => {
outputCurrency: '',
isPolicyExpenseChatEnabled: false,
} as const;
- const moneyRequestOptions = ReportUtils.getMoneyRequestOptions(report, paidPolicy, [currentUserAccountID, participantsAccountIDs[0]]);
+ const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, paidPolicy, [currentUserAccountID, participantsAccountIDs[0]]);
expect(moneyRequestOptions.length).toBe(2);
- expect(moneyRequestOptions.includes(CONST.IOU.TYPE.REQUEST)).toBe(true);
- expect(moneyRequestOptions.includes(CONST.IOU.TYPE.TRACK_EXPENSE)).toBe(true);
+ expect(moneyRequestOptions.includes(CONST.IOU.TYPE.SUBMIT)).toBe(true);
+ expect(moneyRequestOptions.includes(CONST.IOU.TYPE.TRACK)).toBe(true);
});
});
@@ -593,9 +593,9 @@ describe('ReportUtils', () => {
stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
statusNum: CONST.REPORT.STATUS_NUM.SUBMITTED,
};
- const moneyRequestOptions = ReportUtils.getMoneyRequestOptions(report, null, [currentUserAccountID, participantsAccountIDs[0]]);
+ const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, null, [currentUserAccountID, participantsAccountIDs[0]]);
expect(moneyRequestOptions.length).toBe(1);
- expect(moneyRequestOptions.includes(CONST.IOU.TYPE.REQUEST)).toBe(true);
+ expect(moneyRequestOptions.includes(CONST.IOU.TYPE.SUBMIT)).toBe(true);
});
it('it is an IOU report in submitted state even with pay expense permissions', () => {
@@ -605,9 +605,9 @@ describe('ReportUtils', () => {
stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
statusNum: CONST.REPORT.STATUS_NUM.SUBMITTED,
};
- const moneyRequestOptions = ReportUtils.getMoneyRequestOptions(report, null, [currentUserAccountID, participantsAccountIDs[0]]);
+ const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, null, [currentUserAccountID, participantsAccountIDs[0]]);
expect(moneyRequestOptions.length).toBe(1);
- expect(moneyRequestOptions.includes(CONST.IOU.TYPE.REQUEST)).toBe(true);
+ expect(moneyRequestOptions.includes(CONST.IOU.TYPE.SUBMIT)).toBe(true);
});
it("it is a submitted expense report in user's own policyExpenseChat and the policy has Instant Submit frequency", () => {
@@ -638,10 +638,10 @@ describe('ReportUtils', () => {
parentReportID: '101',
policyID: paidPolicy.id,
};
- const moneyRequestOptions = ReportUtils.getMoneyRequestOptions(report, paidPolicy, [currentUserAccountID, participantsAccountIDs[0]]);
+ const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, paidPolicy, [currentUserAccountID, participantsAccountIDs[0]]);
expect(moneyRequestOptions.length).toBe(2);
- expect(moneyRequestOptions.includes(CONST.IOU.TYPE.REQUEST)).toBe(true);
- expect(moneyRequestOptions.includes(CONST.IOU.TYPE.TRACK_EXPENSE)).toBe(true);
+ expect(moneyRequestOptions.includes(CONST.IOU.TYPE.SUBMIT)).toBe(true);
+ expect(moneyRequestOptions.includes(CONST.IOU.TYPE.TRACK)).toBe(true);
});
});
});
@@ -652,11 +652,11 @@ describe('ReportUtils', () => {
...LHNTestUtils.getFakeReport(),
type: CONST.REPORT.TYPE.CHAT,
};
- const moneyRequestOptions = ReportUtils.getMoneyRequestOptions(report, null, [currentUserAccountID, participantsAccountIDs[0]]);
+ const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, null, [currentUserAccountID, participantsAccountIDs[0]]);
expect(moneyRequestOptions.length).toBe(3);
expect(moneyRequestOptions.includes(CONST.IOU.TYPE.SPLIT)).toBe(true);
- expect(moneyRequestOptions.includes(CONST.IOU.TYPE.REQUEST)).toBe(true);
- expect(moneyRequestOptions.includes(CONST.IOU.TYPE.SEND)).toBe(true);
+ expect(moneyRequestOptions.includes(CONST.IOU.TYPE.SUBMIT)).toBe(true);
+ expect(moneyRequestOptions.includes(CONST.IOU.TYPE.PAY)).toBe(true);
});
it("it is user's own policy expense chat", () => {
@@ -665,11 +665,11 @@ describe('ReportUtils', () => {
chatType: CONST.REPORT.CHAT_TYPE.POLICY_EXPENSE_CHAT,
isOwnPolicyExpenseChat: true,
};
- const moneyRequestOptions = ReportUtils.getMoneyRequestOptions(report, null, [currentUserAccountID, ...participantsAccountIDs]);
+ const moneyRequestOptions = ReportUtils.temporary_getMoneyRequestOptions(report, null, [currentUserAccountID, ...participantsAccountIDs]);
expect(moneyRequestOptions.length).toBe(3);
- expect(moneyRequestOptions.includes(CONST.IOU.TYPE.REQUEST)).toBe(true);
+ expect(moneyRequestOptions.includes(CONST.IOU.TYPE.SUBMIT)).toBe(true);
expect(moneyRequestOptions.includes(CONST.IOU.TYPE.SPLIT)).toBe(true);
- expect(moneyRequestOptions.includes(CONST.IOU.TYPE.TRACK_EXPENSE)).toBe(true);
+ expect(moneyRequestOptions.includes(CONST.IOU.TYPE.TRACK)).toBe(true);
});
});
});