diff --git a/src/CONST/index.ts b/src/CONST/index.ts index a54109df179d..d35627b382df 100755 --- a/src/CONST/index.ts +++ b/src/CONST/index.ts @@ -1323,6 +1323,7 @@ const CONST = { UPDATE_OWNERSHIP: 'POLICYCHANGELOG_UPDATE_OWNERSHIP', UPDATE_PROHIBITED_EXPENSES: 'POLICYCHANGELOG_UPDATE_PROHIBITED_EXPENSES', UPDATE_REIMBURSEMENT_CHOICE: 'POLICYCHANGELOG_UPDATE_REIMBURSEMENT_CHOICE', + UPDATE_REIMBURSEMENT_ENABLED: 'POLICYCHANGELOG_UPDATE_REIMBURSEMENT_ENABLED', UPDATE_REPORT_FIELD: 'POLICYCHANGELOG_UPDATE_REPORT_FIELD', UPDATE_TAG: 'POLICYCHANGELOG_UPDATE_TAG', UPDATE_TAG_ENABLED: 'POLICYCHANGELOG_UPDATE_TAG_ENABLED', @@ -1654,6 +1655,7 @@ const CONST = { TAG_ACTIVE_POLICY: 'active_policy_id', SPAN_OPEN_REPORT: 'ManualOpenReport', SPAN_APP_STARTUP: 'ManualAppStartup', + SPAN_OD_ND_TRANSITION: 'ManualOdNdTransition', }, PRIORITY_MODE: { GSD: 'gsd', diff --git a/src/HybridAppHandler.tsx b/src/HybridAppHandler.tsx index 7de67eaf64d7..e855812fb7e7 100644 --- a/src/HybridAppHandler.tsx +++ b/src/HybridAppHandler.tsx @@ -6,6 +6,7 @@ import {getHybridAppSettings} from './libs/actions/HybridApp'; import type HybridAppSettings from './libs/actions/HybridApp/types'; import {setupNewDotAfterTransitionFromOldDot} from './libs/actions/Session'; import Log from './libs/Log'; +import {endSpan, startSpan} from './libs/telemetry/activeSpans'; import ONYXKEYS from './ONYXKEYS'; import SplashScreenStateContext from './SplashScreenStateContext'; import isLoadingOnyxValue from './types/utils/isLoadingOnyxValue'; @@ -24,6 +25,8 @@ function HybridAppHandler() { return; } + endSpan(CONST.TELEMETRY.SPAN_OD_ND_TRANSITION); + setSplashScreenState(loggedOutFromOldDot ? CONST.BOOT_SPLASH_STATE.HIDDEN : CONST.BOOT_SPLASH_STATE.READY_TO_BE_HIDDEN); }); }, @@ -35,6 +38,11 @@ function HybridAppHandler() { return; } + startSpan(CONST.TELEMETRY.SPAN_OD_ND_TRANSITION, { + name: CONST.TELEMETRY.SPAN_OD_ND_TRANSITION, + op: CONST.TELEMETRY.SPAN_OD_ND_TRANSITION, + }); + getHybridAppSettings().then((hybridAppSettings: HybridAppSettings | null) => { if (!hybridAppSettings) { // Native method can send non-null value only once per NewDot lifecycle. It prevents issues with multiple initializations during reloads on debug builds. diff --git a/src/languages/params.ts b/src/languages/params.ts index 77ad01f58b1e..860f3a1fb5e3 100644 --- a/src/languages/params.ts +++ b/src/languages/params.ts @@ -422,6 +422,8 @@ type UpdatedPolicyAuditRateParams = {oldAuditRate: number; newAuditRate: number} type UpdatedPolicyManualApprovalThresholdParams = {oldLimit: string; newLimit: string}; +type UpdatedPolicyReimbursementEnabledParams = {enabled: boolean}; + type ChangeTypeParams = {oldType: string; newType: string}; type AccountOwnerParams = {accountOwnerEmail: string}; @@ -1224,6 +1226,7 @@ export type { NeedCategoryForExportToIntegrationParams, UpdatedPolicyAuditRateParams, UpdatedPolicyManualApprovalThresholdParams, + UpdatedPolicyReimbursementEnabledParams, UpdatePolicyCustomUnitTaxEnabledParams, UpdatePolicyCustomUnitParams, AddOrDeletePolicyCustomUnitRateParams, diff --git a/src/libs/ReportActionsUtils.ts b/src/libs/ReportActionsUtils.ts index 1c410c9f71bf..d9d78da74248 100644 --- a/src/libs/ReportActionsUtils.ts +++ b/src/libs/ReportActionsUtils.ts @@ -2859,6 +2859,17 @@ function getWorkspaceUpdateFieldMessage(action: ReportAction): string { return getReportActionText(action); } +function getWorkspaceReimbursementUpdateMessage(action: ReportAction): string { + const {enabled} = getOriginalMessage(action as ReportAction) ?? {}; + + if (action.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_REIMBURSEMENT_ENABLED && typeof enabled === 'boolean') { + // eslint-disable-next-line @typescript-eslint/no-deprecated + return translateLocal('workspaceActions.updateReimbursementEnabled', {enabled}); + } + + return getReportActionText(action); +} + function getPolicyChangeLogMaxExpenseAmountNoReceiptMessage(action: ReportAction): string { const {oldMaxExpenseAmountNoReceipt, newMaxExpenseAmountNoReceipt, currency} = getOriginalMessage(action as ReportAction) ?? {}; @@ -3461,6 +3472,7 @@ export { getTravelUpdateMessage, getWorkspaceCategoryUpdateMessage, getWorkspaceUpdateFieldMessage, + getWorkspaceReimbursementUpdateMessage, getWorkspaceCurrencyUpdateMessage, getWorkspaceTaxUpdateMessage, getWorkspaceFrequencyUpdateMessage, diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index 37b9a27dc267..4ea493b0d583 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -202,6 +202,7 @@ import { getTravelUpdateMessage, getWorkspaceCurrencyUpdateMessage, getWorkspaceFrequencyUpdateMessage, + getWorkspaceReimbursementUpdateMessage, getWorkspaceReportFieldAddMessage, getWorkspaceReportFieldDeleteMessage, getWorkspaceReportFieldUpdateMessage, @@ -5688,6 +5689,9 @@ function getReportName( if (isActionOfType(parentReportAction, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_MAX_EXPENSE_AMOUNT_NO_RECEIPT)) { return getPolicyChangeLogMaxExpenseAmountNoReceiptMessage(parentReportAction); } + if (isActionOfType(parentReportAction, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_REIMBURSEMENT_ENABLED)) { + return getWorkspaceReimbursementUpdateMessage(parentReportAction); + } if (isActionOfType(parentReportAction, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_DEFAULT_BILLABLE)) { return getPolicyChangeLogDefaultBillableMessage(parentReportAction); diff --git a/src/libs/SidebarUtils.ts b/src/libs/SidebarUtils.ts index e0b80f4a64f4..5cb229ae46cb 100644 --- a/src/libs/SidebarUtils.ts +++ b/src/libs/SidebarUtils.ts @@ -67,6 +67,7 @@ import { getWorkspaceCustomUnitUpdatedMessage, getWorkspaceDescriptionUpdatedMessage, getWorkspaceFrequencyUpdateMessage, + getWorkspaceReimbursementUpdateMessage, getWorkspaceReportFieldAddMessage, getWorkspaceReportFieldDeleteMessage, getWorkspaceReportFieldUpdateMessage, @@ -880,6 +881,8 @@ function getOptionData({ result.alternateText = getWorkspaceReportFieldDeleteMessage(lastAction); } else if (lastAction?.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_FIELD) { result.alternateText = getWorkspaceUpdateFieldMessage(lastAction); + } else if (lastAction?.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_REIMBURSEMENT_ENABLED) { + result.alternateText = getWorkspaceReimbursementUpdateMessage(lastAction); } else if (lastAction?.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_MAX_EXPENSE_AMOUNT_NO_RECEIPT) { result.alternateText = getPolicyChangeLogMaxExpenseAmountNoReceiptMessage(lastAction); } else if (lastAction?.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_MAX_EXPENSE_AMOUNT) { diff --git a/src/pages/home/report/ContextMenu/ContextMenuActions.tsx b/src/pages/home/report/ContextMenu/ContextMenuActions.tsx index 6b45dc75caa6..e1bc5cd925a3 100644 --- a/src/pages/home/report/ContextMenu/ContextMenuActions.tsx +++ b/src/pages/home/report/ContextMenu/ContextMenuActions.tsx @@ -64,6 +64,7 @@ import { getWorkspaceCustomUnitUpdatedMessage, getWorkspaceDescriptionUpdatedMessage, getWorkspaceFrequencyUpdateMessage, + getWorkspaceReimbursementUpdateMessage, getWorkspaceReportFieldAddMessage, getWorkspaceReportFieldDeleteMessage, getWorkspaceReportFieldUpdateMessage, @@ -621,6 +622,8 @@ const ContextMenuActions: ContextMenuAction[] = [ Clipboard.setString(getWorkspaceReportFieldDeleteMessage(reportAction)); } else if (reportAction?.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_FIELD) { setClipboardMessage(getWorkspaceUpdateFieldMessage(reportAction)); + } else if (reportAction.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_REIMBURSEMENT_ENABLED) { + Clipboard.setString(getWorkspaceReimbursementUpdateMessage(reportAction)); } else if (reportAction.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_MAX_EXPENSE_AMOUNT_NO_RECEIPT) { Clipboard.setString(getPolicyChangeLogMaxExpenseAmountNoReceiptMessage(reportAction)); } else if (reportAction.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_MAX_EXPENSE_AMOUNT) { diff --git a/src/pages/home/report/PureReportActionItem.tsx b/src/pages/home/report/PureReportActionItem.tsx index 277af9630920..26f1de18ce52 100644 --- a/src/pages/home/report/PureReportActionItem.tsx +++ b/src/pages/home/report/PureReportActionItem.tsx @@ -100,6 +100,7 @@ import { getWorkspaceCustomUnitRateUpdatedMessage, getWorkspaceCustomUnitUpdatedMessage, getWorkspaceFrequencyUpdateMessage, + getWorkspaceReimbursementUpdateMessage, getWorkspaceReportFieldAddMessage, getWorkspaceReportFieldDeleteMessage, getWorkspaceReportFieldUpdateMessage, @@ -1321,6 +1322,8 @@ function PureReportActionItem({ children = ; } else if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_FIELD)) { children = ; + } else if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_REIMBURSEMENT_ENABLED)) { + children = ; } else if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_MAX_EXPENSE_AMOUNT_NO_RECEIPT)) { children = ; } else if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_MAX_EXPENSE_AMOUNT)) {