diff options
author | Starfall <us@starfall.systems> | 2020-08-12 10:08:13 -0500 |
---|---|---|
committer | Starfall <us@starfall.systems> | 2020-08-12 10:08:13 -0500 |
commit | 7f4995774f3a4aaa5440d79faa827ef2bf4064ce (patch) | |
tree | 08fec9058e6bbba4918db9194dd9548ebc5b0b66 /app/javascript/flavours/glitch/features/audio/index.js | |
parent | 29da0014419d0403ecf78f443e74ad6e2246627f (diff) | |
parent | 660188c9008761ae38d0e82dea841f7d90e199f9 (diff) |
Merge branch 'glitch' into main
Diffstat (limited to 'app/javascript/flavours/glitch/features/audio/index.js')
-rw-r--r-- | app/javascript/flavours/glitch/features/audio/index.js | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/app/javascript/flavours/glitch/features/audio/index.js b/app/javascript/flavours/glitch/features/audio/index.js index 4e85e3c58..7a2fb7fb6 100644 --- a/app/javascript/flavours/glitch/features/audio/index.js +++ b/app/javascript/flavours/glitch/features/audio/index.js @@ -68,11 +68,13 @@ class Audio extends React.PureComponent { const width = this.player.offsetWidth; const height = this.props.fullscreen ? this.player.offsetHeight : (width / (16/9)); - if (this.props.cacheWidth) { - this.props.cacheWidth(width); - } + if (width && width != this.state.containerWidth) { + if (this.props.cacheWidth) { + this.props.cacheWidth(width); + } - this.setState({ width, height }); + this.setState({ width, height }); + } } setSeekRef = c => { @@ -102,6 +104,10 @@ class Audio extends React.PureComponent { } componentDidUpdate (prevProps, prevState) { + if (this.player) { + this._setDimensions(); + } + if (prevProps.src !== this.props.src || this.state.width !== prevState.width || this.state.height !== prevState.height || prevProps.accentColor !== this.props.accentColor) { this._clear(); this._draw(); @@ -113,6 +119,10 @@ class Audio extends React.PureComponent { } togglePlay = () => { + if (!this.audioContext) { + this._initAudioContext(); + } + if (this.state.paused) { this.setState({ paused: false }, () => this.audio.play()); } else { @@ -131,10 +141,6 @@ class Audio extends React.PureComponent { handlePlay = () => { this.setState({ paused: false }); - if (this.canvas && !this.audioContext) { - this._initAudioContext(); - } - if (this.audioContext && this.audioContext.state === 'suspended') { this.audioContext.resume(); } @@ -254,8 +260,9 @@ class Audio extends React.PureComponent { } _initAudioContext () { - const context = new AudioContext(); - const source = context.createMediaElementSource(this.audio); + const AudioContext = window.AudioContext || window.webkitAudioContext; + const context = new AudioContext(); + const source = context.createMediaElementSource(this.audio); this.visualizer.setAudioContext(context, source); source.connect(context.destination); |