From 8ecdf29d9d53827c00d17e24c29a5f010022225e Mon Sep 17 00:00:00 2001 From: kizey Date: Wed, 25 Dec 2024 04:21:29 +0400 Subject: [PATCH 1/3] feat: use state in Watch for playback rate value instead defaultPlayback store value directly --- .../ft-shaka-video-player.js | 24 +++++++++++-------- src/renderer/views/Watch/Watch.js | 7 +++++- src/renderer/views/Watch/Watch.vue | 2 ++ 3 files changed, 22 insertions(+), 11 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 52f0a7555cfa5..bf651d6a83646 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 @@ -123,13 +123,18 @@ export default defineComponent({ type: String, default: null }, + currentPlaybackRate: { + type: Number, + default: () => 1.0 + }, }, emits: [ 'error', 'loaded', 'ended', 'timeupdate', - 'toggle-theatre-mode' + 'toggle-theatre-mode', + 'current-playback-rate-update' ], setup: function (props, { emit, expose }) { const { locale, t } = useI18n() @@ -235,11 +240,6 @@ export default defineComponent({ }) }) - /** @type {import('vue').ComputedRef} */ - const defaultPlayback = computed(() => { - return store.getters.getDefaultPlayback - }) - /** @type {import('vue').ComputedRef} */ const defaultSkipInterval = computed(() => { return store.getters.getDefaultSkipInterval @@ -901,8 +901,8 @@ export default defineComponent({ // stop shaka-player's click handler firing event.stopPropagation() - video.value.playbackRate = defaultPlayback.value - video.value.defaultPlaybackRate = defaultPlayback.value + video.value.playbackRate = props.currentPlaybackRate + video.value.defaultPlaybackRate = props.currentPlaybackRate } } @@ -2310,8 +2310,8 @@ export default defineComponent({ videoElement.muted = (muted === 'true') } - videoElement.playbackRate = defaultPlayback.value - videoElement.defaultPlaybackRate = defaultPlayback.value + videoElement.playbackRate = props.currentPlaybackRate + videoElement.defaultPlaybackRate = props.currentPlaybackRate const localPlayer = new shaka.Player() @@ -2413,6 +2413,10 @@ export default defineComponent({ container.value.classList.add('no-cursor') await performFirstLoad() + + player.addEventListener('ratechange', () => { + emit('current-playback-rate-update', video.value.playbackRate) + }) }) async function performFirstLoad() { diff --git a/src/renderer/views/Watch/Watch.js b/src/renderer/views/Watch/Watch.js index 91e7017ce42b0..a9758ebbd91f7 100644 --- a/src/renderer/views/Watch/Watch.js +++ b/src/renderer/views/Watch/Watch.js @@ -133,7 +133,8 @@ export default defineComponent({ customErrorIcon: null, videoGenreIsMusic: false, /** @type {Date|null} */ - streamingDataExpiryDate: null + streamingDataExpiryDate: null, + currentPlaybackRate: parseFloat(this.$store.getters.getDefaultPlayback) } }, computed: { @@ -1670,6 +1671,10 @@ export default defineComponent({ this.blockVideoAutoplay = false }, + updatePlaybackRate(newRate) { + this.currentPlaybackRate = newRate + }, + ...mapActions([ 'updateHistory', 'updateWatchProgress', diff --git a/src/renderer/views/Watch/Watch.vue b/src/renderer/views/Watch/Watch.vue index 42e2fd3d55bbf..c04d2faff1c2f 100644 --- a/src/renderer/views/Watch/Watch.vue +++ b/src/renderer/views/Watch/Watch.vue @@ -34,12 +34,14 @@ :theatre-possible="theatrePossible" :use-theatre-mode="useTheatreMode" :vr-projection="vrProjection" + :current-playback-rate="currentPlaybackRate" class="videoPlayer" @error="handlePlayerError" @loaded="handleVideoLoaded" @timeupdate="updateCurrentChapter" @ended="handleVideoEnded" @toggle-theatre-mode="useTheatreMode = !useTheatreMode" + @current-playback-rate-update="updatePlaybackRate" />
Date: Thu, 26 Dec 2024 10:10:57 +0400 Subject: [PATCH 2/3] refactor: update playback rate handling in ft-shaka-video-player and Watch components - Changed default playback rate from 1.0 to 1 in ft-shaka-video-player.js - Renamed event from 'current-playback-rate-update' to 'playback-rate-updated' in ft-shaka-video-player.js and Watch.vue - Updated Watch.js to initialize currentPlaybackRate to null and set it based on store value in mounted lifecycle hook --- .../ft-shaka-video-player/ft-shaka-video-player.js | 6 +++--- src/renderer/views/Watch/Watch.js | 3 ++- src/renderer/views/Watch/Watch.vue | 2 +- 3 files changed, 6 insertions(+), 5 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 bf651d6a83646..703df0ce73714 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 @@ -125,7 +125,7 @@ export default defineComponent({ }, currentPlaybackRate: { type: Number, - default: () => 1.0 + default: () => 1 }, }, emits: [ @@ -134,7 +134,7 @@ export default defineComponent({ 'ended', 'timeupdate', 'toggle-theatre-mode', - 'current-playback-rate-update' + 'playback-rate-updated' ], setup: function (props, { emit, expose }) { const { locale, t } = useI18n() @@ -2415,7 +2415,7 @@ export default defineComponent({ await performFirstLoad() player.addEventListener('ratechange', () => { - emit('current-playback-rate-update', video.value.playbackRate) + emit('playback-rate-updated', player.getPlaybackRate()) }) }) diff --git a/src/renderer/views/Watch/Watch.js b/src/renderer/views/Watch/Watch.js index a9758ebbd91f7..5b6471e67ac15 100644 --- a/src/renderer/views/Watch/Watch.js +++ b/src/renderer/views/Watch/Watch.js @@ -134,7 +134,7 @@ export default defineComponent({ videoGenreIsMusic: false, /** @type {Date|null} */ streamingDataExpiryDate: null, - currentPlaybackRate: parseFloat(this.$store.getters.getDefaultPlayback) + currentPlaybackRate: null, } }, computed: { @@ -305,6 +305,7 @@ export default defineComponent({ this.activeFormat = this.defaultVideoFormat this.checkIfTimestamp() + this.currentPlaybackRate = parseFloat(this.$store.getters.getDefaultPlayback) }, mounted: function () { this.onMountedDependOnLocalStateLoading() diff --git a/src/renderer/views/Watch/Watch.vue b/src/renderer/views/Watch/Watch.vue index c04d2faff1c2f..d2c792227a8bb 100644 --- a/src/renderer/views/Watch/Watch.vue +++ b/src/renderer/views/Watch/Watch.vue @@ -41,7 +41,7 @@ @timeupdate="updateCurrentChapter" @ended="handleVideoEnded" @toggle-theatre-mode="useTheatreMode = !useTheatreMode" - @current-playback-rate-update="updatePlaybackRate" + @playback-rate-updated="updatePlaybackRate" />
Date: Thu, 26 Dec 2024 19:34:25 +0400 Subject: [PATCH 3/3] refactor: simplify playback rate initialization in ft-shaka-video-player and Watch components --- .../components/ft-shaka-video-player/ft-shaka-video-player.js | 2 +- src/renderer/views/Watch/Watch.js | 2 +- 2 files changed, 2 insertions(+), 2 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 703df0ce73714..0d83ea8ac926e 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 @@ -125,7 +125,7 @@ export default defineComponent({ }, currentPlaybackRate: { type: Number, - default: () => 1 + default: 1 }, }, emits: [ diff --git a/src/renderer/views/Watch/Watch.js b/src/renderer/views/Watch/Watch.js index 5b6471e67ac15..6fb6b725a91b8 100644 --- a/src/renderer/views/Watch/Watch.js +++ b/src/renderer/views/Watch/Watch.js @@ -305,7 +305,7 @@ export default defineComponent({ this.activeFormat = this.defaultVideoFormat this.checkIfTimestamp() - this.currentPlaybackRate = parseFloat(this.$store.getters.getDefaultPlayback) + this.currentPlaybackRate = this.$store.getters.getDefaultPlayback }, mounted: function () { this.onMountedDependOnLocalStateLoading()