import React, { Component, PropTypes } from 'react'; import _ from 'underscore'; import cx from 'classnames'; import styles from './styles.scss'; import { showModal } from '/imports/ui/components/app/service'; import Button from '../button/component'; import RecordingIndicator from './recording-indicator/component'; import SettingsDropdown from './settings-dropdown/component'; import Icon from '/imports/ui/components/icon/component'; import BreakoutJoinConfirmation from '/imports/ui/components/breakout-join-confirmation/component'; import Dropdown from '/imports/ui/components/dropdown/component'; import DropdownTrigger from '/imports/ui/components/dropdown/trigger/component'; import DropdownContent from '/imports/ui/components/dropdown/content/component'; import DropdownList from '/imports/ui/components/dropdown/list/component'; import DropdownListItem from '/imports/ui/components/dropdown/list/item/component'; import DropdownListSeparator from '/imports/ui/components/dropdown/list/separator/component'; const propTypes = { presentationTitle: PropTypes.string.isRequired, hasUnreadMessages: PropTypes.bool.isRequired, beingRecorded: PropTypes.bool.isRequired, }; const defaultProps = { presentationTitle: 'Default Room Title', hasUnreadMessages: false, beingRecorded: false, }; const openBreakoutJoinConfirmation = (breakoutURL, breakoutName) => showModal(); class NavBar extends Component { constructor(props) { super(props); this.state = { isActionsOpen: false, didSendBreakoutInvite: false, }; this.handleToggleUserList = this.handleToggleUserList.bind(this); } componendDidMount() { document.title = this.props.presentationTitle; } handleToggleUserList() { this.props.toggleUserList(); } inviteUserToBreakout(breakout, breakoutURL) { this.setState({ didSendBreakoutInvite: true }, () => { openBreakoutJoinConfirmation.call(this, breakoutURL, breakout.name); }); } render() { const { hasUnreadMessages, beingRecorded, clientBuildInfo } = this.props; let toggleBtnClasses = {}; toggleBtnClasses[styles.btn] = true; toggleBtnClasses[styles.btnWithNotificationDot] = hasUnreadMessages; return (
{this.renderPresentationTitle()}
); } renderPresentationTitle() { const { meetingId, currentUserId, } = this.props; const presentationTitle = this.props.presentationTitle; const breakouts = this.props.breakouts; const isMeetingBreakout = breakouts.find(b => b.breakoutMeetingId === meetingId); if (!breakouts.length || isMeetingBreakout) { return (

{presentationTitle}

); } return (

{presentationTitle}

{breakouts.map(breakout => this.renderBreakoutItem(breakout))}
); } componentDidUpdate() { const { breakouts, currentUserId, meetingId, getBreakoutJoinURL, } = this.props; breakouts.forEach(breakout => { if (!breakout.users) { return; } const breakoutURL = getBreakoutJoinURL(breakout); const meetingIsBreakout = meetingId === breakout.breakoutMeetingId; if (!this.state.didSendBreakoutInvite && !meetingIsBreakout) { this.inviteUserToBreakout(breakout, breakoutURL); } }); if (!breakouts.length && this.state.didSendBreakoutInvite) { this.setState({ didSendBreakoutInvite: false }); } } renderBreakoutItem(breakout) { const { getBreakoutJoinURL, } = this.props; const breakoutName = breakout.name; const breakoutURL = getBreakoutJoinURL(breakout); return ( ); } } NavBar.propTypes = propTypes; NavBar.defaultProps = defaultProps; export default NavBar;