Use HTML5 audio element on page rather than direct JS Audio object to satisfy assessment tests

master
Manish 2 years ago
parent 135e6597c4
commit eab504ebc9

@ -210,28 +210,26 @@ class DrumPad extends React.Component {
this.handleClick = this.handleClick.bind(this); this.handleClick = this.handleClick.bind(this);
} }
componentDidMount() {
this.audio = document.getElementById(this.props.drumPadKey);
}
componentDidUpdate() { componentDidUpdate() {
if (this.props.isKeyPressed) { if (this.props.isKeyPressed) {
this.handleClick(); this.handleClick();
} }
} }
// TO-DO: refactor by handling props change here
handleClick() { handleClick() {
this.props.displayDrumPadPress(this.props.noteName); this.props.displayDrumPadPress(this.props.noteName);
this.audio = new Audio(this.props.audioSrc); this.audio.play();
this.audio.currentTime = 0;
this.audio.volume = this.props.volume / 100;
if (this.props.power) {
this.audio.play();
}
} }
render() { render() {
return ( return (
<div className="col-4 p-1"> <div className="col-4 p-1">
<button <button
id={this.props.drumPadKey} id={`${this.props.drumPadKey}-button`}
className={`drum-pad w-100 h-100 btn custom-el-color rounded-0`} className={`drum-pad w-100 h-100 btn custom-el-color rounded-0`}
style={{ style={{
paddingTop: "20%", paddingTop: "20%",
@ -241,6 +239,12 @@ class DrumPad extends React.Component {
onClick={this.handleClick} onClick={this.handleClick}
> >
{this.props.drumPadKey} {this.props.drumPadKey}
<audio
className="clip"
id={this.props.drumPadKey}
src={this.props.audioSrc}
preload="auto"
/>
</button> </button>
</div> </div>
); );

Loading…
Cancel
Save