Fix confusing behavior of mute button and volume slider in web UI (#26860)

lolsob-rspec
Claire 2023-09-08 20:39:29 +02:00 committed by GitHub
parent 068c80d0bf
commit 850eca8ab0
2 changed files with 10 additions and 8 deletions

View File

@ -205,11 +205,11 @@ class Audio extends PureComponent {
}; };
toggleMute = () => { toggleMute = () => {
const muted = !this.state.muted; const muted = !(this.state.muted || this.state.volume === 0);
this.setState({ muted }, () => { this.setState((state) => ({ muted, volume: Math.max(state.volume || 0.5, 0.05) }), () => {
if (this.gainNode) { if (this.gainNode) {
this.gainNode.gain.value = muted ? 0 : this.state.volume; this.gainNode.gain.value = this.state.muted ? 0 : this.state.volume;
} }
}); });
}; };
@ -287,7 +287,7 @@ class Audio extends PureComponent {
const { x } = getPointerPosition(this.volume, e); const { x } = getPointerPosition(this.volume, e);
if(!isNaN(x)) { if(!isNaN(x)) {
this.setState({ volume: x }, () => { this.setState((state) => ({ volume: x, muted: state.muted && x === 0 }), () => {
if (this.gainNode) { if (this.gainNode) {
this.gainNode.gain.value = this.state.muted ? 0 : x; this.gainNode.gain.value = this.state.muted ? 0 : x;
} }

View File

@ -217,8 +217,9 @@ class Video extends PureComponent {
const { x } = getPointerPosition(this.volume, e); const { x } = getPointerPosition(this.volume, e);
if(!isNaN(x)) { if(!isNaN(x)) {
this.setState({ volume: x }, () => { this.setState((state) => ({ volume: x, muted: state.muted && x === 0 }), () => {
this.video.volume = x; this.video.volume = x;
this.video.muted = this.state.muted;
}); });
} }
}, 15); }, 15);
@ -425,10 +426,11 @@ class Video extends PureComponent {
}; };
toggleMute = () => { toggleMute = () => {
const muted = !this.video.muted; const muted = !(this.video.muted || this.state.volume === 0);
this.setState({ muted }, () => { this.setState((state) => ({ muted, volume: Math.max(state.volume || 0.5, 0.05) }), () => {
this.video.muted = muted; this.video.volume = this.state.volume;
this.video.muted = this.state.muted;
}); });
}; };