diff --git a/bigbluebutton-html5/imports/ui/components/chat/chat-dropdown/component.jsx b/bigbluebutton-html5/imports/ui/components/chat/chat-dropdown/component.jsx index a673d9dac8340cd40493edd4dd80ef55495935da..3811d4e5853c7a082f1b6cbae334b3e2bfe7d6d8 100755 --- a/bigbluebutton-html5/imports/ui/components/chat/chat-dropdown/component.jsx +++ b/bigbluebutton-html5/imports/ui/components/chat/chat-dropdown/component.jsx @@ -55,11 +55,11 @@ class ChatDropdown extends PureComponent { } componentDidUpdate(prevProps, prevState) { - const { timeWindowsValues, users } = this.props; + const { timeWindowsValues, users, intl } = this.props; const { isSettingOpen } = this.state; if (prevState.isSettingOpen !== isSettingOpen) { this.clipboard = new Clipboard('#clipboardButton', { - text: () => ChatService.exportChat(timeWindowsValues, users), + text: () => ChatService.exportChat(timeWindowsValues, users, intl), }); } } @@ -104,7 +104,7 @@ class ChatDropdown extends PureComponent { link.setAttribute( 'href', `data: ${mimeType} ;charset=utf-8, - ${encodeURIComponent(ChatService.exportChat(timeWindowsValues, users))}`, + ${encodeURIComponent(ChatService.exportChat(timeWindowsValues, users, intl))}`, ); link.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true, view: window })); }} diff --git a/bigbluebutton-html5/imports/ui/components/chat/service.js b/bigbluebutton-html5/imports/ui/components/chat/service.js index 53f8f2d92b7d4999770b97107644a0fd0c36c3fb..35f71ab1cddff82c43707d4d793f148e09c791b8 100755 --- a/bigbluebutton-html5/imports/ui/components/chat/service.js +++ b/bigbluebutton-html5/imports/ui/components/chat/service.js @@ -8,6 +8,7 @@ import Storage from '/imports/ui/services/storage/session'; import { makeCall } from '/imports/ui/services/api'; import _ from 'lodash'; import { meetingIsBreakout } from '/imports/ui/components/app/service'; +import { defineMessages, injectIntl } from 'react-intl'; const CHAT_CONFIG = Meteor.settings.public.chat; const GROUPING_MESSAGES_WINDOW = CHAT_CONFIG.grouping_messages_window; @@ -31,6 +32,13 @@ const CLOSED_CHAT_LIST_KEY = 'closedChatList'; const POLL_MESSAGE_PREFIX = 'bbb-published-poll-<br/>'; +const intlMessages = defineMessages({ + publicChatClear: { + id: 'app.chat.clearPublicChatMessage', + description: 'message of when clear the public chat', + }, +}); + const setUserSentMessage = (bool) => { UserSentMessageCollection.upsert( { userId: Auth.userID }, @@ -308,22 +316,19 @@ const htmlDecode = (input) => { }; // Export the chat as [Hour:Min] user: message -const exportChat = (timeWindowList, users) => { - // const messageList = timeWindowList.reduce( (acc, timeWindow) => [...acc, ...timeWindow.content], []); - // messageList.sort((a, b) => a.time - b.time); - - const messageList = timeWindowList.reduce((acc, timeWindow) => { +const exportChat = (timeWindowList, users, intl) => { + const messageList = timeWindowList.reduce((acc, timeWindow) => { const msgs = timeWindow.content.map(message => { const date = new Date(message.time); const hour = date.getHours().toString().padStart(2, 0); const min = date.getMinutes().toString().padStart(2, 0); const hourMin = `[${hour}:${min}]`; - console.log('message', message); - const userName = message.id.endsWith('welcome-msg') + const userName = message.id.startsWith('SYSTEM_MESSAGE') ? '' - : `${users[timeWindow.sender].name} :`; - return `${hourMin} ${userName} ${htmlDecode(message.text)}`; + : `${users[timeWindow.sender].name}: `; + const messageText = (message.text === 'PUBLIC_CHAT_CLEAR') ? intl.formatMessage(intlMessages.publicChatClear) : message.text; + return `${hourMin} ${userName}${htmlDecode(messageText)}`; }); return [...acc, ...msgs];