Enhance video playback logic by introducing a play signal check for active slides

This commit is contained in:
CodeDevMLH
2026-03-24 00:38:04 +01:00
parent c833a94c3f
commit 664eecf779

View File

@@ -1879,11 +1879,11 @@ const SlideCreator = {
event.target.setPlaybackQuality(quality);
}
// Only play if this is the active slide
// Only play if this is the active slide and the play signal has been issued (delay finished)
const slide = document.querySelector(`.slide[data-item-id="${itemId}"]`);
const isVideoPlayerOpen = document.querySelector('.videoPlayerContainer') || document.querySelector('.youtubePlayerContainer');
if (slide && slide.classList.contains('active') && !document.hidden && (!isVideoPlayerOpen || isVideoPlayerOpen.classList.contains('hide'))) {
if (slide && slide.classList.contains('active') && slide.dataset.playVideoSignal === "true" && !document.hidden && (!isVideoPlayerOpen || isVideoPlayerOpen.classList.contains('hide'))) {
event.target.playVideo();
// Check if it actually started playing after a short delay (handling autoplay blocks)
@@ -2481,6 +2481,7 @@ const SlideshowManager = {
void currentSlide.offsetWidth;
currentSlide.classList.add("active");
currentSlide.dataset.playVideoSignal = "false";
// Manage Video Playback: Stop others, Play current
// 1. Stop all other YouTube players and local video elements, release connections
@@ -2581,6 +2582,8 @@ const SlideshowManager = {
// play logic
const playVideoLogic = () => {
if (!currentSlide.classList.contains('active')) return;
currentSlide.dataset.playVideoSignal = "true";
if (videoBackdrop.tagName === 'VIDEO') {
videoBackdrop.play().catch(e => {