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

83 lines
2.2 KiB
React
Raw Normal View History

import { Meteor } from 'meteor/meteor';
import { createContainer } from 'meteor/react-meteor-data';
import React, { Component, PropTypes } from 'react';
import { defineMessages, injectIntl } from 'react-intl';
import AudioNotification from './component';
import styles from './styles.scss';
import Button from '/imports/ui/components/button/component';
2017-01-30 23:42:58 +08:00
const intlMessages = defineMessages({
audioFailed: {
id: 'app.audioNotification.audioFailedMessage',
description: 'The audio could not connect, Try again',
},
2017-02-01 00:06:12 +08:00
mediaFailed: {
id: 'app.audioNotification.mediaFailedMessage',
description: 'Could not access getUserMicMedia, Try again',
},
2017-01-30 23:42:58 +08:00
});
class AudioNotificationContainer extends Component {
constructor(props) {
super(props);
this.color = null;
this.message = null;
this.state = {
status: null,
}
this.handleAudioFailure = this.handleAudioFailure.bind(this);
2017-02-01 00:06:12 +08:00
this.handleMediaFailure = this.handleMediaFailure.bind(this);
this.handleClose = this.handleClose.bind(this);
}
componentDidMount() {
window.addEventListener("bbb.webrtc.failed", this.handleAudioFailure);
2017-02-01 00:06:12 +08:00
window.addEventListener("bbb.webrtc.mediaFailed", this.handleMediaFailure);
}
componentWillUnmount() {
window.removeEventListener("bbb.webrtc.failed", this.handleAudioFailure);
2017-02-01 00:06:12 +08:00
window.removeEventListener("bbb.webrtc.mediaFailed", this.handleMediaFailure);
}
handleClose(){
this.color = null;
this.message = null;
this.setState({status: null});
}
handleAudioFailure() {
this.color = 'danger';
2017-01-30 23:42:58 +08:00
this.message = this.props.audioFailure;
this.setState({status: 'failed'});
}
2017-02-01 00:06:12 +08:00
handleMediaFailure() {
this.color = 'danger';
this.message = this.props.mediaFailure;
this.setState({status: 'failed'});
}
render() {
const handleClose = this.handleClose;
return(
<AudioNotification
color={this.color}
message={this.message}
handleClose={this.handleClose}
/>
);
}
}
2017-01-30 23:42:58 +08:00
export default injectIntl(createContainer(({ intl }) => {
let messages = {};
messages.audioFailure = intl.formatMessage(intlMessages.audioFailed);
2017-02-01 00:06:12 +08:00
messages.mediaFailure = intl.formatMessage(intlMessages.mediaFailed);
2017-01-30 23:42:58 +08:00
return messages;
}, AudioNotificationContainer));