import React, { useContext } from 'react'; import { withTracker } from 'meteor/react-meteor-data'; import AudioService from '/imports/ui/components/audio/service'; import AudioManager from '/imports/ui/services/audio-manager'; import BreakoutComponent from './component'; import Service from './service'; import { layoutDispatch, layoutSelect } from '../layout/context'; import Auth from '/imports/ui/services/auth'; import { UsersContext } from '/imports/ui/components/components-data/users-context/context'; import { didUserSelectedMicrophone, didUserSelectedListenOnly, } from '/imports/ui/components/audio/audio-modal/service'; import { makeCall } from '/imports/ui/services/api'; const BreakoutContainer = (props) => { const layoutContextDispatch = layoutDispatch(); const usingUsersContext = useContext(UsersContext); const { users } = usingUsersContext; const amIPresenter = users[Auth.meetingID][Auth.userID].presenter; const isRTL = layoutSelect((i) => i.isRTL); return ; }; export default withTracker((props) => { const { endAllBreakouts, requestJoinURL, setBreakoutsTime, sendMessageToAllBreakouts, isNewTimeHigherThanMeetingRemaining, findBreakouts, getBreakoutRoomUrl, transferUserToMeeting, transferToBreakout, meetingId, amIModerator, isUserInBreakoutRoom, } = Service; const breakoutRooms = findBreakouts(); const isMicrophoneUser = AudioService.isConnected() && !AudioService.isListenOnly(); const isMeteorConnected = Meteor.status().connected; const isReconnecting = AudioService.isReconnecting(); const { setBreakoutAudioTransferStatus, getBreakoutAudioTransferStatus, } = AudioService; const logUserCouldNotRejoinAudio = () => { logger.warn({ logCode: 'mainroom_audio_rejoin', extraInfo: { logType: 'user_action' }, }, 'leaving breakout room couldn\'t rejoin audio in the main room'); }; const rejoinAudio = () => { if (didUserSelectedMicrophone()) { AudioManager.joinMicrophone().then(() => { makeCall('toggleVoice', null, true).catch(() => { AudioManager.forceExitAudio(); logUserCouldNotRejoinAudio(); }); }).catch(() => { logUserCouldNotRejoinAudio(); }); } else if (didUserSelectedListenOnly()) { AudioManager.joinListenOnly().catch(() => { logUserCouldNotRejoinAudio(); }); } }; return { ...props, breakoutRooms, endAllBreakouts, requestJoinURL, setBreakoutsTime, sendMessageToAllBreakouts, isNewTimeHigherThanMeetingRemaining, getBreakoutRoomUrl, transferUserToMeeting, transferToBreakout, isMicrophoneUser, meetingId: meetingId(), amIModerator: amIModerator(), isMeteorConnected, isUserInBreakoutRoom, forceExitAudio: () => AudioManager.forceExitAudio(), rejoinAudio, isReconnecting, setBreakoutAudioTransferStatus, getBreakoutAudioTransferStatus, }; })(BreakoutContainer);