import React, { Component, PropTypes } from 'react'; import { FormattedMessage } from 'react-intl'; import LoadingScreen from '../loading-screen/component'; import KickedScreen from '../kicked-screen/component'; import NotificationsBarContainer from '../notifications-bar/container'; import LocalStorage from '/imports/ui/services/storage/local.js'; import Button from '../button/component'; import styles from './styles'; import cx from 'classnames'; const propTypes = { navbar: PropTypes.element, sidebar: PropTypes.element, sidebarRight: PropTypes.element, media: PropTypes.element, actionsbar: PropTypes.element, captions: PropTypes.element, modal: PropTypes.element, unreadMessageCount: PropTypes.array, openChats: PropTypes.array, }; export default class App extends Component { constructor(props) { super(props); this.state = { compactUserList: false, //TODO: Change this on userlist resize (?) }; } renderNavBar() { const { navbar } = this.props; if (navbar) { return (
{navbar}
); } return false; } renderSidebar() { const { sidebar } = this.props; if (sidebar) { return ( ); } return false; } renderUserList() { let { userList } = this.props; const { compactUserList } = this.state; let userListStyle = {}; userListStyle[styles.compact] = compactUserList; if (userList) { userList = React.cloneElement(userList, { compact: compactUserList, }); return ( ); } return false; } renderChat() { const { chat } = this.props; if (chat) { return (
{chat}
); } return false; } renderMedia() { const { media } = this.props; if (media) { return (
{media}
); } return false; } renderClosedCaptions() { const { captions } = this.props; if (captions && this.props.getCaptionsStatus()) { return (
{captions}
); } } renderActionsBar() { const { actionsbar } = this.props; if (actionsbar) { return (
{actionsbar}
); } return false; } renderAudioElement() { return ( ); } renderModal() { const { modal } = this.props; if (modal) { return (
{modal}
); } return false; } playSoundForUnreadMessages() { const snd = new Audio('/html5client/resources/sounds/notify.mp3'); snd.play(); } componentDidUpdate(prevProps) { let { unreadMessageCount, openChats, openChat } = this.props; unreadMessageCount.forEach((chat, i) => { // When starting the new chat, if prevProps is undefined or null, it is assigned 0. if (!prevProps.unreadMessageCount[i]) { prevProps.unreadMessageCount[i] = 0; } // compare openChats(chatID) to chatID of currently opened chat room if (openChats[i] !== openChat) { let shouldPlaySound = LocalStorage.getItem('audioNotifChat') || Meteor.settings.public.app.audioChatNotification; if (shouldPlaySound && chat > prevProps.unreadMessageCount[i]) { this.playSoundForUnreadMessages(); } } }); } render() { if (this.props.wasKicked) { return (