import React, { Component } from 'react'; import { withTracker } from 'meteor/react-meteor-data'; import SessionStorage from '/imports/ui/services/storage/session'; import Settings from '/imports/ui/services/settings'; import { defineMessages, injectIntl } from 'react-intl'; import { notify } from '/imports/ui/services/notification'; import VideoService from '/imports/ui/components/video-provider/service'; import Media from './component'; import MediaService, { getSwapLayout } from './service'; import PresentationAreaContainer from '../presentation/container'; import ScreenshareContainer from '../screenshare/container'; import DefaultContent from '../presentation/default-content/component'; const intlMessages = defineMessages({ screenshareStarted: { id: 'app.media.screenshare.start', description: 'toast to show when a screenshare has started', }, screenshareEnded: { id: 'app.media.screenshare.end', description: 'toast to show when a screenshare has ended', }, }); class MediaContainer extends Component { componentWillMount() { const { willMount } = this.props; willMount && willMount(); } componentWillReceiveProps(nextProps) { const { isScreensharing, intl, } = this.props; if (isScreensharing !== nextProps.isScreensharing) { if (nextProps.isScreensharing) { notify(intl.formatMessage(intlMessages.screenshareStarted), 'info', 'desktop'); } else { notify(intl.formatMessage(intlMessages.screenshareEnded), 'info', 'desktop'); } } } render() { return ; } } export default withTracker(() => { const { dataSaving } = Settings; const { viewParticipantsWebcams, viewScreenshare } = dataSaving; const hidePresentation = Boolean(SessionStorage.getItem('metadata').html5hidepresentation); const data = { children: , }; if (MediaService.shouldShowWhiteboard() && !hidePresentation) { data.currentPresentation = MediaService.getPresentationInfo(); data.children = ; } if (MediaService.shouldShowScreenshare() && (viewScreenshare || MediaService.isUserPresenter())) { data.children = ; } const usersVideo = VideoService.getAllUsersVideo(); if (MediaService.shouldShowOverlay() && usersVideo.length) { data.floatingOverlay = usersVideo.length < 2; data.hideOverlay = usersVideo.length === 0; } data.isScreensharing = MediaService.isVideoBroadcasting(); data.swapLayout = getSwapLayout(); data.disableVideo = !viewParticipantsWebcams; if (data.swapLayout) { data.floatingOverlay = true; data.hideOverlay = hidePresentation; } const { enableVideo } = Meteor.settings.public.kurento; const autoShareWebcam = Boolean(SessionStorage.getItem('metadata').html5autosharewebcam); if (enableVideo && autoShareWebcam) { data.willMount = VideoService.joinVideo; } return data; })(injectIntl(MediaContainer));