Skip to content

Commit 256cb44

Browse files
authored
Merge pull request #58674 from heekinho/add-ach-cancelled-action
Add ach cancelled action
2 parents 9e6f6e2 + c5c47f2 commit 256cb44

9 files changed

+86
-56
lines changed

src/CONST.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1205,7 +1205,7 @@ const CONST = {
12051205
OUTDATED_BANK_ACCOUNT: 'OUTDATEDBANKACCOUNT', // OldDot Action
12061206
REIMBURSED: 'REIMBURSED',
12071207
REIMBURSEMENT_ACH_BOUNCE: 'REIMBURSEMENTACHBOUNCE', // OldDot Action
1208-
REIMBURSEMENT_ACH_CANCELLED: 'REIMBURSEMENTACHCANCELLED', // OldDot Action
1208+
REIMBURSEMENT_ACH_CANCELED: 'REIMBURSEMENTACHCANCELED', // OldDot Action
12091209
REIMBURSEMENT_ACCOUNT_CHANGED: 'REIMBURSEMENTACCOUNTCHANGED', // OldDot Action
12101210
REIMBURSEMENT_DELAYED: 'REIMBURSEMENTDELAYED', // OldDot Action
12111211
REIMBURSEMENT_QUEUED: 'REIMBURSEMENTQUEUED',
@@ -1325,6 +1325,7 @@ const CONST = {
13251325
},
13261326
CANCEL_PAYMENT_REASONS: {
13271327
ADMIN: 'CANCEL_REASON_ADMIN',
1328+
USER: 'CANCEL_REASON_USER',
13281329
},
13291330
ACTIONABLE_MENTION_WHISPER_RESOLUTION: {
13301331
INVITE: 'invited',

src/libs/OptionsListUtils.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ import {
6161
isMoneyRequestAction,
6262
isOldDotReportAction,
6363
isPendingRemove,
64-
isReimbursementDeQueuedAction,
64+
isReimbursementDeQueuedOrCanceledAction,
6565
isReimbursementQueuedAction,
6666
isReportPreviewAction,
6767
isTaskAction,
@@ -86,7 +86,7 @@ import {
8686
getMoneyRequestSpendBreakdown,
8787
getParticipantsAccountIDsForDisplay,
8888
getPolicyName,
89-
getReimbursementDeQueuedActionMessage,
89+
getReimbursementDeQueuedOrCanceledActionMessage,
9090
getReimbursementQueuedActionMessage,
9191
getRejectedReportMessage,
9292
getReportAutomaticallyApprovedMessage,
@@ -705,8 +705,8 @@ function getLastMessageTextForReport(report: OnyxEntry<Report>, lastActorDetails
705705
lastMessageTextFromReport = formatReportLastMessageText(reportPreviewMessage);
706706
} else if (isReimbursementQueuedAction(lastReportAction)) {
707707
lastMessageTextFromReport = getReimbursementQueuedActionMessage({reportAction: lastReportAction, reportOrID: report});
708-
} else if (isReimbursementDeQueuedAction(lastReportAction)) {
709-
lastMessageTextFromReport = getReimbursementDeQueuedActionMessage(lastReportAction, report, true);
708+
} else if (isReimbursementDeQueuedOrCanceledAction(lastReportAction)) {
709+
lastMessageTextFromReport = getReimbursementDeQueuedOrCanceledActionMessage(lastReportAction, report, true);
710710
} else if (isDeletedParentAction(lastReportAction) && reportUtilsIsChatReport(report)) {
711711
lastMessageTextFromReport = getDeletedParentActionMessageForChatReport(lastReportAction);
712712
} else if (isPendingRemove(lastReportAction) && report?.reportID && isThreadParentMessage(lastReportAction, report.reportID)) {

src/libs/ReportActionsUtils.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -349,10 +349,20 @@ function isLeavePolicyAction(reportAction: OnyxEntry<ReportAction>): reportActio
349349
return isActionOfType(reportAction, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.LEAVE_POLICY);
350350
}
351351

352+
function isReimbursementCanceledAction(reportAction: OnyxEntry<ReportAction>): reportAction is ReportAction<typeof CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENT_ACH_CANCELED> {
353+
return isActionOfType(reportAction, CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENT_ACH_CANCELED);
354+
}
355+
352356
function isReimbursementDeQueuedAction(reportAction: OnyxEntry<ReportAction>): reportAction is ReportAction<typeof CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENT_DEQUEUED> {
353357
return isActionOfType(reportAction, CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENT_DEQUEUED);
354358
}
355359

360+
function isReimbursementDeQueuedOrCanceledAction(
361+
reportAction: OnyxEntry<ReportAction>,
362+
): reportAction is ReportAction<typeof CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENT_DEQUEUED | typeof CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENT_ACH_CANCELED> {
363+
return isReimbursementDeQueuedAction(reportAction) || isReimbursementCanceledAction(reportAction);
364+
}
365+
356366
function isClosedAction(reportAction: OnyxEntry<ReportAction>): reportAction is ReportAction<typeof CONST.REPORT.ACTIONS.TYPE.CLOSED> {
357367
return isActionOfType(reportAction, CONST.REPORT.ACTIONS.TYPE.CLOSED);
358368
}
@@ -1379,7 +1389,7 @@ function isOldDotReportAction(action: ReportAction | OldDotReportAction) {
13791389
CONST.REPORT.ACTIONS.TYPE.MARK_REIMBURSED_FROM_INTEGRATION,
13801390
CONST.REPORT.ACTIONS.TYPE.OUTDATED_BANK_ACCOUNT,
13811391
CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENT_ACH_BOUNCE,
1382-
CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENT_ACH_CANCELLED,
1392+
CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENT_ACH_CANCELED,
13831393
CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENT_ACCOUNT_CHANGED,
13841394
CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENT_DELAYED,
13851395
CONST.REPORT.ACTIONS.TYPE.SELECTED_FOR_RANDOM_AUDIT,
@@ -1449,7 +1459,7 @@ function getMessageOfOldDotReportAction(oldDotAction: PartialReportAction | OldD
14491459
return translateLocal('report.actions.type.outdatedBankAccount');
14501460
case CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENT_ACH_BOUNCE:
14511461
return translateLocal('report.actions.type.reimbursementACHBounce');
1452-
case CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENT_ACH_CANCELLED:
1462+
case CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENT_ACH_CANCELED:
14531463
return translateLocal('report.actions.type.reimbursementACHCancelled');
14541464
case CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENT_ACCOUNT_CHANGED:
14551465
return translateLocal('report.actions.type.reimbursementAccountChanged');
@@ -2396,7 +2406,9 @@ export {
23962406
isPayAction,
23972407
isPendingRemove,
23982408
isPolicyChangeLogAction,
2409+
isReimbursementCanceledAction,
23992410
isReimbursementDeQueuedAction,
2411+
isReimbursementDeQueuedOrCanceledAction,
24002412
isReimbursementQueuedAction,
24012413
isRenamedAction,
24022414
isReportActionAttachment,

src/libs/ReportUtils.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3051,10 +3051,10 @@ function getReimbursementQueuedActionMessage({
30513051
}
30523052

30533053
/**
3054-
* Returns the preview message for `REIMBURSEMENT_DEQUEUED` action
3054+
* Returns the preview message for `REIMBURSEMENT_DEQUEUED` or `REIMBURSEMENT_ACH_CANCELED` action
30553055
*/
3056-
function getReimbursementDeQueuedActionMessage(
3057-
reportAction: OnyxEntry<ReportAction<typeof CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENT_DEQUEUED>>,
3056+
function getReimbursementDeQueuedOrCanceledActionMessage(
3057+
reportAction: OnyxEntry<ReportAction<typeof CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENT_DEQUEUED | typeof CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENT_ACH_CANCELED>>,
30583058
reportOrID: OnyxEntry<Report> | string | SearchReport,
30593059
isLHNPreview = false,
30603060
): string {
@@ -3063,7 +3063,7 @@ function getReimbursementDeQueuedActionMessage(
30633063
const amount = originalMessage?.amount;
30643064
const currency = originalMessage?.currency;
30653065
const formattedAmount = convertToDisplayString(amount, currency);
3066-
if (originalMessage?.cancellationReason === CONST.REPORT.CANCEL_PAYMENT_REASONS.ADMIN) {
3066+
if (originalMessage?.cancellationReason === CONST.REPORT.CANCEL_PAYMENT_REASONS.ADMIN || originalMessage?.cancellationReason === CONST.REPORT.CANCEL_PAYMENT_REASONS.USER) {
30673067
const payerOrApproverName = report?.managerID === currentUserAccountID || !isLHNPreview ? '' : getDisplayNameForParticipant({accountID: report?.managerID, shouldUseShortForm: true});
30683068
return translateLocal('iou.adminCanceledRequest', {manager: payerOrApproverName, amount: formattedAmount});
30693069
}
@@ -9616,7 +9616,7 @@ export {
96169616
getPolicyExpenseChatName,
96179617
getPolicyName,
96189618
getPolicyType,
9619-
getReimbursementDeQueuedActionMessage,
9619+
getReimbursementDeQueuedOrCanceledActionMessage,
96209620
getReimbursementQueuedActionMessage,
96219621
getReportActionActorAccountID,
96229622
getReportDescription,

src/pages/home/report/ContextMenu/ContextMenuActions.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ import {
6161
isModifiedExpenseAction,
6262
isMoneyRequestAction,
6363
isOldDotReportAction,
64-
isReimbursementDeQueuedAction,
64+
isReimbursementDeQueuedOrCanceledAction,
6565
isReimbursementQueuedAction,
6666
isRenamedAction,
6767
isReportActionAttachment,
@@ -87,7 +87,7 @@ import {
8787
getIOUSubmittedMessage,
8888
getIOUUnapprovedMessage,
8989
getOriginalReportID,
90-
getReimbursementDeQueuedActionMessage,
90+
getReimbursementDeQueuedOrCanceledActionMessage,
9191
getReimbursementQueuedActionMessage,
9292
getRejectedReportMessage,
9393
getReportAutomaticallyApprovedMessage,
@@ -490,9 +490,9 @@ const ContextMenuActions: ContextMenuAction[] = [
490490
} else if (isModifiedExpenseAction(reportAction)) {
491491
const modifyExpenseMessage = ModifiedExpenseMessage.getForReportAction({reportOrID: reportID, reportAction});
492492
Clipboard.setString(modifyExpenseMessage);
493-
} else if (isReimbursementDeQueuedAction(reportAction)) {
493+
} else if (isReimbursementDeQueuedOrCanceledAction(reportAction)) {
494494
const {expenseReportID} = getOriginalMessage(reportAction) ?? {};
495-
const displayMessage = getReimbursementDeQueuedActionMessage(reportAction, expenseReportID);
495+
const displayMessage = getReimbursementDeQueuedOrCanceledActionMessage(reportAction, expenseReportID);
496496
Clipboard.setString(displayMessage);
497497
} else if (isMoneyRequestAction(reportAction)) {
498498
const displayMessage = getIOUReportActionDisplayMessage(reportAction, transaction);

src/pages/home/report/PureReportActionItem.tsx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ import {
9393
isMessageDeleted,
9494
isMoneyRequestAction,
9595
isPendingRemove,
96-
isReimbursementDeQueuedAction,
96+
isReimbursementDeQueuedOrCanceledAction,
9797
isReimbursementQueuedAction,
9898
isRenamedAction,
9999
isTagModificationAction,
@@ -291,8 +291,8 @@ type PureReportActionItemProps = {
291291
/** What missing payment method does this report action indicate, if any? */
292292
missingPaymentMethod?: MissingPaymentMethod | undefined;
293293

294-
/** Returns the preview message for `REIMBURSEMENT_DEQUEUED` action */
295-
reimbursementDeQueuedActionMessage?: string;
294+
/** Returns the preview message for `REIMBURSEMENT_DEQUEUED` or `REIMBURSEMENT_ACH_CANCELED` action */
295+
reimbursementDeQueuedOrCanceledActionMessage?: string;
296296

297297
/** The report action message when expense has been modified. */
298298
modifiedExpenseMessage?: string;
@@ -368,7 +368,7 @@ function PureReportActionItem({
368368
isClosedExpenseReportWithNoExpenses,
369369
isCurrentUserTheOnlyParticipant = () => false,
370370
missingPaymentMethod,
371-
reimbursementDeQueuedActionMessage = '',
371+
reimbursementDeQueuedOrCanceledActionMessage = '',
372372
modifiedExpenseMessage = '',
373373
getTransactionsWithReceipts = () => [],
374374
clearError = () => {},
@@ -866,8 +866,8 @@ function PureReportActionItem({
866866
</>
867867
</ReportActionItemBasicMessage>
868868
);
869-
} else if (isReimbursementDeQueuedAction(action)) {
870-
children = <ReportActionItemBasicMessage message={reimbursementDeQueuedActionMessage} />;
869+
} else if (isReimbursementDeQueuedOrCanceledAction(action)) {
870+
children = <ReportActionItemBasicMessage message={reimbursementDeQueuedOrCanceledActionMessage} />;
871871
} else if (action.actionName === CONST.REPORT.ACTIONS.TYPE.MODIFIED_EXPENSE) {
872872
children = <ReportActionItemBasicMessage message={modifiedExpenseMessage} />;
873873
} else if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.SUBMITTED) || isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.SUBMITTED_AND_CLOSED)) {
@@ -1380,7 +1380,7 @@ export default memo(PureReportActionItem, (prevProps, nextProps) => {
13801380
prevProps.isChronosReport === nextProps.isChronosReport &&
13811381
prevProps.isClosedExpenseReportWithNoExpenses === nextProps.isClosedExpenseReportWithNoExpenses &&
13821382
lodashIsEqual(prevProps.missingPaymentMethod, nextProps.missingPaymentMethod) &&
1383-
prevProps.reimbursementDeQueuedActionMessage === nextProps.reimbursementDeQueuedActionMessage &&
1383+
prevProps.reimbursementDeQueuedOrCanceledActionMessage === nextProps.reimbursementDeQueuedOrCanceledActionMessage &&
13841384
prevProps.modifiedExpenseMessage === nextProps.modifiedExpenseMessage &&
13851385
prevProps.userBillingFundID === nextProps.userBillingFundID &&
13861386
prevProps.reportAutomaticallyForwardedMessage === nextProps.reportAutomaticallyForwardedMessage

src/pages/home/report/ReportActionItem.tsx

Lines changed: 46 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,29 @@ import {useOnyx} from 'react-native-onyx';
33
import type {OnyxEntry} from 'react-native-onyx';
44
import {useBlockedFromConcierge, usePersonalDetails} from '@components/OnyxProvider';
55
import ModifiedExpenseMessage from '@libs/ModifiedExpenseMessage';
6-
import * as ReportActionsUtils from '@libs/ReportActionsUtils';
7-
import * as ReportUtils from '@libs/ReportUtils';
8-
import * as Report from '@userActions/Report';
9-
import * as ReportActions from '@userActions/ReportActions';
10-
import * as Transaction from '@userActions/Transaction';
6+
import {getIOUReportIDFromReportActionPreview, getOriginalMessage, isMoneyRequestAction} from '@libs/ReportActionsUtils';
7+
import {
8+
chatIncludesChronosWithID,
9+
createDraftTransactionAndNavigateToParticipantSelector,
10+
getIndicatedMissingPaymentMethod,
11+
getOriginalReportID,
12+
getReimbursementDeQueuedOrCanceledActionMessage,
13+
getReportAutomaticallyForwardedMessage,
14+
getTransactionsWithReceipts,
15+
isArchivedNonExpenseReportWithID,
16+
isChatThread,
17+
isClosedExpenseReportWithNoExpenses,
18+
isCurrentUserTheOnlyParticipant,
19+
} from '@libs/ReportUtils';
20+
import {
21+
deleteReportActionDraft,
22+
dismissTrackExpenseActionableWhisper,
23+
resolveActionableMentionWhisper,
24+
resolveActionableReportMentionWhisper,
25+
toggleEmojiReaction,
26+
} from '@userActions/Report';
27+
import {clearAllRelatedReportActionErrors} from '@userActions/ReportActions';
28+
import {clearError} from '@userActions/Transaction';
1129
import type CONST from '@src/CONST';
1230
import ONYXKEYS from '@src/ONYXKEYS';
1331
import type {ReportAction} from '@src/types/onyx';
@@ -17,20 +35,19 @@ import PureReportActionItem from './PureReportActionItem';
1735
function ReportActionItem({action, report, ...props}: PureReportActionItemProps) {
1836
const reportID = report?.reportID;
1937
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
20-
const originalReportID = useMemo(() => ReportUtils.getOriginalReportID(reportID, action), [reportID, action]);
38+
const originalReportID = useMemo(() => getOriginalReportID(reportID, action), [reportID, action]);
2139
const [draftMessage] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT_ACTIONS_DRAFTS}${originalReportID}`, {
2240
selector: (draftMessagesForReport) => {
2341
const matchingDraftMessage = draftMessagesForReport?.[action.reportActionID];
2442
return typeof matchingDraftMessage === 'string' ? matchingDraftMessage : matchingDraftMessage?.message;
2543
},
2644
});
27-
const [iouReport] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${ReportActionsUtils.getIOUReportIDFromReportActionPreview(action)}`);
45+
const [iouReport] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT}${getIOUReportIDFromReportActionPreview(action)}`);
2846
const [emojiReactions] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT_ACTIONS_REACTIONS}${action.reportActionID}`);
2947
const [userWallet] = useOnyx(ONYXKEYS.USER_WALLET);
30-
const [linkedTransactionRouteError] = useOnyx(
31-
`${ONYXKEYS.COLLECTION.TRANSACTION}${ReportActionsUtils.isMoneyRequestAction(action) && ReportActionsUtils.getOriginalMessage(action)?.IOUTransactionID}`,
32-
{selector: (transaction) => transaction?.errorFields?.route ?? null},
33-
);
48+
const [linkedTransactionRouteError] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION}${isMoneyRequestAction(action) && getOriginalMessage(action)?.IOUTransactionID}`, {
49+
selector: (transaction) => transaction?.errorFields?.route ?? null,
50+
});
3451
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- This is needed to prevent the app from crashing when the app is using imported state.
3552
const [reportNameValuePairs] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT_NAME_VALUE_PAIRS}${report?.reportID || undefined}`);
3653

@@ -41,8 +58,8 @@ function ReportActionItem({action, report, ...props}: PureReportActionItemProps)
4158
const personalDetails = usePersonalDetails();
4259
const blockedFromConcierge = useBlockedFromConcierge();
4360
const [userBillingFundID] = useOnyx(ONYXKEYS.NVP_BILLING_FUND_ID);
44-
const linkedReport = ReportUtils.isChatThread(report) ? parentReport : report;
45-
const missingPaymentMethod = ReportUtils.getIndicatedMissingPaymentMethod(userWallet, linkedReport?.reportID, action);
61+
const linkedReport = isChatThread(report) ? parentReport : report;
62+
const missingPaymentMethod = getIndicatedMissingPaymentMethod(userWallet, linkedReport?.reportID, action);
4663

4764
return (
4865
<PureReportActionItem
@@ -60,27 +77,27 @@ function ReportActionItem({action, report, ...props}: PureReportActionItemProps)
6077
personalDetails={personalDetails}
6178
blockedFromConcierge={blockedFromConcierge}
6279
originalReportID={originalReportID}
63-
deleteReportActionDraft={Report.deleteReportActionDraft}
64-
isArchivedRoom={ReportUtils.isArchivedNonExpenseReportWithID(originalReportID)}
65-
isChronosReport={ReportUtils.chatIncludesChronosWithID(originalReportID)}
66-
toggleEmojiReaction={Report.toggleEmojiReaction}
67-
createDraftTransactionAndNavigateToParticipantSelector={ReportUtils.createDraftTransactionAndNavigateToParticipantSelector}
68-
resolveActionableReportMentionWhisper={Report.resolveActionableReportMentionWhisper}
69-
resolveActionableMentionWhisper={Report.resolveActionableMentionWhisper}
70-
isClosedExpenseReportWithNoExpenses={ReportUtils.isClosedExpenseReportWithNoExpenses(iouReport)}
71-
isCurrentUserTheOnlyParticipant={ReportUtils.isCurrentUserTheOnlyParticipant}
80+
deleteReportActionDraft={deleteReportActionDraft}
81+
isArchivedRoom={isArchivedNonExpenseReportWithID(originalReportID)}
82+
isChronosReport={chatIncludesChronosWithID(originalReportID)}
83+
toggleEmojiReaction={toggleEmojiReaction}
84+
createDraftTransactionAndNavigateToParticipantSelector={createDraftTransactionAndNavigateToParticipantSelector}
85+
resolveActionableReportMentionWhisper={resolveActionableReportMentionWhisper}
86+
resolveActionableMentionWhisper={resolveActionableMentionWhisper}
87+
isClosedExpenseReportWithNoExpenses={isClosedExpenseReportWithNoExpenses(iouReport)}
88+
isCurrentUserTheOnlyParticipant={isCurrentUserTheOnlyParticipant}
7289
missingPaymentMethod={missingPaymentMethod}
73-
reimbursementDeQueuedActionMessage={ReportUtils.getReimbursementDeQueuedActionMessage(
74-
action as OnyxEntry<ReportAction<typeof CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENT_DEQUEUED>>,
90+
reimbursementDeQueuedOrCanceledActionMessage={getReimbursementDeQueuedOrCanceledActionMessage(
91+
action as OnyxEntry<ReportAction<typeof CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENT_DEQUEUED | typeof CONST.REPORT.ACTIONS.TYPE.REIMBURSEMENT_ACH_CANCELED>>,
7592
report,
7693
)}
7794
modifiedExpenseMessage={ModifiedExpenseMessage.getForReportAction({reportOrID: reportID, reportAction: action})}
78-
getTransactionsWithReceipts={ReportUtils.getTransactionsWithReceipts}
79-
clearError={Transaction.clearError}
80-
clearAllRelatedReportActionErrors={ReportActions.clearAllRelatedReportActionErrors}
81-
dismissTrackExpenseActionableWhisper={Report.dismissTrackExpenseActionableWhisper}
95+
getTransactionsWithReceipts={getTransactionsWithReceipts}
96+
clearError={clearError}
97+
clearAllRelatedReportActionErrors={clearAllRelatedReportActionErrors}
98+
dismissTrackExpenseActionableWhisper={dismissTrackExpenseActionableWhisper}
8299
userBillingFundID={userBillingFundID}
83-
reportAutomaticallyForwardedMessage={ReportUtils.getReportAutomaticallyForwardedMessage(action as ReportAction<typeof CONST.REPORT.ACTIONS.TYPE.FORWARDED>, reportID)}
100+
reportAutomaticallyForwardedMessage={getReportAutomaticallyForwardedMessage(action as ReportAction<typeof CONST.REPORT.ACTIONS.TYPE.FORWARDED>, reportID)}
84101
/>
85102
);
86103
}

0 commit comments

Comments
 (0)