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 Styled from './styles'; 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'; import browserInfo from '/imports/utils/browserInfo'; 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 { isChrome } = browserInfo; const HIDE_CHAT_AK = shortcuts.hideprivatechat; const CLOSE_CHAT_AK = shortcuts.closeprivatechat; ChatLogger.debug('ChatComponent::render', props); return ( { layoutContextDispatch({ type: ACTIONS.SET_SIDEBAR_CONTENT_IS_OPEN, value: false, }); layoutContextDispatch({ type: ACTIONS.SET_ID_CHAT_OPEN, value: '', }); layoutContextDispatch({ type: ACTIONS.SET_SIDEBAR_CONTENT_PANEL, value: PANELS.NONE, }); }} aria-label={intl.formatMessage(intlMessages.hideChatLabel, { 0: title })} accessKey={chatID !== 'public' ? HIDE_CHAT_AK : null} label={title} icon="left_arrow" /> { chatID !== PUBLIC_CHAT_ID ? (