mirror of https://github.com/FreeTubeApp/FreeTube
Setting loudness to default volume in new videos (#3203)
* Made changes as suggested. * Made player set volume to user default if it was muted by dragging volume slider to zero. Volume and muted are kept track of seperately and both are set on player with respect to how it was set for previous video * added comments * fixed * fixed * Changed comments to be more accurate.
This commit is contained in:
parent
436154b615
commit
3a904b5f83
|
@ -81,6 +81,7 @@ export default defineComponent({
|
|||
id: '',
|
||||
powerSaveBlocker: null,
|
||||
volume: 1,
|
||||
muted: false,
|
||||
player: null,
|
||||
useDash: false,
|
||||
useHls: false,
|
||||
|
@ -305,11 +306,18 @@ export default defineComponent({
|
|||
},
|
||||
mounted: function () {
|
||||
const volume = sessionStorage.getItem('volume')
|
||||
const muted = sessionStorage.getItem('muted')
|
||||
|
||||
if (volume !== null) {
|
||||
this.volume = volume
|
||||
}
|
||||
|
||||
if (muted !== null) {
|
||||
// as sessionStorage stores string values which are truthy by default so we must check with 'true'
|
||||
// otherwise 'false' will be returned as true as well
|
||||
this.muted = (muted === 'true')
|
||||
}
|
||||
|
||||
this.dataSetup.playbackRates = this.playbackRates
|
||||
|
||||
this.createFullWindowButton()
|
||||
|
@ -390,6 +398,7 @@ export default defineComponent({
|
|||
})
|
||||
|
||||
this.player.volume(this.volume)
|
||||
this.player.muted(this.muted)
|
||||
this.player.playbackRate(this.defaultPlayback)
|
||||
this.player.textTrackSettings.setValues(this.defaultCaptionSettings)
|
||||
// Remove big play button
|
||||
|
@ -699,10 +708,21 @@ export default defineComponent({
|
|||
},
|
||||
|
||||
updateVolume: function (_event) {
|
||||
// 0 means muted
|
||||
// https://docs.videojs.com/html5#volume
|
||||
const volume = this.player.muted() ? 0 : this.player.volume()
|
||||
sessionStorage.setItem('volume', volume)
|
||||
if (sessionStorage.getItem('muted') === 'false' && this.player.volume() === 0) {
|
||||
// If video is muted by dragging volume slider, it doesn't change 'muted' in sessionStorage to true
|
||||
// hence compare it with 'false' and set volume to defaultVolume.
|
||||
const volume = parseFloat(sessionStorage.getItem('defaultVolume'))
|
||||
const muted = true
|
||||
sessionStorage.setItem('volume', volume)
|
||||
sessionStorage.setItem('muted', muted)
|
||||
} else {
|
||||
// If volume isn't muted by dragging the slider, muted and volume values are carried over to next video.
|
||||
const volume = this.player.volume()
|
||||
const muted = this.player.muted()
|
||||
sessionStorage.setItem('volume', volume)
|
||||
sessionStorage.setItem('muted', muted)
|
||||
}
|
||||
},
|
||||
|
||||
mouseScrollVolume: function (event) {
|
||||
|
|
|
@ -349,6 +349,8 @@ const stateWithSideEffects = {
|
|||
defaultValue: 1,
|
||||
sideEffectsHandler: (_, value) => {
|
||||
sessionStorage.setItem('volume', value)
|
||||
value === 0 ? sessionStorage.setItem('muted', 'true') : sessionStorage.setItem('muted', 'false')
|
||||
sessionStorage.setItem('defaultVolume', value)
|
||||
}
|
||||
},
|
||||
|
||||
|
|
Loading…
Reference in New Issue