import React from 'react'; import { connect } from 'react-redux'; import PropTypes from 'prop-types'; import ImmutablePropTypes from 'react-immutable-proptypes'; import ImmutablePureComponent from 'react-immutable-pure-component'; import { getSettings } from 'soapbox/actions/settings'; import ChatList from './chat_list'; import { FormattedMessage } from 'react-intl'; import { openChat, toggleMainWindow } from 'soapbox/actions/chats'; import ChatWindow from './chat_window'; import { shortNumberFormat } from 'soapbox/utils/numbers'; import AudioToggle from 'soapbox/features/chats/components/audio_toggle'; const mapStateToProps = state => { const settings = getSettings(state); return { panes: settings.getIn(['chats', 'panes']), mainWindowState: settings.getIn(['chats', 'mainWindow']), unreadCount: state.get('chats').reduce((acc, curr) => acc + Math.min(curr.get('unread', 0), 1), 0), }; }; export default @connect(mapStateToProps) class ChatPanes extends ImmutablePureComponent { static propTypes = { dispatch: PropTypes.func.isRequired, mainWindowState: PropTypes.string, panes: ImmutablePropTypes.list, } handleClickChat = (chat) => { this.props.dispatch(openChat(chat.get('id'))); } handleMainWindowToggle = () => { this.props.dispatch(toggleMainWindow()); } render() { const { panes, mainWindowState, unreadCount } = this.props; const mainWindowPane = (