From 28406fbe23ab4496aeefb588d910f1568529cee8 Mon Sep 17 00:00:00 2001 From: Maria A Nunez Date: Tue, 17 Feb 2026 07:56:30 -0500 Subject: [PATCH] Rename "Self-Deleting Messages" to "Burn-on-Read Messages" (#35318) * Rename "Self-Deleting Messages" to "Burn-on-Read Messages" Updated the Burn on Read feature naming in the System Console for consistency with the product terminology and made all Posts subsection titles translatable for better internationalization support. - Renamed section title from "Self-Deleting Messages" to "Burn-on-Read Messages" - Updated section description to clarify that messages delete after being read (removed "or sent") - Added translation keys for all 6 Posts subsection titles - Updated type definitions and UI components to support translatable subsection titles Co-authored-by: Cursor * Linting --------- Co-authored-by: Cursor --- .../admin_console/admin_definition.tsx | 14 ++++---- .../custom_profile_attributes.tsx | 12 +++---- .../admin_console/ldap_wizard/ldap_wizard.tsx | 32 +++++++++++-------- .../licensed_section_container.tsx | 2 +- .../admin_console/settings_group.tsx | 14 ++++++-- .../src/components/admin_console/types.ts | 2 +- .../admin_console/admin_section_panel.tsx | 8 +++-- webapp/channels/src/i18n/en.json | 8 ++++- 8 files changed, 57 insertions(+), 35 deletions(-) diff --git a/webapp/channels/src/components/admin_console/admin_definition.tsx b/webapp/channels/src/components/admin_console/admin_definition.tsx index f23d93537cc..5493f394ebd 100644 --- a/webapp/channels/src/components/admin_console/admin_definition.tsx +++ b/webapp/channels/src/components/admin_console/admin_definition.tsx @@ -3006,7 +3006,7 @@ const AdminDefinition: AdminDefinitionType = { sections: [ { key: 'PostSettings.Threads', - title: 'Threads', + title: defineMessage({id: 'admin.posts.sections.threads.title', defaultMessage: 'Threads'}), description: defineMessage({id: 'admin.posts.sections.threads.description', defaultMessage: 'Configure threaded discussions and auto-follow defaults.'}), settings: [ { @@ -3066,7 +3066,7 @@ const AdminDefinition: AdminDefinitionType = { }, { key: 'PostSettings.Drafts', - title: 'Drafts and Scheduled Posts', + title: defineMessage({id: 'admin.posts.sections.drafts.title', defaultMessage: 'Drafts and Scheduled Posts'}), description: defineMessage({id: 'admin.posts.sections.drafts.description', defaultMessage: 'Control draft syncing and scheduled sending.'}), settings: [ { @@ -3089,7 +3089,7 @@ const AdminDefinition: AdminDefinitionType = { }, { key: 'PostSettings.Priority', - title: 'Priority & Urgent Notifications', + title: defineMessage({id: 'admin.posts.sections.priority.title', defaultMessage: 'Priority & Urgent Notifications'}), description: defineMessage({id: 'admin.posts.sections.priority.description', defaultMessage: 'Set message priority and repeating notifications for urgent delivery.'}), settings: [ { @@ -3223,8 +3223,8 @@ const AdminDefinition: AdminDefinitionType = { }, { key: 'PostSettings.BurnOnRead', - title: 'Self-Deleting Messages', - description: defineMessage({id: 'admin.posts.sections.burnOnRead.description', defaultMessage: 'Controls for messages that delete automatically a certain time after being sent or read.'}), + title: defineMessage({id: 'admin.posts.sections.burnOnRead.title', defaultMessage: 'Burn-on-Read Messages'}), + description: defineMessage({id: 'admin.posts.sections.burnOnRead.description', defaultMessage: 'Controls for messages that delete automatically a certain time after being read.'}), license_sku: LicenseSkus.EnterpriseAdvanced, component: LicensedSectionContainer, componentProps: { @@ -3333,7 +3333,7 @@ const AdminDefinition: AdminDefinitionType = { }, { key: 'PostSettings.Previews', - title: 'Content & Previews', + title: defineMessage({id: 'admin.posts.sections.previews.title', defaultMessage: 'Content & Previews'}), description: defineMessage({id: 'admin.posts.sections.previews.description', defaultMessage: 'Configure link previews and how advanced formatting renders.'}), settings: [ { @@ -3437,7 +3437,7 @@ const AdminDefinition: AdminDefinitionType = { }, { key: 'PostSettings.Performance', - title: 'Performance & Limits', + title: defineMessage({id: 'admin.posts.sections.performance.title', defaultMessage: 'Performance & Limits'}), description: defineMessage({id: 'admin.posts.sections.performance.description', defaultMessage: 'Configure limits that protect client performance and rendering.'}), settings: [ { diff --git a/webapp/channels/src/components/admin_console/custom_profile_attributes/custom_profile_attributes.tsx b/webapp/channels/src/components/admin_console/custom_profile_attributes/custom_profile_attributes.tsx index 1ce95877c39..16b0a5db2fc 100644 --- a/webapp/channels/src/components/admin_console/custom_profile_attributes/custom_profile_attributes.tsx +++ b/webapp/channels/src/components/admin_console/custom_profile_attributes/custom_profile_attributes.tsx @@ -3,7 +3,7 @@ import React, {useEffect, useState} from 'react'; import './custom_profile_attributes.scss'; -import {FormattedMessage} from 'react-intl'; +import {FormattedMessage, defineMessage} from 'react-intl'; import {useSelector} from 'react-redux'; import {Link} from 'react-router-dom'; @@ -135,12 +135,10 @@ const CustomProfileAttributes: React.FC = (props: Props): JSX.Element | n
- } + title={defineMessage({ + id: 'admin.customProfileAttributes.title', + defaultMessage: 'Custom profile attributes sync', + })} container={false} subtitle={ { defaultMessage='Sections' />
- {memoizedSections.map((section) => ( - - ))} + {memoizedSections.map((section) => { + const title = section.sectionTitle || section.title; + return ( + + ); + })} ); }; diff --git a/webapp/channels/src/components/admin_console/licensed_section_container/licensed_section_container.tsx b/webapp/channels/src/components/admin_console/licensed_section_container/licensed_section_container.tsx index 53688c069c9..e379a543bde 100644 --- a/webapp/channels/src/components/admin_console/licensed_section_container/licensed_section_container.tsx +++ b/webapp/channels/src/components/admin_console/licensed_section_container/licensed_section_container.tsx @@ -20,7 +20,7 @@ import type {GlobalState} from 'types/store'; type OwnProps = { settingsList: React.ReactNode[]; requiredSku: LicenseSkus; - sectionTitle?: string; + sectionTitle?: string | MessageDescriptor; sectionDescription?: string | MessageDescriptor; featureDiscoveryConfig: { featureName: string; diff --git a/webapp/channels/src/components/admin_console/settings_group.tsx b/webapp/channels/src/components/admin_console/settings_group.tsx index a68a2b10956..ba447133102 100644 --- a/webapp/channels/src/components/admin_console/settings_group.tsx +++ b/webapp/channels/src/components/admin_console/settings_group.tsx @@ -2,12 +2,14 @@ // See LICENSE.txt for license information. import React, {memo} from 'react'; +import type {MessageDescriptor} from 'react-intl'; +import {FormattedMessage} from 'react-intl'; type Props = { id?: string; show?: boolean; header?: React.ReactNode; - title?: React.ReactNode; + title?: string | MessageDescriptor; subtitle?: React.ReactNode; children?: React.ReactNode; container?: boolean; @@ -35,7 +37,15 @@ const SettingsGroup = ({ let sectionTitle = null; if (!header && title) { - sectionTitle =
{title}
; + sectionTitle = ( +
+ {typeof title === 'string' ? ( + title + ) : ( + + )} +
+ ); } let sectionSubtitle = null; diff --git a/webapp/channels/src/components/admin_console/types.ts b/webapp/channels/src/components/admin_console/types.ts index c5ba962c9a3..e747eb3619d 100644 --- a/webapp/channels/src/components/admin_console/types.ts +++ b/webapp/channels/src/components/admin_console/types.ts @@ -184,7 +184,7 @@ export type AdminDefinitionConfigSchemaSettings = { export type AdminDefinitionConfigSchemaSection = { key: string; - title?: string; + title?: string | MessageDescriptor; subtitle?: string; description?: string | MessageDescriptor; license_sku?: string; diff --git a/webapp/channels/src/components/widgets/admin_console/admin_section_panel.tsx b/webapp/channels/src/components/widgets/admin_console/admin_section_panel.tsx index 31b1be8f64c..beb1a1cbd67 100644 --- a/webapp/channels/src/components/widgets/admin_console/admin_section_panel.tsx +++ b/webapp/channels/src/components/widgets/admin_console/admin_section_panel.tsx @@ -10,7 +10,7 @@ import {LicenseSkuBadge} from 'components/widgets/badges'; import './admin_section_panel.scss'; type Props = { - title?: string; + title?: string | MessageDescriptor; description?: string | MessageDescriptor; licenseSku?: string; children: React.ReactNode; @@ -28,7 +28,11 @@ const AdminSectionPanel: React.FC = ({
{title && (

- {title} + {typeof title === 'string' ? ( + title + ) : ( + + )} {licenseSku && }

)} diff --git a/webapp/channels/src/i18n/en.json b/webapp/channels/src/i18n/en.json index a0b24da174a..35444696e71 100644 --- a/webapp/channels/src/i18n/en.json +++ b/webapp/channels/src/i18n/en.json @@ -2367,12 +2367,18 @@ "admin.posts.postPriority.title": "Message Priority", "admin.posts.scheduledPosts.description": "When enabled, users can schedule and send messages in the future.", "admin.posts.scheduledPosts.title": "Scheduled Posts", - "admin.posts.sections.burnOnRead.description": "Controls for messages that delete automatically a certain time after being sent or read.", + "admin.posts.sections.burnOnRead.description": "Controls for messages that delete automatically a certain time after being read.", + "admin.posts.sections.burnOnRead.title": "Burn-on-Read Messages", "admin.posts.sections.drafts.description": "Control draft syncing and scheduled sending.", + "admin.posts.sections.drafts.title": "Drafts and Scheduled Posts", "admin.posts.sections.performance.description": "Configure limits that protect client performance and rendering.", + "admin.posts.sections.performance.title": "Performance & Limits", "admin.posts.sections.previews.description": "Configure link previews and how advanced formatting renders.", + "admin.posts.sections.previews.title": "Content & Previews", "admin.posts.sections.priority.description": "Set message priority and repeating notifications for urgent delivery.", + "admin.posts.sections.priority.title": "Priority & Urgent Notifications", "admin.posts.sections.threads.description": "Configure threaded discussions and auto-follow defaults.", + "admin.posts.sections.threads.title": "Threads", "admin.privacy.showEmailDescription": "When false, hides the email address of members from everyone except System Administrators and the System Roles with read/write access to Compliance, Billing, or User Management.", "admin.privacy.showEmailTitle": "Show Email Address:", "admin.privacy.showFullNameDescription": "When false, hides the full name of members from everyone except System Administrators. Username is shown in place of full name.",