bigbluebutton-Github/bigbluebutton-html5/imports/ui/components/presentation/presentation-uploader/container.jsx

68 lines
2.9 KiB
React
Raw Normal View History

import React, { useContext } from 'react';
2020-02-26 03:29:14 +08:00
import { Meteor } from 'meteor/meteor';
import { withTracker } from 'meteor/react-meteor-data';
import ErrorBoundary from '/imports/ui/components/common/error-boundary/component';
import FallbackModal from '/imports/ui/components/common/fallback-errors/fallback-modal/component';
2017-05-04 00:36:16 +08:00
import Service from './service';
import PresUploaderToast from '/imports/ui/components/presentation/presentation-toast/presentation-uploader-toast/component';
2017-05-04 00:36:16 +08:00
import PresentationUploader from './component';
import { UsersContext } from '/imports/ui/components/components-data/users-context/context';
import Auth from '/imports/ui/services/auth';
import {
isDownloadPresentationWithAnnotationsEnabled,
isDownloadOriginalPresentationEnabled,
isPresentationEnabled,
} from '/imports/ui/services/features';
import { hasAnnotations } from '/imports/ui/components/whiteboard/service';
2020-02-26 03:29:14 +08:00
const PRESENTATION_CONFIG = Meteor.settings.public.presentation;
2017-05-04 00:36:16 +08:00
const PresentationUploaderContainer = (props) => {
const usingUsersContext = useContext(UsersContext);
const { users } = usingUsersContext;
const currentUser = users[Auth.meetingID][Auth.userID];
2023-02-15 05:43:35 +08:00
const userIsPresenter = currentUser.presenter;
return userIsPresenter && (
<ErrorBoundary Fallback={FallbackModal}>
2023-02-15 05:43:35 +08:00
<PresentationUploader isPresenter={userIsPresenter} {...props} />
</ErrorBoundary>
);
};
2017-05-04 00:36:16 +08:00
2021-06-14 20:55:18 +08:00
export default withTracker(() => {
2023-05-01 22:01:04 +08:00
const presentations = Service.getPresentations();
const currentPresentation = presentations.find((p) => p.isCurrent)?.id || '';
const {
dispatchDisableDownloadable,
dispatchEnableDownloadable,
dispatchTogglePresentationDownloadable,
exportPresentation,
} = Service;
const isOpen = isPresentationEnabled() && (Session.get('showUploadPresentationView') || false);
2017-05-04 00:36:16 +08:00
return {
2023-05-01 22:01:04 +08:00
presentations,
currentPresentation,
fileUploadConstraintsHint: PRESENTATION_CONFIG.fileUploadConstraintsHint,
fileSizeMax: PRESENTATION_CONFIG.mirroredFromBBBCore.uploadSizeMax,
filePagesMax: PRESENTATION_CONFIG.mirroredFromBBBCore.uploadPagesMax,
2017-05-04 00:36:16 +08:00
fileValidMimeTypes: PRESENTATION_CONFIG.uploadValidMimeTypes,
allowDownloadOriginal: isDownloadOriginalPresentationEnabled(),
allowDownloadWithAnnotations: isDownloadPresentationWithAnnotationsEnabled(),
handleSave: Service.handleSavePresentation,
handleDismissToast: PresUploaderToast.handleDismissToast,
renderToastList: Service.renderToastList,
renderPresentationItemStatus: PresUploaderToast.renderPresentationItemStatus,
dispatchDisableDownloadable,
dispatchEnableDownloadable,
dispatchTogglePresentationDownloadable,
exportPresentation,
isOpen,
selectedToBeNextCurrent: Session.get('selectedToBeNextCurrent') || null,
externalUploadData: Service.getExternalUploadData(),
2022-12-08 22:20:17 +08:00
handleFiledrop: Service.handleFiledrop,
hasAnnotations,
2017-05-04 00:36:16 +08:00
};
2021-06-14 20:55:18 +08:00
})(PresentationUploaderContainer);