diff --git a/bigbluebutton-html5/imports/ui/components/chat/alert/component.jsx b/bigbluebutton-html5/imports/ui/components/chat/alert/component.jsx index 96d657b090..b5beb69167 100644 --- a/bigbluebutton-html5/imports/ui/components/chat/alert/component.jsx +++ b/bigbluebutton-html5/imports/ui/components/chat/alert/component.jsx @@ -16,6 +16,7 @@ const CHAT_CONFIG = Meteor.settings.public.chat; const PUBLIC_CHAT_CLEAR = CHAT_CONFIG.chat_clear; const PUBLIC_CHAT_ID = CHAT_CONFIG.public_id; const POLL_RESULT_KEY = CHAT_CONFIG.system_messages_keys.chat_poll_result; +const EXPORTED_PRESENTATION_KEY = CHAT_CONFIG.system_messages_keys.chat_exported_presentation; const propTypes = { pushAlertEnabled: PropTypes.bool.isRequired, @@ -66,6 +67,10 @@ const intlMessages = defineMessages({ id: 'app.toast.chat.pollClick', description: 'chat toast click message for polls', }, + exportedPresentation: { + id: 'app.toast.chat.exportedPresentation', + description: 'chat toast message for exportedPresentation', + } }); const ALERT_INTERVAL = 5000; // 5 seconds @@ -189,6 +194,13 @@ const ChatAlert = (props) => { ); + const createExportedPresentationMessage = (filename) => ( + + {intl.formatMessage(intlMessages.exportedPresentation)} + {filename} + + ); + if (isEqual(prevUnreadMessages, unreadMessages)) { return null; } @@ -203,6 +215,8 @@ const ChatAlert = (props) => { if (mappedMessage.id.includes(POLL_RESULT_KEY)) { content = createPollMessage(); isPollResult = true; + } else if (mappedMessage.id.includes(EXPORTED_PRESENTATION_KEY)) { + content = createExportedPresentationMessage(mappedMessage.extra.filename); } else { content = createMessage(mappedMessage.sender.name, mappedMessage.content.slice(-5)); } diff --git a/bigbluebutton-html5/imports/ui/components/chat/alert/styles.js b/bigbluebutton-html5/imports/ui/components/chat/alert/styles.js index fc320013d0..d471959107 100644 --- a/bigbluebutton-html5/imports/ui/components/chat/alert/styles.js +++ b/bigbluebutton-html5/imports/ui/components/chat/alert/styles.js @@ -42,9 +42,14 @@ const ContentMessagePoll = styled(ContentMessage)` margin-top: ${fontSizeSmall}; `; +const ContentMessageExportedPresentation = styled(ContentMessage)` + margin-top: ${fontSizeSmall}; +`; + export default { PushMessageContent, UserNameMessage, ContentMessage, ContentMessagePoll, + ContentMessageExportedPresentation, }; diff --git a/bigbluebutton-html5/imports/ui/components/chat/service.js b/bigbluebutton-html5/imports/ui/components/chat/service.js index 1d4ed6660f..aaceb63a3b 100755 --- a/bigbluebutton-html5/imports/ui/components/chat/service.js +++ b/bigbluebutton-html5/imports/ui/components/chat/service.js @@ -83,7 +83,8 @@ const mapGroupMessage = (message) => { time: message.timestamp || message.time, sender: null, key: message.key, - chatId: message.chatId + chatId: message.chatId, + extra: message.extra, }; if (message.sender && message.sender !== SYSTEM_CHAT_TYPE) { diff --git a/bigbluebutton-html5/public/locales/en.json b/bigbluebutton-html5/public/locales/en.json index b72b38c63d..3cfe83c6ba 100755 --- a/bigbluebutton-html5/public/locales/en.json +++ b/bigbluebutton-html5/public/locales/en.json @@ -885,6 +885,7 @@ "app.toast.chat.system": "System", "app.toast.chat.poll": "Poll Results", "app.toast.chat.pollClick": "Poll results were published. Click here to see.", + "app.toast.chat.exportedPresentation": "Presentation file", "app.toast.clearedEmoji.label": "Emoji status cleared", "app.toast.setEmoji.label": "Emoji status set to {0}", "app.toast.meetingMuteOn.label": "All users have been muted",