45 lines
1011 B
JavaScript
45 lines
1011 B
JavaScript
import { Component } from 'react';
|
|
import PropTypes from 'prop-types';
|
|
import AudioService from '/imports/ui/components/audio/service';
|
|
import {Meteor} from "meteor/meteor";
|
|
|
|
const propTypes = {
|
|
play: PropTypes.bool.isRequired,
|
|
};
|
|
|
|
class ChatAudioAlert extends Component {
|
|
constructor(props) {
|
|
super(props);
|
|
this.handleAudioLoaded = this.handleAudioLoaded.bind(this);
|
|
this.playAudio = this.playAudio.bind(this);
|
|
}
|
|
|
|
componentDidMount() {
|
|
this.handleAudioLoaded();
|
|
}
|
|
|
|
componentWillUnmount() {
|
|
this.handleAudioLoaded();
|
|
}
|
|
|
|
handleAudioLoaded() {
|
|
this.componentDidUpdate = this.playAudio;
|
|
}
|
|
|
|
playAudio() {
|
|
const { play } = this.props;
|
|
if (!play) return;
|
|
AudioService.playAlertSound(`${Meteor.settings.public.app.cdn
|
|
+ Meteor.settings.public.app.basename
|
|
+ Meteor.settings.public.app.instanceId}`
|
|
+ '/resources/sounds/notify.mp3');
|
|
}
|
|
|
|
render() {
|
|
return null;
|
|
}
|
|
}
|
|
ChatAudioAlert.propTypes = propTypes;
|
|
|
|
export default ChatAudioAlert;
|