Skip to content

Commit 4a24621

Browse files
authored
Merge pull request Expensify#87359 from callstack-internal/perf-send-message-phase-2-1
refactor: PureReportActionItem, add SimpleMessageContent
2 parents 399750a + ad2b843 commit 4a24621

2 files changed

Lines changed: 118 additions & 47 deletions

File tree

src/pages/inbox/report/PureReportActionItem.tsx

Lines changed: 3 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@ import {getCleanedTagName, hasDynamicExternalWorkflow, isPolicyAdmin, isPolicyMe
8080
import {containsActionableFollowUps, parseFollowupsFromHtml} from '@libs/ReportActionFollowupUtils';
8181
import {
8282
extractLinksFromMessageHtml,
83-
getActionableCard3DSTransactionApprovalMessage,
8483
getActionableCardFraudAlertMessage,
8584
getActionableMentionWhisperMessage,
8685
getAddedApprovalRuleMessage,
@@ -99,16 +98,13 @@ import {
9998
getDefaultApproverUpdateMessage,
10099
getDeletedApprovalRuleMessage,
101100
getDeletedBudgetMessage,
102-
getDemotedFromWorkspaceMessage,
103-
getDismissedViolationMessageText,
104101
getForeignCurrencyDefaultTaxUpdateMessage,
105102
getForwardsToUpdateMessage,
106103
getIntegrationSyncFailedMessage,
107104
getInvoiceCompanyNameUpdateMessage,
108105
getInvoiceCompanyWebsiteUpdateMessage,
109106
getIOUReportIDFromReportActionPreview,
110107
getJoinRequestMessage,
111-
getMarkedReimbursedMessage,
112108
getOriginalMessage,
113109
getPlaidBalanceFailureMessage,
114110
getPolicyChangeLogAddEmployeeMessage,
@@ -124,7 +120,6 @@ import {
124120
getReimburserUpdateMessage,
125121
getRemovedCardFeedMessage,
126122
getRemovedConnectionMessage,
127-
getRemovedFromApprovalChainMessage,
128123
getRenamedAction,
129124
getRenamedCardFeedMessage,
130125
getReportActionHtml,
@@ -199,7 +194,6 @@ import {
199194
isPendingRemove,
200195
isReimbursementDeQueuedOrCanceledAction,
201196
isReimbursementQueuedAction,
202-
isRejectedAction,
203197
isRenamedAction,
204198
isResolvedConciergeCategoryOptions,
205199
isResolvedConciergeDescriptionOptions,
@@ -209,7 +203,6 @@ import {
209203
isTaskAction,
210204
isTrackExpenseAction as isTrackExpenseActionReportActionsUtils,
211205
isTripPreview,
212-
isUnapprovedAction,
213206
isWhisperActionTargetedToOthers,
214207
useTableReportViewActionRenderConditionals,
215208
} from '@libs/ReportActionsUtils';
@@ -218,10 +211,8 @@ import {
218211
canWriteInReport,
219212
chatIncludesConcierge,
220213
getChatListItemReportName,
221-
getDeletedTransactionMessage,
222214
getDisplayNamesWithTooltips,
223215
getMovedActionMessage,
224-
getPolicyChangeMessage,
225216
getWhisperDisplayNames,
226217
getWorkspaceNameUpdatedMessage,
227218
isArchivedNonExpenseReport,
@@ -259,6 +250,7 @@ import type * as OnyxTypes from '@src/types/onyx';
259250
import type {Errors} from '@src/types/onyx/OnyxCommon';
260251
import type {JoinWorkspaceResolution} from '@src/types/onyx/OriginalMessage';
261252
import {isEmptyObject, isEmptyValueObject} from '@src/types/utils/EmptyObject';
253+
import SimpleMessageContent, {isSimpleMessageAction} from './actionContents/SimpleMessageContent';
262254
import {RestrictedReadOnlyContextMenuActions} from './ContextMenu/ContextMenuActions';
263255
import MiniReportActionContextMenu from './ContextMenu/MiniReportActionContextMenu';
264256
import type {ContextMenuAnchor} from './ContextMenu/ReportActionContextMenu';
@@ -1457,12 +1449,10 @@ function PureReportActionItem({
14571449
children = <ReportActionItemBasicMessage message={translate('iou.paidWithExpensify')} />;
14581450
}
14591451
}
1460-
} else if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.MARKED_REIMBURSED)) {
1461-
children = <ReportActionItemBasicMessage message={getMarkedReimbursedMessage(translate, action)} />;
14621452
} else if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.REIMBURSED)) {
14631453
children = <ReportActionItemBasicMessage message={getReimbursedMessage(translate, action, report, currentUserAccountID)} />;
1464-
} else if (isUnapprovedAction(action)) {
1465-
children = <ReportActionItemBasicMessage message={translate('iou.unapproved')} />;
1454+
} else if (isSimpleMessageAction(action)) {
1455+
children = <SimpleMessageContent action={action} />;
14661456
} else if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.FORWARDED)) {
14671457
const wasAutoForwarded = getOriginalMessage(action)?.automaticAction ?? false;
14681458
if (wasAutoForwarded) {
@@ -1474,8 +1464,6 @@ function PureReportActionItem({
14741464
} else {
14751465
children = <ReportActionItemBasicMessage message={translate('iou.forwarded')} />;
14761466
}
1477-
} else if (isRejectedAction(action)) {
1478-
children = <ReportActionItemBasicMessage message={translate('iou.rejectedThisReport')} />;
14791467
} else if (action.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.CORPORATE_UPGRADE) {
14801468
children = <ReportActionItemBasicMessage message={translate('workspaceActions.upgradedWorkspace')} />;
14811469
} else if (action.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.CORPORATE_FORCE_UPGRADE) {
@@ -1486,24 +1474,6 @@ function PureReportActionItem({
14861474
);
14871475
} else if (action.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.TEAM_DOWNGRADE) {
14881476
children = <ReportActionItemBasicMessage message={translate('workspaceActions.downgradedWorkspace')} />;
1489-
} else if (action.actionName === CONST.REPORT.ACTIONS.TYPE.HOLD) {
1490-
children = <ReportActionItemBasicMessage message={translate('iou.heldExpense')} />;
1491-
} else if (action.actionName === CONST.REPORT.ACTIONS.TYPE.HOLD_COMMENT) {
1492-
children = <ReportActionItemBasicMessage message={getReportActionText(action)} />;
1493-
} else if (action.actionName === CONST.REPORT.ACTIONS.TYPE.UNHOLD) {
1494-
children = <ReportActionItemBasicMessage message={translate('iou.unheldExpense')} />;
1495-
} else if (action.actionName === CONST.REPORT.ACTIONS.TYPE.REJECTEDTRANSACTION_THREAD) {
1496-
children = <ReportActionItemBasicMessage message={translate('iou.reject.reportActions.rejectedExpense')} />;
1497-
} else if (action.actionName === CONST.REPORT.ACTIONS.TYPE.REJECTED_TRANSACTION_MARKASRESOLVED) {
1498-
children = <ReportActionItemBasicMessage message={translate('iou.reject.reportActions.markedAsResolved')} />;
1499-
} else if (action.actionName === CONST.REPORT.ACTIONS.TYPE.RETRACTED) {
1500-
children = <ReportActionItemBasicMessage message={translate('iou.retracted')} />;
1501-
} else if (action.actionName === CONST.REPORT.ACTIONS.TYPE.REOPENED) {
1502-
children = <ReportActionItemBasicMessage message={translate('iou.reopened')} />;
1503-
} else if (action.actionName === CONST.REPORT.ACTIONS.TYPE.CHANGE_POLICY) {
1504-
children = <ReportActionItemBasicMessage message={getPolicyChangeMessage(translate, action)} />;
1505-
} else if (action.actionName === CONST.REPORT.ACTIONS.TYPE.DELETED_TRANSACTION) {
1506-
children = <ReportActionItemBasicMessage message={getDeletedTransactionMessage(translate, action)} />;
15071477
} else if (action.actionName === CONST.REPORT.ACTIONS.TYPE.MOVED_TRANSACTION) {
15081478
children = (
15091479
<MovedTransactionAction
@@ -1533,18 +1503,12 @@ function PureReportActionItem({
15331503
originalReport={originalReport}
15341504
/>
15351505
);
1536-
} else if (action.actionName === CONST.REPORT.ACTIONS.TYPE.MERGED_WITH_CASH_TRANSACTION) {
1537-
children = <ReportActionItemBasicMessage message={translate('systemMessage.mergedWithCashTransaction')} />;
15381506
} else if (action.actionName === CONST.REPORT.ACTIONS.TYPE.CARD_FROZEN || action.actionName === CONST.REPORT.ACTIONS.TYPE.CARD_UNFROZEN) {
15391507
children = (
15401508
<ReportActionItemBasicMessage message="">
15411509
<RenderHTML html={`<comment><muted-text>${getReportActionHtml(action)}</muted-text></comment>`} />
15421510
</ReportActionItemBasicMessage>
15431511
);
1544-
} else if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.DISMISSED_VIOLATION)) {
1545-
children = <ReportActionItemBasicMessage message={getDismissedViolationMessageText(translate, getOriginalMessage(action))} />;
1546-
} else if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.RESOLVED_DUPLICATES)) {
1547-
children = <ReportActionItemBasicMessage message={translate('violations.resolvedDuplicates')} />;
15481512
} else if (action.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_NAME) {
15491513
children = <ReportActionItemBasicMessage message={getWorkspaceNameUpdatedMessage(translate, action)} />;
15501514
} else if (action.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_CURRENCY) {
@@ -1656,8 +1620,6 @@ function PureReportActionItem({
16561620
children = <ReportActionItemBasicMessage message={getDeletedApprovalRuleMessage(translate, action)} />;
16571621
} else if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_APPROVER_RULE)) {
16581622
children = <ReportActionItemBasicMessage message={getUpdatedApprovalRuleMessage(translate, action)} />;
1659-
} else if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.REMOVED_FROM_APPROVAL_CHAIN)) {
1660-
children = <ReportActionItemBasicMessage message={getRemovedFromApprovalChainMessage(translate, action)} />;
16611623
} else if (isActionableCardFraudAlert(action)) {
16621624
const message = getActionableCardFraudAlertMessage(translate, action, getLocalDateFromDatetime);
16631625

@@ -1690,8 +1652,6 @@ function PureReportActionItem({
16901652
);
16911653
} else if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.ROOM_CHANGE_LOG.LEAVE_ROOM) || isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.LEAVE_ROOM)) {
16921654
children = <ReportActionItemBasicMessage message={translate('report.actions.type.leftTheChat')} />;
1693-
} else if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.DEMOTED_FROM_WORKSPACE)) {
1694-
children = <ReportActionItemBasicMessage message={getDemotedFromWorkspaceMessage(translate, action)} />;
16951655
} else if (isCardIssuedAction(action)) {
16961656
const shouldNavigateToCardDetails = isPolicyAdmin(policy);
16971657
children = (
@@ -1714,8 +1674,6 @@ function PureReportActionItem({
17141674
);
17151675
} else if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.EXPORTED_TO_INTEGRATION)) {
17161676
children = <ExportIntegration action={action} />;
1717-
} else if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.RECEIPT_SCAN_FAILED)) {
1718-
children = <ReportActionItemBasicMessage message={translate('iou.receiptScanningFailed')} />;
17191677
} else if (isRenamedAction(action)) {
17201678
const message = getRenamedAction(translate, action, isExpenseReport(report));
17211679
children = <ReportActionItemBasicMessage message={message} />;
@@ -1826,8 +1784,6 @@ function PureReportActionItem({
18261784
<RenderHTML html={`<comment><muted-text>${getSettlementAccountLockedMessage(translate, action)}</muted-text></comment>`} />
18271785
</ReportActionItemBasicMessage>
18281786
);
1829-
} else if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.ACTIONABLE_CARD_3DS_TRANSACTION_APPROVAL)) {
1830-
children = <ReportActionItemBasicMessage message={getActionableCard3DSTransactionApprovalMessage(translate, action)} />;
18311787
} else {
18321788
const hasBeenFlagged =
18331789
![CONST.MODERATION.MODERATOR_DECISION_APPROVED, CONST.MODERATION.MODERATOR_DECISION_PENDING].some((item) => item === moderationDecision) && !isPendingRemove(action);
Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
import React from 'react';
2+
import useLocalize from '@hooks/useLocalize';
3+
import {
4+
getActionableCard3DSTransactionApprovalMessage,
5+
getDemotedFromWorkspaceMessage,
6+
getDismissedViolationMessageText,
7+
getMarkedReimbursedMessage,
8+
getOriginalMessage,
9+
getRemovedFromApprovalChainMessage,
10+
getReportActionText,
11+
isActionOfType,
12+
isRejectedAction,
13+
isUnapprovedAction,
14+
} from '@libs/ReportActionsUtils';
15+
import {getDeletedTransactionMessage, getPolicyChangeMessage} from '@libs/ReportUtils';
16+
import ReportActionItemBasicMessage from '@pages/inbox/report/ReportActionItemBasicMessage';
17+
import CONST from '@src/CONST';
18+
import type * as OnyxTypes from '@src/types/onyx';
19+
20+
type SimpleMessageContentProps = {
21+
action: OnyxTypes.ReportAction;
22+
};
23+
24+
const SIMPLE_MESSAGE_ACTION_TYPES = new Set<string>([
25+
CONST.REPORT.ACTIONS.TYPE.MARKED_REIMBURSED,
26+
CONST.REPORT.ACTIONS.TYPE.HOLD,
27+
CONST.REPORT.ACTIONS.TYPE.HOLD_COMMENT,
28+
CONST.REPORT.ACTIONS.TYPE.UNHOLD,
29+
CONST.REPORT.ACTIONS.TYPE.REJECTEDTRANSACTION_THREAD,
30+
CONST.REPORT.ACTIONS.TYPE.REJECTED_TRANSACTION_MARKASRESOLVED,
31+
CONST.REPORT.ACTIONS.TYPE.RETRACTED,
32+
CONST.REPORT.ACTIONS.TYPE.REOPENED,
33+
CONST.REPORT.ACTIONS.TYPE.CHANGE_POLICY,
34+
CONST.REPORT.ACTIONS.TYPE.DELETED_TRANSACTION,
35+
CONST.REPORT.ACTIONS.TYPE.MERGED_WITH_CASH_TRANSACTION,
36+
CONST.REPORT.ACTIONS.TYPE.DISMISSED_VIOLATION,
37+
CONST.REPORT.ACTIONS.TYPE.RESOLVED_DUPLICATES,
38+
CONST.REPORT.ACTIONS.TYPE.RECEIPT_SCAN_FAILED,
39+
CONST.REPORT.ACTIONS.TYPE.DEMOTED_FROM_WORKSPACE,
40+
CONST.REPORT.ACTIONS.TYPE.ACTIONABLE_CARD_3DS_TRANSACTION_APPROVAL,
41+
CONST.REPORT.ACTIONS.TYPE.REMOVED_FROM_APPROVAL_CHAIN,
42+
]);
43+
44+
function isSimpleMessageAction(action: OnyxTypes.ReportAction): boolean {
45+
return SIMPLE_MESSAGE_ACTION_TYPES.has(action.actionName) || isUnapprovedAction(action) || isRejectedAction(action);
46+
}
47+
48+
function SimpleMessageContent({action}: SimpleMessageContentProps) {
49+
const {translate} = useLocalize();
50+
51+
if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.MARKED_REIMBURSED)) {
52+
return <ReportActionItemBasicMessage message={getMarkedReimbursedMessage(translate, action)} />;
53+
}
54+
if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.HOLD)) {
55+
return <ReportActionItemBasicMessage message={translate('iou.heldExpense')} />;
56+
}
57+
if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.HOLD_COMMENT)) {
58+
return <ReportActionItemBasicMessage message={getReportActionText(action)} />;
59+
}
60+
if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.UNHOLD)) {
61+
return <ReportActionItemBasicMessage message={translate('iou.unheldExpense')} />;
62+
}
63+
if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.REJECTEDTRANSACTION_THREAD)) {
64+
return <ReportActionItemBasicMessage message={translate('iou.reject.reportActions.rejectedExpense')} />;
65+
}
66+
if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.REJECTED_TRANSACTION_MARKASRESOLVED)) {
67+
return <ReportActionItemBasicMessage message={translate('iou.reject.reportActions.markedAsResolved')} />;
68+
}
69+
if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.RETRACTED)) {
70+
return <ReportActionItemBasicMessage message={translate('iou.retracted')} />;
71+
}
72+
if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.REOPENED)) {
73+
return <ReportActionItemBasicMessage message={translate('iou.reopened')} />;
74+
}
75+
if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.CHANGE_POLICY)) {
76+
return <ReportActionItemBasicMessage message={getPolicyChangeMessage(translate, action)} />;
77+
}
78+
if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.DELETED_TRANSACTION)) {
79+
return <ReportActionItemBasicMessage message={getDeletedTransactionMessage(translate, action)} />;
80+
}
81+
if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.MERGED_WITH_CASH_TRANSACTION)) {
82+
return <ReportActionItemBasicMessage message={translate('systemMessage.mergedWithCashTransaction')} />;
83+
}
84+
if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.DISMISSED_VIOLATION)) {
85+
return <ReportActionItemBasicMessage message={getDismissedViolationMessageText(translate, getOriginalMessage(action))} />;
86+
}
87+
if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.RESOLVED_DUPLICATES)) {
88+
return <ReportActionItemBasicMessage message={translate('violations.resolvedDuplicates')} />;
89+
}
90+
if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.RECEIPT_SCAN_FAILED)) {
91+
return <ReportActionItemBasicMessage message={translate('iou.receiptScanningFailed')} />;
92+
}
93+
if (isUnapprovedAction(action)) {
94+
return <ReportActionItemBasicMessage message={translate('iou.unapproved')} />;
95+
}
96+
if (isRejectedAction(action)) {
97+
return <ReportActionItemBasicMessage message={translate('iou.rejectedThisReport')} />;
98+
}
99+
if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.DEMOTED_FROM_WORKSPACE)) {
100+
return <ReportActionItemBasicMessage message={getDemotedFromWorkspaceMessage(translate, action)} />;
101+
}
102+
if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.ACTIONABLE_CARD_3DS_TRANSACTION_APPROVAL)) {
103+
return <ReportActionItemBasicMessage message={getActionableCard3DSTransactionApprovalMessage(translate, action)} />;
104+
}
105+
if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.REMOVED_FROM_APPROVAL_CHAIN)) {
106+
return <ReportActionItemBasicMessage message={getRemovedFromApprovalChainMessage(translate, action)} />;
107+
}
108+
109+
return null;
110+
}
111+
112+
SimpleMessageContent.displayName = 'SimpleMessageContent';
113+
114+
export default SimpleMessageContent;
115+
export {isSimpleMessageAction};

0 commit comments

Comments
 (0)