diff --git a/changes/changelog.d/514.bugfix b/changes/changelog.d/514.bugfix new file mode 100644 index 0000000000000000000000000000000000000000..6579fd59cc05994558ebbd1d785bd5262b9d0431 --- /dev/null +++ b/changes/changelog.d/514.bugfix @@ -0,0 +1 @@ +Fixed toggle mute in volume bar does not restore previous volume level (#514) diff --git a/front/src/components/audio/Player.vue b/front/src/components/audio/Player.vue index 8e4185c0c6f285346b1101377386f08fe9555a68..de1adef50a58f9375dd12794f8cb47c595b72d4a 100644 --- a/front/src/components/audio/Player.vue +++ b/front/src/components/audio/Player.vue @@ -86,13 +86,13 @@ v-bind:class="{ active : showVolume }"> <i :title="labels.unmute" - @click="$store.commit('player/volume', 1)" v-if="volume === 0" class="volume off secondary icon"></i> + @click="unmute" v-if="volume === 0" class="volume off secondary icon"></i> <i :title="labels.mute" - @click="$store.commit('player/volume', 0)" v-else-if="volume < 0.5" class="volume down secondary icon"></i> + @click="mute" v-else-if="volume < 0.5" class="volume down secondary icon"></i> <i :title="labels.mute" - @click="$store.commit('player/volume', 0)" v-else class="volume up secondary icon"></i> + @click="mute" v-else class="volume up secondary icon"></i> <input type="range" step="0.05" @@ -202,6 +202,8 @@ export default { methods: { ...mapActions({ togglePlay: 'player/togglePlay', + mute: 'player/mute', + unmute: 'player/unmute', clean: 'queue/clean', updateProgress: 'player/updateProgress' }), diff --git a/front/src/store/player.js b/front/src/store/player.js index 2149b51ffc63587a60df9eaa655d6652deda964f..dc01f368b0c056499d39502eb24459197caa6366 100644 --- a/front/src/store/player.js +++ b/front/src/store/player.js @@ -9,6 +9,7 @@ export default { errorCount: 0, playing: false, volume: 0.5, + tempVolume: 0.5, duration: 0, currentTime: 0, errored: false, @@ -25,6 +26,12 @@ export default { value = Math.max(value, 0) state.volume = value }, + tempVolume (state, value) { + value = parseFloat(value) + value = Math.min(value, 1) + value = Math.max(value, 0) + state.tempVolume = value + }, incrementVolume (state, value) { value = parseFloat(state.volume + value) value = Math.min(value, 1) @@ -110,6 +117,13 @@ export default { }, updateProgress ({commit}, t) { commit('currentTime', t) + }, + mute({commit, state}) { + commit('tempVolume', state.volume) + commit('volume', 0) + }, + unmute({commit, state}) { + commit('volume', state.tempVolume) } } } diff --git a/front/tests/unit/specs/store/player.spec.js b/front/tests/unit/specs/store/player.spec.js index a110bf4c2472ce9dea25128fab1165c7da5118cc..13a3fd7630ab7974aa0a6534253ded81433e0003 100644 --- a/front/tests/unit/specs/store/player.spec.js +++ b/front/tests/unit/specs/store/player.spec.js @@ -176,5 +176,24 @@ describe('store/player', () => { ] }) }) + it('mute', () => { + testAction({ + action: store.actions.mute, + params: {state: { volume: 0.7, tempVolume: 0}}, + expectedMutations: [ + { type: 'tempVolume', payload: 0.7 }, + { type: 'volume', payload: 0 }, + ] + }) + }) + it('unmute', () => { + testAction({ + action: store.actions.unmute, + params: {state: { volume: 0, tempVolume: 0.8}}, + expectedMutations: [ + { type: 'volume', payload: 0.8 }, + ] + }) + }) }) })