Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion src/CONST/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7937,7 +7937,6 @@ const CONST = {
DEBUG: 'ContextMenu-Debug',
DELETE: 'ContextMenu-Delete',
MENU: 'ContextMenu-Menu',
EXPLAIN: 'ContextMenu-Explain',
},
MORE_MENU: {
MORE_BUTTON: 'MoreMenu-MoreButton',
Expand Down
7 changes: 2 additions & 5 deletions src/components/RenderHTML.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,13 @@ type RenderHTMLProps = {

/** Callback to handle link press */
onLinkPress?: LinkPressHandler;

/** Whether the rendered text should be selectable */
isSelectable?: boolean;
};

// We are using the explicit composite architecture for performance gains.
// Configuration for RenderHTML is handled in a top-level component providing
// context to RenderHTMLSource components. See https://git.io/JRcZb
// The provider is available at src/components/HTMLEngineProvider/
function RenderHTML({html: htmlParam, onLinkPress, isSelectable}: RenderHTMLProps) {
function RenderHTML({html: htmlParam, onLinkPress}: RenderHTMLProps) {
const {windowWidth} = useWindowDimensions();
const html = useMemo(() => {
return (
Expand Down Expand Up @@ -52,7 +49,7 @@ function RenderHTML({html: htmlParam, onLinkPress, isSelectable}: RenderHTMLProp

return onLinkPress ? (
<RenderHTMLConfigProvider
defaultTextProps={{selectable: isSelectable !== undefined ? isSelectable : true, allowFontScaling: false}}
defaultTextProps={{selectable: true, allowFontScaling: false}}
renderersProps={renderersProps}
>
{htmlSource}
Expand Down
3 changes: 0 additions & 3 deletions src/languages/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -903,8 +903,6 @@ const translations: TranslationDeepObject<typeof en> = {
return `Sind Sie sicher, dass Sie diesen ${type} löschen möchten?`;
},
onlyVisible: 'Nur sichtbar für',
explain: 'Erklären',
explainMessage: 'Bitte erkläre mir das.',
replyInThread: 'Im Thread antworten',
joinThread: 'Thread beitreten',
leaveThread: 'Thread verlassen',
Expand Down Expand Up @@ -1499,7 +1497,6 @@ const translations: TranslationDeepObject<typeof en> = {
splitByDate: 'Nach Datum aufteilen',
routedDueToDEW: ({to}: RoutedDueToDEWParams) => `bericht aufgrund eines benutzerdefinierten Genehmigungsworkflows an ${to} weitergeleitet`,
timeTracking: {hoursAt: (hours: number, rate: string) => `${hours} ${hours === 1 ? 'Stunde' : 'Stunden'} @ ${rate} / Stunde`, hrs: 'Std.'},
AskToExplain: '. <a href="new-expensify://concierge/explain"><strong>Erklären</strong></a> &#x2728;',
},
transactionMerge: {
listPage: {
Expand Down
3 changes: 0 additions & 3 deletions src/languages/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -889,8 +889,6 @@ const translations = {
return `Are you sure you want to delete this ${type}?`;
},
onlyVisible: 'Only visible to',
explain: 'Explain',
explainMessage: 'Please explain this to me.',
replyInThread: 'Reply in thread',
joinThread: 'Join thread',
leaveThread: 'Leave thread',
Expand Down Expand Up @@ -1483,7 +1481,6 @@ const translations = {
hoursAt: (hours: number, rate: string) => `${hours} ${hours === 1 ? 'hour' : 'hours'} @ ${rate} / hour`,
hrs: 'hrs',
},
AskToExplain: '. <a href="new-expensify://concierge/explain"><strong>Explain</strong></a> &#x2728;',
},
transactionMerge: {
listPage: {
Expand Down
3 changes: 0 additions & 3 deletions src/languages/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -619,8 +619,6 @@ const translations: TranslationDeepObject<typeof en> = {
return `¿Estás seguro de que quieres eliminar este ${type}?`;
},
onlyVisible: 'Visible sólo para',
explain: 'Explicar',
explainMessage: 'Por favor explícame esto.',
replyInThread: 'Responder en el hilo',
joinThread: 'Unirse al hilo',
leaveThread: 'Dejar hilo',
Expand Down Expand Up @@ -1213,7 +1211,6 @@ const translations: TranslationDeepObject<typeof en> = {
hoursAt: (hours: number, rate: string) => `${hours} ${hours === 1 ? 'hora' : 'horas'} a ${rate} / hora`,
hrs: 'h',
},
AskToExplain: '. <a href="new-expensify://concierge/explain"><strong>Explicar</strong></a> &#x2728;',
},
transactionMerge: {
listPage: {
Expand Down
3 changes: 0 additions & 3 deletions src/languages/fr.ts
Original file line number Diff line number Diff line change
Expand Up @@ -905,8 +905,6 @@ const translations: TranslationDeepObject<typeof en> = {
return `Voulez-vous vraiment supprimer ce(tte) ${type} ?`;
},
onlyVisible: 'Visible uniquement pour',
explain: 'Expliquer',
explainMessage: 'Veuillez m’expliquer cela.',
replyInThread: 'Répondre dans le fil',
joinThread: 'Rejoindre la discussion',
leaveThread: 'Quitter la discussion',
Expand Down Expand Up @@ -1500,7 +1498,6 @@ const translations: TranslationDeepObject<typeof en> = {
splitByDate: 'Scinder par date',
routedDueToDEW: ({to}: RoutedDueToDEWParams) => `rapport acheminé vers ${to} en raison d'un workflow d'approbation personnalisé`,
timeTracking: {hoursAt: (hours: number, rate: string) => `${hours} ${hours === 1 ? 'heure' : 'heures'} @ ${rate} / heure`, hrs: 'h'},
AskToExplain: '. <a href="new-expensify://concierge/explain"><strong>Expliquer</strong></a> &#x2728;',
},
transactionMerge: {
listPage: {
Expand Down
3 changes: 0 additions & 3 deletions src/languages/it.ts
Original file line number Diff line number Diff line change
Expand Up @@ -903,8 +903,6 @@ const translations: TranslationDeepObject<typeof en> = {
return `Sei sicuro di voler eliminare questo ${type}?`;
},
onlyVisible: 'Visibile solo a',
explain: 'Spiega',
explainMessage: 'Per favore, spiegami questo.',
replyInThread: 'Rispondi nel thread',
joinThread: 'Unisciti al thread',
leaveThread: 'Abbandona conversazione',
Expand Down Expand Up @@ -1494,7 +1492,6 @@ const translations: TranslationDeepObject<typeof en> = {
splitByDate: 'Dividi per data',
routedDueToDEW: ({to}: RoutedDueToDEWParams) => `rapporto inoltrato a ${to} a causa del flusso di lavoro di approvazione personalizzato`,
timeTracking: {hoursAt: (hours: number, rate: string) => `${hours} ${hours === 1 ? 'ora' : 'ore'} @ ${rate} / ora`, hrs: 'ore'},
AskToExplain: '. <a href="new-expensify://concierge/explain"><strong>Spiegare</strong></a> &#x2728;',
},
transactionMerge: {
listPage: {
Expand Down
3 changes: 0 additions & 3 deletions src/languages/ja.ts
Original file line number Diff line number Diff line change
Expand Up @@ -901,8 +901,6 @@ const translations: TranslationDeepObject<typeof en> = {
return `この${type}を削除してもよろしいですか?`;
},
onlyVisible: 'にのみ表示',
explain: '説明する',
explainMessage: 'これを説明してください。',
replyInThread: 'スレッドに返信',
joinThread: 'スレッドに参加',
leaveThread: 'スレッドから退出',
Expand Down Expand Up @@ -1493,7 +1491,6 @@ const translations: TranslationDeepObject<typeof en> = {
splitByDate: '日付で分割',
routedDueToDEW: ({to}: RoutedDueToDEWParams) => `カスタム承認ワークフローにより、${to} 宛にルーティングされたレポート`,
timeTracking: {hoursAt: (hours: number, rate: string) => `${hours} ${hours === 1 ? '時間' : '時間'} @ ${rate} / 時間`, hrs: '時間'},
AskToExplain: '. <a href="new-expensify://concierge/explain"><strong>説明する</strong></a> &#x2728;',
},
transactionMerge: {
listPage: {
Expand Down
3 changes: 0 additions & 3 deletions src/languages/nl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -903,8 +903,6 @@ const translations: TranslationDeepObject<typeof en> = {
return `Weet je zeker dat je dit ${type} wilt verwijderen?`;
},
onlyVisible: 'Alleen zichtbaar voor',
explain: 'Uitleggen',
explainMessage: 'Leg dit alstublieft aan mij uit.',
replyInThread: 'Antwoord in thread',
joinThread: 'Deelnemen aan thread',
leaveThread: 'Thread verlaten',
Expand Down Expand Up @@ -1493,7 +1491,6 @@ const translations: TranslationDeepObject<typeof en> = {
splitByDate: 'Splitsen op datum',
routedDueToDEW: ({to}: RoutedDueToDEWParams) => `rapport doorgestuurd naar ${to} vanwege aangepaste goedkeuringsworkflow`,
timeTracking: {hoursAt: (hours: number, rate: string) => `${hours} ${hours === 1 ? 'uur' : 'uren'} @ ${rate} / uur`, hrs: 'uur'},
AskToExplain: '. <a href="new-expensify://concierge/explain"><strong>Uitleggen</strong></a> &#x2728;',
},
transactionMerge: {
listPage: {
Expand Down
3 changes: 0 additions & 3 deletions src/languages/pl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -902,8 +902,6 @@ const translations: TranslationDeepObject<typeof en> = {
return `Czy na pewno chcesz usunąć ten element typu ${type}?`;
},
onlyVisible: 'Widoczne tylko dla',
explain: 'Wyjaśnij',
explainMessage: 'Proszę, wyjaśnij mi to.',
replyInThread: 'Odpowiedz w wątku',
joinThread: 'Dołącz do wątku',
leaveThread: 'Opuść wątek',
Expand Down Expand Up @@ -1491,7 +1489,6 @@ const translations: TranslationDeepObject<typeof en> = {
splitByDate: 'Podziel według daty',
routedDueToDEW: ({to}: RoutedDueToDEWParams) => `raport przekazany do ${to} z powodu niestandardowego procesu zatwierdzania`,
timeTracking: {hoursAt: (hours: number, rate: string) => `${hours} ${hours === 1 ? 'godzina' : 'godziny'} @ ${rate} / godzinę`, hrs: 'godz.'},
AskToExplain: '. <a href="new-expensify://concierge/explain"><strong>Wyjaśnij</strong></a> &#x2728;',
},
transactionMerge: {
listPage: {
Expand Down
3 changes: 0 additions & 3 deletions src/languages/pt-BR.ts
Original file line number Diff line number Diff line change
Expand Up @@ -902,8 +902,6 @@ const translations: TranslationDeepObject<typeof en> = {
return `Tem certeza de que deseja excluir este(a) ${type}?`;
},
onlyVisible: 'Visível apenas para',
explain: 'Explicar',
explainMessage: 'Por favor, explique isso para mim.',
replyInThread: 'Responder na conversa',
joinThread: 'Participar da conversa',
leaveThread: 'Sair da conversa',
Expand Down Expand Up @@ -1490,7 +1488,6 @@ const translations: TranslationDeepObject<typeof en> = {
splitByDate: 'Dividir por data',
routedDueToDEW: ({to}: RoutedDueToDEWParams) => `relatório encaminhado para ${to} devido ao fluxo de trabalho de aprovação personalizado`,
timeTracking: {hoursAt: (hours: number, rate: string) => `${hours} ${hours === 1 ? 'hora' : 'horas'} @ ${rate} / hora`, hrs: 'h'},
AskToExplain: '. <a href="new-expensify://concierge/explain"><strong>Explicar</strong></a> &#x2728;',
},
transactionMerge: {
listPage: {
Expand Down
3 changes: 0 additions & 3 deletions src/languages/zh-hans.ts
Original file line number Diff line number Diff line change
Expand Up @@ -896,8 +896,6 @@ const translations: TranslationDeepObject<typeof en> = {
return `您确定要删除此${type}吗?`;
},
onlyVisible: '仅对…可见',
explain: '解释',
explainMessage: '请为我解释一下。',
replyInThread: '在线程中回复',
joinThread: '加入话题',
leaveThread: '离开会话',
Expand Down Expand Up @@ -1468,7 +1466,6 @@ const translations: TranslationDeepObject<typeof en> = {
splitByDate: '按日期拆分',
routedDueToDEW: ({to}: RoutedDueToDEWParams) => `报告因自定义审批工作流而转发至 ${to}`,
timeTracking: {hoursAt: (hours: number, rate: string) => `${hours} ${hours === 1 ? '小时' : '小时'} @ ${rate} / 小时`, hrs: '小时'},
AskToExplain: '. <a href="new-expensify://concierge/explain"><strong>解释</strong></a> &#x2728;',
},
transactionMerge: {
listPage: {
Expand Down
89 changes: 28 additions & 61 deletions src/libs/actions/Report.ts
Original file line number Diff line number Diff line change
Expand Up @@ -284,7 +284,7 @@
/** @deprecated This value is deprecated and will be removed soon after migration. Use the email from useCurrentUserPersonalDetails hook instead. */
let deprecatedCurrentUserLogin: string | undefined;

Onyx.connect({

Check warning on line 287 in src/libs/actions/Report.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function
key: ONYXKEYS.SESSION,
callback: (value) => {
// When signed out, val is undefined
Expand All @@ -298,7 +298,7 @@
},
});

Onyx.connect({

Check warning on line 301 in src/libs/actions/Report.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function
key: ONYXKEYS.CONCIERGE_REPORT_ID,
callback: (value) => (conciergeReportID = value),
});
Expand All @@ -306,7 +306,7 @@
// map of reportID to all reportActions for that report
const allReportActions: OnyxCollection<ReportActions> = {};

Onyx.connect({

Check warning on line 309 in src/libs/actions/Report.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function
key: ONYXKEYS.COLLECTION.REPORT_ACTIONS,
callback: (actions, key) => {
if (!key || !actions) {
Expand All @@ -318,7 +318,7 @@
});

let allReports: OnyxCollection<Report>;
Onyx.connect({

Check warning on line 321 in src/libs/actions/Report.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function
key: ONYXKEYS.COLLECTION.REPORT,
waitForCollectionCallback: true,
callback: (value) => {
Expand All @@ -327,7 +327,7 @@
});

let allPersonalDetails: OnyxEntry<PersonalDetailsList> = {};
Onyx.connect({

Check warning on line 330 in src/libs/actions/Report.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function
key: ONYXKEYS.PERSONAL_DETAILS_LIST,
callback: (value) => {
allPersonalDetails = value ?? {};
Expand All @@ -342,7 +342,7 @@
});

let onboarding: OnyxEntry<Onboarding>;
Onyx.connect({

Check warning on line 345 in src/libs/actions/Report.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function
key: ONYXKEYS.NVP_ONBOARDING,
callback: (val) => {
if (Array.isArray(val)) {
Expand All @@ -353,13 +353,13 @@
});

let introSelected: OnyxEntry<IntroSelected> = {};
Onyx.connect({

Check warning on line 356 in src/libs/actions/Report.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function
key: ONYXKEYS.NVP_INTRO_SELECTED,
callback: (val) => (introSelected = val),
});

let allReportDraftComments: Record<string, string | undefined> = {};
Onyx.connect({

Check warning on line 362 in src/libs/actions/Report.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function
key: ONYXKEYS.COLLECTION.REPORT_DRAFT_COMMENT,
waitForCollectionCallback: true,
callback: (value) => (allReportDraftComments = value),
Expand Down Expand Up @@ -1469,74 +1469,43 @@
}

/**
* This will navigate to an existing thread, or create a new one if necessary.
* If the child report doesn't exist, creates an optimistic report and calls openReport().
* This will navigate to an existing thread, or create a new one if necessary
*
* @param childReportID The reportID we are trying to open
* @param parentReportAction the parent comment of a thread
* @param parentReportID The reportID of the parent
*/
function navigateToAndOpenChildReport(childReportID: string | undefined, parentReportAction: Partial<ReportAction> = {}, parentReportID?: string) {
const existingChildReport = allReports?.[`${ONYXKEYS.COLLECTION.REPORT}${childReportID}`];
const report = existingChildReport ?? buildOptimisticChildReport(childReportID, parentReportAction, parentReportID);

if (!existingChildReport) {
const participantLogins = PersonalDetailsUtils.getLoginsByAccountIDs(Object.keys(report.participants ?? {}).map(Number));
openReport(report.reportID, '', participantLogins, report, parentReportAction.reportActionID, undefined, undefined, undefined, true);
}

Navigation.navigate(ROUTES.REPORT_WITH_ID.getRoute(report.reportID, undefined, undefined, Navigation.getActiveRoute()));
}

/**
* Builds an optimistic child report and returns it without checking for existing reports.
*/
function buildOptimisticChildReport(childReportID: string | undefined, parentReportAction: Partial<ReportAction> = {}, parentReportID?: string): Report {
const participantAccountIDs = [...new Set([deprecatedCurrentUserAccountID, Number(parentReportAction.actorAccountID)])];
const parentReport = allReports?.[`${ONYXKEYS.COLLECTION.REPORT}${parentReportID}`];
// Threads from DMs and selfDMs don't have a chatType. All other threads inherit the chatType from their parent
const childReportChatType = parentReport && isSelfDM(parentReport) ? undefined : parentReport?.chatType;
const newChat = buildOptimisticChatReport({
participantList: participantAccountIDs,
reportName: ReportActionsUtils.getReportActionText(parentReportAction),
chatType: childReportChatType,
policyID: parentReport?.policyID ?? CONST.POLICY.OWNER_EMAIL_FAKE,
ownerAccountID: CONST.POLICY.OWNER_ACCOUNT_ID_FAKE,
oldPolicyName: parentReport?.policyName ?? '',
notificationPreference: getChildReportNotificationPreference(parentReportAction),
parentReportActionID: parentReportAction.reportActionID,
parentReportID,
optimisticReportID: childReportID,
});

Onyx.merge(`${ONYXKEYS.COLLECTION.REPORT}${childReportID ?? newChat.reportID}`, newChat);

return newChat;
}
const childReport = allReports?.[`${ONYXKEYS.COLLECTION.REPORT}${childReportID}`];
if (childReport?.reportID) {
Navigation.navigate(ROUTES.REPORT_WITH_ID.getRoute(childReportID, undefined, undefined, Navigation.getActiveRoute()));
} else {
const participantAccountIDs = [...new Set([deprecatedCurrentUserAccountID, Number(parentReportAction.actorAccountID)])];
const parentReport = allReports?.[`${ONYXKEYS.COLLECTION.REPORT}${parentReportID}`];
// Threads from DMs and selfDMs don't have a chatType. All other threads inherit the chatType from their parent
const childReportChatType = parentReport && isSelfDM(parentReport) ? undefined : parentReport?.chatType;
const newChat = buildOptimisticChatReport({
participantList: participantAccountIDs,
reportName: ReportActionsUtils.getReportActionText(parentReportAction),
chatType: childReportChatType,
policyID: parentReport?.policyID ?? CONST.POLICY.OWNER_EMAIL_FAKE,
ownerAccountID: CONST.POLICY.OWNER_ACCOUNT_ID_FAKE,
oldPolicyName: parentReport?.policyName ?? '',
notificationPreference: getChildReportNotificationPreference(parentReportAction),
parentReportActionID: parentReportAction.reportActionID,
parentReportID,
optimisticReportID: childReportID,
});

/**
* Creates an explanation thread for a report action with reasoning
* Adds a "Please explain this to me." comment from the user
*/
function explain(reportAction: OnyxEntry<ReportAction>, originalReportID: string | undefined, translate: LocalizedTranslate, timezone: Timezone = CONST.DEFAULT_TIME_ZONE) {
if (!originalReportID || !reportAction) {
return;
}
if (!childReportID) {
const participantLogins = PersonalDetailsUtils.getLoginsByAccountIDs(Object.keys(newChat.participants ?? {}).map(Number));
openReport(newChat.reportID, '', participantLogins, newChat, parentReportAction.reportActionID, undefined, undefined, undefined, true);
} else {
Onyx.merge(`${ONYXKEYS.COLLECTION.REPORT}${childReportID}`, newChat);
}

// Check if explanation thread report already exists
const existingChildReport = allReports?.[`${ONYXKEYS.COLLECTION.REPORT}${reportAction.childReportID}`];
const report = existingChildReport ?? buildOptimisticChildReport(reportAction.childReportID, reportAction, originalReportID);
if (!existingChildReport) {
const participantLogins = PersonalDetailsUtils.getLoginsByAccountIDs(Object.keys(report.participants ?? {}).map(Number));
openReport(report.reportID, '', participantLogins, report, reportAction.reportActionID, undefined, undefined, undefined, true);
Navigation.navigate(ROUTES.REPORT_WITH_ID.getRoute(newChat.reportID, undefined, undefined, Navigation.getActiveRoute()));
}

Navigation.navigate(ROUTES.REPORT_WITH_ID.getRoute(report.reportID, undefined, undefined, Navigation.getActiveRoute()));
// Schedule adding the explanation comment on the next animation frame
// so it runs immediately after navigation completes.
requestAnimationFrame(() => {
addComment(report, report.reportID, [], translate('reportActionContextMenu.explainMessage'), timezone, true);
});
}

/**
Expand Down Expand Up @@ -6453,7 +6422,6 @@
doneCheckingPublicRoom,
downloadReportPDF,
editReportComment,
explain,
expandURLPreview,
exportReportToCSV,
exportReportToPDF,
Expand All @@ -6478,7 +6446,6 @@
markAsManuallyExported,
markCommentAsUnread,
navigateToAndOpenChildReport,
buildOptimisticChildReport,
navigateToAndOpenReport,
navigateToAndOpenReportWithAccountIDs,
navigateToConciergeChat,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,6 @@ function BaseReportActionContextMenu({
'Bug',
'Trashcan',
'Checkmark',
'Concierge',
] as const);
const StyleUtils = useStyleUtils();
const {translate, getLocalDateFromDatetime} = useLocalize();
Expand Down Expand Up @@ -237,7 +236,6 @@ function BaseReportActionContextMenu({
const {transactions} = useTransactionsAndViolationsForReport(childReport?.reportID);
const [tryNewDot] = useOnyx(ONYXKEYS.NVP_TRY_NEW_DOT, {canBeMissing: false});
const isTryNewDotNVPDismissed = !!tryNewDot?.classicRedirect?.dismissed;
const currentUserPersonalDetails = useCurrentUserPersonalDetails();

const isMoneyRequest = useMemo(() => ReportUtilsIsMoneyRequest(childReport), [childReport]);
const isTrackExpenseReport = ReportUtilsIsTrackExpenseReport(childReport);
Expand Down Expand Up @@ -410,7 +408,6 @@ function BaseReportActionContextMenu({
translate,
harvestReport,
currentUserAccountID,
currentUserPersonalDetails,
};

if ('renderContent' in contextAction) {
Expand Down
Loading
Loading