bigbluebutton-Github/bigbluebutton-html5/imports/ui/components/toast/container.jsx

78 lines
2.3 KiB
React
Raw Normal View History

2017-10-13 02:53:33 +08:00
import React from 'react';
import Breakouts from '/imports/api/breakouts';
import { ToastContainer as Toastify } from 'react-toastify';
import { withTracker } from 'meteor/react-meteor-data';
import { defineMessages, injectIntl } from 'react-intl';
2017-10-21 03:27:00 +08:00
import injectNotify from '/imports/ui/components/toast/inject-notify/component';
2017-10-13 02:53:33 +08:00
import Auth from '/imports/ui/services/auth';
import Meetings from '/imports/api/meetings';
2017-10-13 02:53:33 +08:00
import Icon from '../icon/component';
2018-01-08 14:17:18 +08:00
import { styles } from './styles';
import AudioService from '../audio/service';
2017-10-13 02:53:33 +08:00
const intlMessages = defineMessages({
toastBreakoutRoomEnded: {
2017-12-18 18:19:38 +08:00
id: 'app.toast.breakoutRoomEnded',
description: 'message when the breakout room is ended',
},
notificationRecordingStart: {
id: 'app.notification.recordingStart',
description: 'Notification for when the recording start',
},
notificationRecordingStop: {
id: 'app.notification.recordingStop',
description: 'Notification for when the recording stpop',
},
});
class ToastContainer extends React.Component {
// we never want this component to update since will break Toastify
shouldComponentUpdate() {
return false;
}
render() {
return <Toastify {...this.props} />;
}
}
export default injectIntl(injectNotify(withTracker(({ notify, intl }) => {
Breakouts.find().observeChanges({
removed() {
if (!AudioService.isUsingAudio()) {
notify(intl.formatMessage(intlMessages.toastBreakoutRoomEnded), 'info', 'rooms');
}
},
});
const meetingId = Auth.meetingID;
Meetings.find({ meetingId }).observeChanges({
changed: (id, fields) => {
if (fields.recordProp && fields.recordProp.recording) {
2017-10-21 03:27:00 +08:00
notify(intl.formatMessage(intlMessages.notificationRecordingStart), 'success', 'record');
}
if (fields.recordProp && !fields.recordProp.recording) {
2017-10-21 03:27:00 +08:00
notify(intl.formatMessage(intlMessages.notificationRecordingStop), 'error', 'record');
}
},
});
return {
closeButton: (<Icon className={styles.close} iconName="close" />),
autoClose: 5000,
className: styles.container,
toastClassName: styles.toast,
bodyClassName: styles.body,
progressClassName: styles.progress,
newestOnTop: false,
hideProgressBar: false,
closeOnClick: true,
pauseOnHover: true,
};
})(ToastContainer)));