bigbluebutton-Github/bigbluebutton-html5/imports/ui/components/nav-bar/service.js

61 lines
1.9 KiB
JavaScript
Executable File

import Auth from '/imports/ui/services/auth';
import Breakouts from '/imports/api/breakouts';
import { makeCall } from '/imports/ui/services/api';
import Meetings from '/imports/api/meetings';
import fp from 'lodash/fp';
const getBreakoutByUserId = userId => Breakouts.find({ 'users.userId': userId }).fetch();
const getBreakoutByUser = user => Breakouts.findOne({ users: user });
const getUsersFromBreakouts = breakoutsArray => breakoutsArray
.map(breakout => breakout.users)
.reduce((acc, usersArray) => [...acc, usersArray], []);
const filterUserURLs = userId => breakoutUsersArray => breakoutUsersArray
.filter(user => user.userId === userId);
const getLastURLInserted = breakoutURLArray => breakoutURLArray
.sort((a, b) => a.insertedTime - b.insertedTime).pop();
const getBreakoutUserByUserId = userId => fp.pipe(
getBreakoutByUserId,
getUsersFromBreakouts,
filterUserURLs(userId),
getLastURLInserted,
)(userId);
const getBreakouts = () => Breakouts.find({}, { sort: { sequence: 1 } }).fetch();
const processOutsideToggleRecording = (e) => {
switch (e.data) {
case 'c_record': {
makeCall('toggleRecording');
break;
}
case 'c_recording_status': {
const recordingState = Meetings.findOne({ meetingId: Auth.meetingID }).recordProp.recording;
const recordingMessage = recordingState ? 'recordingStarted' : 'recordingStopped';
this.window.parent.postMessage({ response: recordingMessage }, '*');
break;
}
default: {
// console.log(e.data);
}
}
};
const connectRecordingObserver = () => {
// notify on load complete
this.window.parent.postMessage({ response: 'readyToConnect' }, '*');
};
export default {
connectRecordingObserver: () => connectRecordingObserver(),
processOutsideToggleRecording: arg => processOutsideToggleRecording(arg),
getBreakoutUserByUserId,
getBreakoutByUser,
getBreakouts,
};