From afbf29164b48151c3acd15fe142a39150709d040 Mon Sep 17 00:00:00 2001 From: Caetano-dev Date: Sun, 20 Jul 2025 13:56:43 -0300 Subject: [PATCH 1/4] Prevent plaback rate reset when video ends --- .../ft-shaka-video-player.js | 20 +++++++++++++++++++ src/renderer/views/Watch/Watch.js | 4 +++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/renderer/components/ft-shaka-video-player/ft-shaka-video-player.js b/src/renderer/components/ft-shaka-video-player/ft-shaka-video-player.js index 854f3d3dc4afc..8316769afcd63 100644 --- a/src/renderer/components/ft-shaka-video-player/ft-shaka-video-player.js +++ b/src/renderer/components/ft-shaka-video-player/ft-shaka-video-player.js @@ -2502,6 +2502,14 @@ export default defineComponent({ // #region setup onMounted(async () => { + watch(() => props.currentPlaybackRate, + (newRate) => { + if (video.value) { + video.value.playbackRate = newRate + video.value.defaultPlaybackRate = newRate + } + } + ) const videoElement = video.value const volume = sessionStorage.getItem('volume') @@ -2619,6 +2627,14 @@ export default defineComponent({ container.value.classList.add('no-cursor') await performFirstLoad() + const userRate = props.currentPlaybackRate + if (video.value) { + video.value.playbackRate = userRate + video.value.defaultPlaybackRate = userRate + } + if (video.value) { + video.value.playbackRate = props.currentPlaybackRate + } player.addEventListener('ratechange', () => { emit('playback-rate-updated', player.getPlaybackRate()) @@ -2660,6 +2676,10 @@ export default defineComponent({ * if this was triggered by a format change and the user had the captions enabled. */ async function handleLoaded() { + const storedRate = sessionStorage.getItem('playbackRate') + const rate = storedRate !== null ? parseFloat(storedRate) : props.currentPlaybackRate + video.value.playbackRate = rate + video.value.defaultPlaybackRate = rate hasLoaded.value = true emit('loaded') diff --git a/src/renderer/views/Watch/Watch.js b/src/renderer/views/Watch/Watch.js index 3935550bf9a2b..48dd105ff0e4b 100644 --- a/src/renderer/views/Watch/Watch.js +++ b/src/renderer/views/Watch/Watch.js @@ -338,7 +338,8 @@ export default defineComponent({ this.autoplayNextPlaylistVideo = this.autoplayNextPlaylistVideoByDefault this.checkIfTimestamp() - this.currentPlaybackRate = this.$store.getters.getDefaultPlayback + const stored = sessionStorage.getItem('playbackRate') + this.currentPlaybackRate = stored !== null ? parseFloat(stored) : this.$store.getters.getDefaultPlayback }, mounted: function () { this.onMountedDependOnLocalStateLoading() @@ -1770,6 +1771,7 @@ export default defineComponent({ updatePlaybackRate(newRate) { this.currentPlaybackRate = newRate + sessionStorage.setItem('playbackRate', newRate.toString()) }, destroyPlayer: async function() { From 4558dbea293dc1d3c7d7f9c77f29b9ec1c07658f Mon Sep 17 00:00:00 2001 From: Caetano-dev Date: Mon, 21 Jul 2025 10:14:52 -0300 Subject: [PATCH 2/4] remove redundant if statement --- .../components/ft-shaka-video-player/ft-shaka-video-player.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/renderer/components/ft-shaka-video-player/ft-shaka-video-player.js b/src/renderer/components/ft-shaka-video-player/ft-shaka-video-player.js index 8316769afcd63..4935302db6a4e 100644 --- a/src/renderer/components/ft-shaka-video-player/ft-shaka-video-player.js +++ b/src/renderer/components/ft-shaka-video-player/ft-shaka-video-player.js @@ -2632,9 +2632,6 @@ export default defineComponent({ video.value.playbackRate = userRate video.value.defaultPlaybackRate = userRate } - if (video.value) { - video.value.playbackRate = props.currentPlaybackRate - } player.addEventListener('ratechange', () => { emit('playback-rate-updated', player.getPlaybackRate()) From 5f675e792313004dbc3be544a305af8c90b955c2 Mon Sep 17 00:00:00 2001 From: Caetano-dev Date: Mon, 21 Jul 2025 11:00:42 -0300 Subject: [PATCH 3/4] remove redundant code --- .../ft-shaka-video-player/ft-shaka-video-player.js | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/renderer/components/ft-shaka-video-player/ft-shaka-video-player.js b/src/renderer/components/ft-shaka-video-player/ft-shaka-video-player.js index 4935302db6a4e..23f5dc382dcf1 100644 --- a/src/renderer/components/ft-shaka-video-player/ft-shaka-video-player.js +++ b/src/renderer/components/ft-shaka-video-player/ft-shaka-video-player.js @@ -2627,11 +2627,6 @@ export default defineComponent({ container.value.classList.add('no-cursor') await performFirstLoad() - const userRate = props.currentPlaybackRate - if (video.value) { - video.value.playbackRate = userRate - video.value.defaultPlaybackRate = userRate - } player.addEventListener('ratechange', () => { emit('playback-rate-updated', player.getPlaybackRate()) @@ -2673,10 +2668,6 @@ export default defineComponent({ * if this was triggered by a format change and the user had the captions enabled. */ async function handleLoaded() { - const storedRate = sessionStorage.getItem('playbackRate') - const rate = storedRate !== null ? parseFloat(storedRate) : props.currentPlaybackRate - video.value.playbackRate = rate - video.value.defaultPlaybackRate = rate hasLoaded.value = true emit('loaded') From 5c7ebb7b4c1f6b9d25c590e962cd28e735cf2932 Mon Sep 17 00:00:00 2001 From: Caetano-dev Date: Sun, 17 Aug 2025 19:52:28 -0300 Subject: [PATCH 4/4] remove session storage --- src/renderer/views/Watch/Watch.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/renderer/views/Watch/Watch.js b/src/renderer/views/Watch/Watch.js index 48dd105ff0e4b..3935550bf9a2b 100644 --- a/src/renderer/views/Watch/Watch.js +++ b/src/renderer/views/Watch/Watch.js @@ -338,8 +338,7 @@ export default defineComponent({ this.autoplayNextPlaylistVideo = this.autoplayNextPlaylistVideoByDefault this.checkIfTimestamp() - const stored = sessionStorage.getItem('playbackRate') - this.currentPlaybackRate = stored !== null ? parseFloat(stored) : this.$store.getters.getDefaultPlayback + this.currentPlaybackRate = this.$store.getters.getDefaultPlayback }, mounted: function () { this.onMountedDependOnLocalStateLoading() @@ -1771,7 +1770,6 @@ export default defineComponent({ updatePlaybackRate(newRate) { this.currentPlaybackRate = newRate - sessionStorage.setItem('playbackRate', newRate.toString()) }, destroyPlayer: async function() {