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, };