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 5cca9cef0aa48..4db98eb5ff140 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 @@ -107,16 +107,11 @@ export default defineComponent({ type: String, default: null }, - blockVideoAutoplay: { - type: Boolean, - default: false - } }, emits: [ 'error', 'loaded', 'ended', - 'reset-autoplay-interruption-timeout', 'timeupdate', 'toggle-theatre-mode' ], @@ -160,15 +155,6 @@ export default defineComponent({ */ let sortedCaptions - const blockAutoplay = props.blockVideoAutoplay - if (blockAutoplay) { - resetAutoplayInterruptionTimeout() - } - - function resetAutoplayInterruptionTimeout() { - emit('reset-autoplay-interruption-timeout') - } - // we don't need to sort if we only have one caption or don't have any if (props.captions.length > 1) { // theoretically we would resort when the language changes, but we can't remove captions that we already added to the player @@ -1973,8 +1959,6 @@ export default defineComponent({ * @param {KeyboardEvent} event */ function keyboardShortcutHandler(event) { - resetAutoplayInterruptionTimeout() - if (!player || !hasLoaded.value) { return } @@ -2381,9 +2365,6 @@ export default defineComponent({ document.removeEventListener('keydown', keyboardShortcutHandler) document.addEventListener('keydown', keyboardShortcutHandler) - document.removeEventListener('click', resetAutoplayInterruptionTimeout) - document.addEventListener('click', resetAutoplayInterruptionTimeout) - player.addEventListener('loading', () => { hasLoaded.value = false }) @@ -2692,7 +2673,6 @@ export default defineComponent({ document.body.classList.remove('playerFullWindow') document.removeEventListener('keydown', keyboardShortcutHandler) - document.removeEventListener('click', resetAutoplayInterruptionTimeout) if (resizeObserver) { resizeObserver.disconnect() @@ -2788,7 +2768,6 @@ export default defineComponent({ stats, autoplayVideos, - blockAutoplay, sponsorBlockShowSkippedToast, skippedSponsorBlockSegments, diff --git a/src/renderer/components/ft-shaka-video-player/ft-shaka-video-player.vue b/src/renderer/components/ft-shaka-video-player/ft-shaka-video-player.vue index 6a7e110b76504..4b9519c772718 100644 --- a/src/renderer/components/ft-shaka-video-player/ft-shaka-video-player.vue +++ b/src/renderer/components/ft-shaka-video-player/ft-shaka-video-player.vue @@ -14,7 +14,7 @@ preload="auto" crossorigin="anonymous" playsinline - :autoplay="autoplayVideos && !blockAutoplay ? true : null" + :autoplay="autoplayVideos ? true : null" :poster="thumbnail" @play="handlePlay" @pause="handlePause" diff --git a/src/renderer/views/Watch/Watch.js b/src/renderer/views/Watch/Watch.js index d77efedfc972d..35ac129a7e0b6 100644 --- a/src/renderer/views/Watch/Watch.js +++ b/src/renderer/views/Watch/Watch.js @@ -57,6 +57,7 @@ export default defineComponent({ beforeRouteLeave: async function (to, from, next) { this.handleRouteChange() window.removeEventListener('beforeunload', this.handleWatchProgress) + document.removeEventListener('click', this.resetAutoplayInterruptionTimeout) if (this.$refs.player) { await this.$refs.player.destroyPlayer() @@ -324,6 +325,9 @@ export default defineComponent({ this.getVideoInformationLocal() } + document.removeEventListener('click', this.resetAutoplayInterruptionTimeout) + document.addEventListener('click', this.resetAutoplayInterruptionTimeout) + window.addEventListener('beforeunload', this.handleWatchProgress) this.resetAutoplayInterruptionTimeout() }, @@ -1192,6 +1196,12 @@ export default defineComponent({ return } + if (this.blockVideoAutoplay) { + showToast(this.$t('Canceled next video autoplay due to inactivity')) + this.resetAutoplayInterruptionTimeout() + return + } + if (this.watchingPlaylist && this.getPlaylistPauseOnCurrent()) { this.disablePlaylistPauseOnCurrent() return @@ -1627,7 +1637,7 @@ export default defineComponent({ resetAutoplayInterruptionTimeout() { clearTimeout(this.autoplayInterruptionTimeout) - this.autoplayInterruptionTimeout = setTimeout(() => { this.blockVideoAutoplay = true }, this.defaultAutoplayInterruptionInterval * 3_600_000) + this.autoplayInterruptionTimeout = setTimeout(() => { this.blockVideoAutoplay = true }, this.defaultAutoplayInterruptionInterval * 10_000) this.blockVideoAutoplay = false }, diff --git a/src/renderer/views/Watch/Watch.vue b/src/renderer/views/Watch/Watch.vue index 0ac1b77587825..e9c60192c8322 100644 --- a/src/renderer/views/Watch/Watch.vue +++ b/src/renderer/views/Watch/Watch.vue @@ -34,13 +34,11 @@ :theatre-possible="theatrePossible" :use-theatre-mode="useTheatreMode" :vr-projection="vrProjection" - :block-video-autoplay="blockVideoAutoplay" class="videoPlayer" @error="handlePlayerError" @loaded="handleVideoLoaded" @timeupdate="updateCurrentChapter" @ended="handleVideoEnded" - @reset-autoplay-interruption-timeout="resetAutoplayInterruptionTimeout" @toggle-theatre-mode="useTheatreMode = !useTheatreMode" />