bigbluebutton-Github/bigbluebutton-html5/imports/ui/components/nav-bar/container.jsx

80 lines
2.1 KiB
React
Raw Normal View History

2016-04-29 03:02:51 +08:00
import React, { Component, PropTypes } from 'react';
import { createContainer } from 'meteor/react-meteor-data';
2016-07-21 22:24:50 +08:00
import { withRouter } from 'react-router';
2016-06-18 06:15:11 +08:00
import Meetings from '/imports/api/meetings';
import Auth from '/imports/ui/services/auth';
import userListService from '../user-list/service';
import ChatService from '../chat/service';
import Service from './service';
2017-03-16 00:21:26 +08:00
import { meetingIsBreakout } from '/imports/ui/components/app/service';
import NavBar from './component';
2016-04-29 03:02:51 +08:00
const CHAT_CONFIG = Meteor.settings.public.chat;
const PUBLIC_CHAT_KEY = CHAT_CONFIG.public_id;
class NavBarContainer extends Component {
2016-04-29 03:02:51 +08:00
constructor(props) {
super(props);
}
render() {
return (
2017-03-16 01:54:40 +08:00
<NavBar {...this.props}>
2016-04-29 03:02:51 +08:00
{this.props.children}
</NavBar>
2016-04-29 03:02:51 +08:00
);
}
}
2016-07-21 22:24:50 +08:00
export default withRouter(createContainer(({ location, router }) => {
2016-07-11 20:34:58 +08:00
let meetingTitle;
let meetingRecorded;
2016-06-18 06:15:11 +08:00
const meetingId = Auth.meetingID;
2016-06-29 02:50:44 +08:00
const meetingObject = Meetings.findOne({
meetingId: meetingId,
});
if (meetingObject != null) {
meetingTitle = meetingObject.meetingName;
meetingRecorded = meetingObject.currentlyBeingRecorded;
}
2016-06-18 06:15:11 +08:00
2016-10-12 01:36:28 +08:00
const checkUnreadMessages = () => {
let users = userListService.getUsers();
2016-10-12 01:36:28 +08:00
// 1.map every user id
// 2.filter the user except the current user from the user array
// 3.add the public chat to the array
// 4.check current user has unread messages or not.
return users
.map(user => user.id)
.filter(userID => userID !== Auth.userID)
.concat(PUBLIC_CHAT_KEY)
.some(receiverID => ChatService.hasUnreadMessages(receiverID));
};
2016-11-29 03:48:02 +08:00
const breakouts = Service.getBreakouts();
const currentUserId = Auth.userID;
2016-11-29 03:48:02 +08:00
2016-07-21 22:24:50 +08:00
return {
2016-11-29 03:48:02 +08:00
breakouts,
currentUserId,
meetingId,
getBreakoutJoinURL: Service.getBreakoutJoinURL,
2016-06-25 07:09:32 +08:00
presentationTitle: meetingTitle,
2016-10-12 01:36:28 +08:00
hasUnreadMessages: checkUnreadMessages(),
2017-03-16 01:54:40 +08:00
isBreakoutRoom: meetingIsBreakout(),
2016-06-29 02:50:44 +08:00
beingRecorded: meetingRecorded,
2016-07-21 22:24:50 +08:00
toggleUserList: () => {
if (location.pathname.indexOf('/users') !== -1) {
router.push('/');
} else {
router.push('/users');
}
},
2016-04-29 03:02:51 +08:00
};
2016-07-21 22:24:50 +08:00
}, NavBarContainer));