diff --git a/src/CONST/index.ts b/src/CONST/index.ts index ffb1e7a35976..a79c5e1b83fc 100755 --- a/src/CONST/index.ts +++ b/src/CONST/index.ts @@ -1318,6 +1318,7 @@ const CONST = { UPDATE_DISABLED_FIELDS: 'POLICYCHANGELOG_UPDATE_DISABLED_FIELDS', UPDATE_EMPLOYEE: 'POLICYCHANGELOG_UPDATE_EMPLOYEE', UPDATE_FIELD: 'POLICYCHANGELOG_UPDATE_FIELD', + UPDATE_IS_ATTENDEE_TRACKING_ENABLED: 'POLICYCHANGELOG_UPDATE_IS_ATTENDEE_TRACKING_ENABLED', UPDATE_MANUAL_APPROVAL_THRESHOLD: 'POLICYCHANGELOG_UPDATE_MANUAL_APPROVAL_THRESHOLD', UPDATE_MAX_EXPENSE_AMOUNT: 'POLICYCHANGELOG_UPDATE_MAX_EXPENSE_AMOUNT', UPDATE_MAX_EXPENSE_AMOUNT_NO_RECEIPT: 'POLICYCHANGELOG_UPDATE_MAX_EXPENSE_AMOUNT_NO_RECEIPT', diff --git a/src/languages/de.ts b/src/languages/de.ts index 84447ba0e7d8..43c7918284f7 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -6256,6 +6256,7 @@ ${ } } }, + updatedAttendeeTracking: ({enabled}: {enabled: boolean}) => `${enabled ? 'aktiviert' : 'deaktiviert'} Teilnehmerverfolgung`, }, roomMembersPage: { memberNotFound: 'Mitglied nicht gefunden.', diff --git a/src/languages/en.ts b/src/languages/en.ts index d09026e9b213..2ffb58ea87d4 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -6289,6 +6289,7 @@ const translations = { `changed the rate of reports randomly routed for manual approval to ${Math.round(newAuditRate * 100)}% (previously ${Math.round(oldAuditRate * 100)}%)`, updatedManualApprovalThreshold: ({oldLimit, newLimit}: UpdatedPolicyManualApprovalThresholdParams) => `changed the manual approval limit for all expenses to ${newLimit} (previously ${oldLimit})`, + updatedAttendeeTracking: ({enabled}: {enabled: boolean}) => `${enabled ? 'enabled' : 'disabled'} attendee tracking`, updateReimbursementEnabled: ({enabled}: UpdatedPolicyReimbursementEnabledParams) => `${enabled ? 'enabled' : 'disabled'} reimbursements for this workspace`, addTax: ({taxName}: UpdatedPolicyTaxParams) => `added the tax "${taxName}"`, deleteTax: ({taxName}: UpdatedPolicyTaxParams) => `removed the tax "${taxName}"`, diff --git a/src/languages/es.ts b/src/languages/es.ts index 148560e4093e..4094ce694d33 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -5948,6 +5948,7 @@ ${amount} para ${merchant} - ${date}`, `cambió la tasa de informes enviados aleatoriamente para aprobación manual a ${Math.round(newAuditRate * 100)}% (previamente ${Math.round(oldAuditRate * 100)}%)`, updateReimbursementEnabled: ({enabled}) => `${enabled ? 'habilitó' : 'deshabilitó'} los reembolsos para este espacio de trabajo`, updatedManualApprovalThreshold: ({oldLimit, newLimit}) => `cambió el límite de aprobación manual para todos los gastos a ${newLimit} (previamente ${oldLimit})`, + updatedAttendeeTracking: ({enabled}: {enabled: boolean}) => `${enabled ? 'habilitó' : 'deshabilitó'} el seguimiento de asistentes`, addTax: ({taxName}) => `añadió el impuesto "${taxName}"`, deleteTax: ({taxName}) => `eliminó el impuesto "${taxName}"`, updateTax: ({oldValue, taxName, updatedField, newValue}) => { diff --git a/src/languages/fr.ts b/src/languages/fr.ts index fbb0da052c97..a980fc51633e 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -6264,6 +6264,7 @@ ${ } } }, + updatedAttendeeTracking: ({enabled}: {enabled: boolean}) => `${enabled ? 'activé' : 'désactivé'} suivi des participants`, }, roomMembersPage: { memberNotFound: 'Membre non trouvé.', diff --git a/src/languages/it.ts b/src/languages/it.ts index a7d602ce3c3b..c82fc67d65fd 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -6243,6 +6243,7 @@ ${ } } }, + updatedAttendeeTracking: ({enabled}: {enabled: boolean}) => `${enabled ? 'abilitato' : 'disabilitato'} tracciamento dei partecipanti`, }, roomMembersPage: { memberNotFound: 'Membro non trovato.', diff --git a/src/languages/ja.ts b/src/languages/ja.ts index 1bf15e057fb5..feb0f06f3330 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -6179,6 +6179,7 @@ ${ } } }, + updatedAttendeeTracking: ({enabled}: {enabled: boolean}) => `${enabled ? '有効' : '無効'} 参加者の追跡`, }, roomMembersPage: { memberNotFound: 'メンバーが見つかりません。', diff --git a/src/languages/nl.ts b/src/languages/nl.ts index cfc6553d2bdb..575dbbc2409c 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -6226,6 +6226,7 @@ ${ } } }, + updatedAttendeeTracking: ({enabled}: {enabled: boolean}) => `${enabled ? 'ingeschakeld' : 'uitgeschakeld'} bijhouden van aanwezigen`, }, roomMembersPage: { memberNotFound: 'Lid niet gevonden.', diff --git a/src/languages/pl.ts b/src/languages/pl.ts index a337c49511f9..91795ddc0a36 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -6213,6 +6213,7 @@ ${ } } }, + updatedAttendeeTracking: ({enabled}: {enabled: boolean}) => `${enabled ? 'włączone' : 'Wyłączone'} śledzenie uczestników`, }, roomMembersPage: { memberNotFound: 'Nie znaleziono członka.', diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index 57baf60d9848..fb376323e6c1 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -6225,6 +6225,7 @@ ${ } } }, + updatedAttendeeTracking: ({enabled}: {enabled: boolean}) => `${enabled ? 'ativado' : 'desativado'} acompanhamento de participantes`, }, roomMembersPage: { memberNotFound: 'Membro não encontrado.', diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index 0f2e314c5161..78f98615d2c4 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -6090,6 +6090,7 @@ ${ } } }, + updatedAttendeeTracking: ({enabled}: {enabled: boolean}) => `${enabled ? '已启用' : '已禁用'} 与会者跟踪`, }, roomMembersPage: { memberNotFound: '未找到成员。', diff --git a/src/libs/ReportActionsUtils.ts b/src/libs/ReportActionsUtils.ts index d9d78da74248..4a4578c212c9 100644 --- a/src/libs/ReportActionsUtils.ts +++ b/src/libs/ReportActionsUtils.ts @@ -2859,6 +2859,13 @@ function getWorkspaceUpdateFieldMessage(action: ReportAction): string { return getReportActionText(action); } +function getWorkspaceAttendeeTrackingUpdateMessage(action: ReportAction): string { + const {enabled} = getOriginalMessage(action as ReportAction) ?? {}; + + // eslint-disable-next-line @typescript-eslint/no-deprecated + return translateLocal('workspaceActions.updatedAttendeeTracking', {enabled: !!enabled}); +} + function getWorkspaceReimbursementUpdateMessage(action: ReportAction): string { const {enabled} = getOriginalMessage(action as ReportAction) ?? {}; @@ -3472,6 +3479,7 @@ export { getTravelUpdateMessage, getWorkspaceCategoryUpdateMessage, getWorkspaceUpdateFieldMessage, + getWorkspaceAttendeeTrackingUpdateMessage, getWorkspaceReimbursementUpdateMessage, getWorkspaceCurrencyUpdateMessage, getWorkspaceTaxUpdateMessage, diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index a445cb5b1dad..555eb1def430 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -199,6 +199,7 @@ import { getRetractedMessage, getSortedReportActions, getTravelUpdateMessage, + getWorkspaceAttendeeTrackingUpdateMessage, getWorkspaceCurrencyUpdateMessage, getWorkspaceFrequencyUpdateMessage, getWorkspaceReimbursementUpdateMessage, @@ -5702,6 +5703,9 @@ function getReportName( if (isActionOfType(parentReportAction, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_DEFAULT_TITLE_ENFORCED)) { return getPolicyChangeLogDefaultTitleEnforcedMessage(parentReportAction); } + if (isActionOfType(parentReportAction, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_IS_ATTENDEE_TRACKING_ENABLED)) { + return getWorkspaceAttendeeTrackingUpdateMessage(parentReportAction); + } if (isActionOfType(parentReportAction, CONST.REPORT.ACTIONS.TYPE.ACTIONABLE_CARD_FRAUD_ALERT) && getOriginalMessage(parentReportAction)?.resolution) { return getActionableCardFraudAlertResolutionMessage(parentReportAction); diff --git a/src/libs/SidebarUtils.ts b/src/libs/SidebarUtils.ts index 5cb229ae46cb..f0ea6d05f215 100644 --- a/src/libs/SidebarUtils.ts +++ b/src/libs/SidebarUtils.ts @@ -59,6 +59,7 @@ import { getUpdatedAuditRateMessage, getUpdatedManualApprovalThresholdMessage, getUpdateRoomDescriptionMessage, + getWorkspaceAttendeeTrackingUpdateMessage, getWorkspaceCategoryUpdateMessage, getWorkspaceCurrencyUpdateMessage, getWorkspaceCustomUnitRateAddedMessage, @@ -881,6 +882,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_IS_ATTENDEE_TRACKING_ENABLED) { + result.alternateText = getWorkspaceAttendeeTrackingUpdateMessage(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) { diff --git a/src/pages/home/report/ContextMenu/ContextMenuActions.tsx b/src/pages/home/report/ContextMenu/ContextMenuActions.tsx index e1bc5cd925a3..bbadb14efb8a 100644 --- a/src/pages/home/report/ContextMenu/ContextMenuActions.tsx +++ b/src/pages/home/report/ContextMenu/ContextMenuActions.tsx @@ -56,6 +56,7 @@ import { getUpdatedAuditRateMessage, getUpdatedManualApprovalThresholdMessage, getUpdateRoomDescriptionMessage, + getWorkspaceAttendeeTrackingUpdateMessage, getWorkspaceCategoryUpdateMessage, getWorkspaceCurrencyUpdateMessage, getWorkspaceCustomUnitRateAddedMessage, @@ -622,6 +623,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_IS_ATTENDEE_TRACKING_ENABLED) { + Clipboard.setString(getWorkspaceAttendeeTrackingUpdateMessage(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) { diff --git a/src/pages/home/report/PureReportActionItem.tsx b/src/pages/home/report/PureReportActionItem.tsx index 26f1de18ce52..6b68c52ef9a0 100644 --- a/src/pages/home/report/PureReportActionItem.tsx +++ b/src/pages/home/report/PureReportActionItem.tsx @@ -93,6 +93,7 @@ import { getUpdatedAuditRateMessage, getUpdatedManualApprovalThresholdMessage, getWhisperedTo, + getWorkspaceAttendeeTrackingUpdateMessage, getWorkspaceCategoryUpdateMessage, getWorkspaceCurrencyUpdateMessage, getWorkspaceCustomUnitRateAddedMessage, @@ -1322,6 +1323,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_IS_ATTENDEE_TRACKING_ENABLED)) { + 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)) {