forked from fedi/mastodon
Fix confusing behavior of mute button and volume slider in web UI (#26860)
This commit is contained in:
parent
33c8708a1a
commit
91040da871
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue