import React, { memo } from 'react'; import PropTypes from 'prop-types'; import { defineMessages, injectIntl } from 'react-intl'; import injectWbResizeEvent from '/imports/ui/components/presentation/resize-wrapper/component'; import Button from '/imports/ui/components/button/component'; import withShortcutHelper from '/imports/ui/components/shortcut-help/service'; import { Meteor } from 'meteor/meteor'; import ChatLogger from '/imports/ui/components/chat/chat-logger/ChatLogger'; import { styles } from './styles.scss'; import MessageFormContainer from './message-form/container'; import TimeWindowList from './time-window-list/container'; import ChatDropdownContainer from './chat-dropdown/container'; import { PANELS, ACTIONS } from '../layout/enums'; import { UserSentMessageCollection } from './service'; import Auth from '/imports/ui/services/auth'; const CHAT_CONFIG = Meteor.settings.public.chat; const PUBLIC_CHAT_ID = CHAT_CONFIG.public_id; const ELEMENT_ID = 'chat-messages'; const intlMessages = defineMessages({ closeChatLabel: { id: 'app.chat.closeChatLabel', description: 'aria-label for closing chat button', }, hideChatLabel: { id: 'app.chat.hideChatLabel', description: 'aria-label for hiding chat button', }, }); const Chat = (props) => { const { chatID, title, messages, partnerIsLoggedOut, isChatLocked, actions, intl, shortcuts, isMeteorConnected, lastReadMessageTime, hasUnreadMessages, scrollPosition, amIModerator, meetingIsBreakout, timeWindowsValues, dispatch, count, layoutContextDispatch, syncing, syncedPercent, lastTimeWindowValuesBuild, } = props; const userSentMessage = UserSentMessageCollection.findOne({ userId: Auth.userID, sent: true }); const HIDE_CHAT_AK = shortcuts.hideprivatechat; const CLOSE_CHAT_AK = shortcuts.closeprivatechat; ChatLogger.debug('ChatComponent::render', props); return (