bigbluebutton-Github/bigbluebutton-html5/imports/ui/components/audio/audio-modal/container.jsx

97 lines
3.8 KiB
React
Raw Normal View History

2017-09-29 21:38:10 +08:00
import React from 'react';
import { withTracker } from 'meteor/react-meteor-data';
2017-09-29 21:38:10 +08:00
import { withModalMounter } from '/imports/ui/components/modal/service';
import browser from 'browser-detect';
import getFromUserSettings from '/imports/ui/services/users-settings';
2017-09-29 21:38:10 +08:00
import AudioModal from './component';
import Meetings from '/imports/api/meetings';
import Auth from '/imports/ui/services/auth';
2019-05-24 00:47:56 +08:00
import lockContextContainer from '/imports/ui/components/lock-viewers/context/container';
2019-09-30 22:54:34 +08:00
import AudioError from '/imports/ui/services/audio-manager/error-codes';
import AppService from '/imports/ui/components/app/service';
import {
joinMicrophone,
closeModal,
joinListenOnly,
leaveEchoTest,
getcookieData,
} from './service';
import Storage from '/imports/ui/services/storage/session';
2017-09-29 21:38:10 +08:00
import Service from '../service';
const AudioModalContainer = props => <AudioModal {...props} />;
const APP_CONFIG = Meteor.settings.public.app;
const invalidDialNumbers = ['0', '613-555-1212', '613-555-1234', '0000'];
const isRTL = document.documentElement.getAttribute('dir') === 'rtl';
2020-03-03 21:59:01 +08:00
export default lockContextContainer(withModalMounter(withTracker(({ userLocks }) => {
const listenOnlyMode = getFromUserSettings('bbb_listen_only_mode', APP_CONFIG.listenOnlyMode);
const forceListenOnly = getFromUserSettings('bbb_force_listen_only', APP_CONFIG.forceListenOnly);
const skipCheck = getFromUserSettings('bbb_skip_check_audio', APP_CONFIG.skipCheck);
const skipCheckOnJoin = getFromUserSettings('bbb_skip_check_audio_on_first_join', APP_CONFIG.skipCheckOnJoin);
const autoJoin = getFromUserSettings('bbb_auto_join_audio', APP_CONFIG.autoJoin);
const meeting = Meetings.findOne({ meetingId: Auth.meetingID }, { fields: { voiceProp: 1 } });
const getEchoTest = Storage.getItem('getEchoTest');
2019-04-17 01:04:23 +08:00
let formattedDialNum = '';
let formattedTelVoice = '';
let combinedDialInNum = '';
if (meeting && meeting.voiceProp) {
const { dialNumber, telVoice } = meeting.voiceProp;
if (invalidDialNumbers.indexOf(dialNumber) < 0) {
formattedDialNum = dialNumber;
formattedTelVoice = telVoice;
combinedDialInNum = `${dialNumber.replace(/\D+/g, '')},,,${telVoice.replace(/\D+/g, '')}`;
}
}
const meetingIsBreakout = AppService.meetingIsBreakout();
const { joinedAudio } = getcookieData();
2021-02-11 21:23:38 +08:00
const joinFullAudioImmediately = (autoJoin && (skipCheck || skipCheckOnJoin))
|| (skipCheck || skipCheckOnJoin && !getEchoTest);
const joinFullAudioEchoTest = joinFullAudioImmediately && getEchoTest;
const forceListenOnlyAttendee = forceListenOnly && !Service.isUserModerator();
2020-03-03 21:59:01 +08:00
return ({
joinedAudio,
meetingIsBreakout,
closeModal,
joinMicrophone: skipEchoTest => joinMicrophone(skipEchoTest || skipCheck),
joinListenOnly,
leaveEchoTest,
changeInputDevice: inputDeviceId => Service.changeInputDevice(inputDeviceId),
changeOutputDevice: outputDeviceId => Service.changeOutputDevice(outputDeviceId),
joinEchoTest: () => Service.joinEchoTest(),
exitAudio: () => Service.exitAudio(),
isConnecting: Service.isConnecting(),
isConnected: Service.isConnected(),
isEchoTest: Service.isEchoTest(),
inputDeviceId: Service.inputDeviceId(),
outputDeviceId: Service.outputDeviceId(),
showPermissionsOvelay: Service.isWaitingPermissions(),
2018-03-06 04:00:52 +08:00
listenOnlyMode,
skipCheck,
skipCheckOnJoin,
2019-04-16 00:39:36 +08:00
formattedDialNum,
2019-04-17 01:04:23 +08:00
formattedTelVoice,
combinedDialInNum,
2019-05-24 00:47:56 +08:00
audioLocked: userLocks.userMic,
joinFullAudioImmediately,
joinFullAudioEchoTest,
forceListenOnlyAttendee,
isIOSChrome: browser().name === 'crios',
isMobileNative: navigator.userAgent.toLowerCase().includes('bbbnative'),
2019-03-29 05:53:42 +08:00
isIEOrEdge: browser().name === 'edge' || browser().name === 'ie',
autoplayBlocked: Service.autoplayBlocked(),
handleAllowAutoplay: () => Service.handleAllowAutoplay(),
2019-08-27 04:47:54 +08:00
isRTL,
2019-09-30 22:54:34 +08:00
AudioError,
});
2019-05-24 00:47:56 +08:00
})(AudioModalContainer)));