Compare commits

...

4 Commits

Author SHA1 Message Date
CodeDevMLH
4ddd83ba4d Update manifest.json for release v1.8.1.5 [skip ci] 2026-03-23 23:44:24 +00:00
CodeDevMLH
b08a93718e Bump version to 1.8.1.5
All checks were successful
Auto Release Plugin / build-and-release (push) Successful in 47s
2026-03-24 00:43:37 +01:00
CodeDevMLH
eecb81d59a Implement play signal management for slideshow video playback 2026-03-24 00:43:17 +01:00
CodeDevMLH
664eecf779 Enhance video playback logic by introducing a play signal check for active slides 2026-03-24 00:38:04 +01:00
3 changed files with 12 additions and 7 deletions

View File

@@ -12,7 +12,7 @@
<!-- <TreatWarningsAsErrors>false</TreatWarningsAsErrors> --> <!-- <TreatWarningsAsErrors>false</TreatWarningsAsErrors> -->
<Title>Jellyfin Media Bar Enhanced Plugin</Title> <Title>Jellyfin Media Bar Enhanced Plugin</Title>
<Authors>CodeDevMLH</Authors> <Authors>CodeDevMLH</Authors>
<Version>1.8.1.4</Version> <Version>1.8.1.5</Version>
<RepositoryUrl>https://github.com/CodeDevMLH/jellyfin-plugin-media-bar-enhanced</RepositoryUrl> <RepositoryUrl>https://github.com/CodeDevMLH/jellyfin-plugin-media-bar-enhanced</RepositoryUrl>
</PropertyGroup> </PropertyGroup>

View File

@@ -112,6 +112,7 @@ const STATE = {
customTrailerUrls: {}, customTrailerUrls: {},
ytPromise: null, ytPromise: null,
autoplayTimeouts: [], autoplayTimeouts: [],
playSignals: {},
}, },
}; };
@@ -398,6 +399,7 @@ const resetSlideshowState = () => {
STATE.slideshow.customTrailerUrls = {}; STATE.slideshow.customTrailerUrls = {};
STATE.slideshow.totalItems = 0; STATE.slideshow.totalItems = 0;
STATE.slideshow.isLoading = false; STATE.slideshow.isLoading = false;
STATE.slideshow.playSignals = {};
}; };
/** /**
@@ -1879,11 +1881,11 @@ const SlideCreator = {
event.target.setPlaybackQuality(quality); 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 slide = document.querySelector(`.slide[data-item-id="${itemId}"]`);
const isVideoPlayerOpen = document.querySelector('.videoPlayerContainer') || document.querySelector('.youtubePlayerContainer'); 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') && STATE.slideshow.playSignals[itemId] === true && !document.hidden && (!isVideoPlayerOpen || isVideoPlayerOpen.classList.contains('hide'))) {
event.target.playVideo(); event.target.playVideo();
// Check if it actually started playing after a short delay (handling autoplay blocks) // Check if it actually started playing after a short delay (handling autoplay blocks)
@@ -2481,6 +2483,7 @@ const SlideshowManager = {
void currentSlide.offsetWidth; void currentSlide.offsetWidth;
currentSlide.classList.add("active"); currentSlide.classList.add("active");
STATE.slideshow.playSignals[currentItemId] = false;
// Manage Video Playback: Stop others, Play current // Manage Video Playback: Stop others, Play current
// 1. Stop all other YouTube players and local video elements, release connections // 1. Stop all other YouTube players and local video elements, release connections
@@ -2582,6 +2585,8 @@ const SlideshowManager = {
const playVideoLogic = () => { const playVideoLogic = () => {
if (!currentSlide.classList.contains('active')) return; if (!currentSlide.classList.contains('active')) return;
STATE.slideshow.playSignals[currentItemId] = true;
if (videoBackdrop.tagName === 'VIDEO') { if (videoBackdrop.tagName === 'VIDEO') {
videoBackdrop.play().catch(e => { videoBackdrop.play().catch(e => {
if (!STATE.slideshow.isMuted) { if (!STATE.slideshow.isMuted) {

View File

@@ -9,12 +9,12 @@
"imageUrl": "https://git.mahom03-spacecloud.de/CodeDevMLH/jellyfin-plugin-media-bar-enhanced/raw/branch/main/logo.png", "imageUrl": "https://git.mahom03-spacecloud.de/CodeDevMLH/jellyfin-plugin-media-bar-enhanced/raw/branch/main/logo.png",
"versions": [ "versions": [
{ {
"version": "1.8.1.4", "version": "1.8.1.5",
"changelog": "- fix pagination dot issue on mobile when showing more than 10 dots (should now dynamically adjust the max dots threshold based on screen size)\n- add option to delay trailer playback\n- add option to limit the plot width", "changelog": "- fix pagination dot issue on mobile when showing more than 10 dots (should now dynamically adjust the max dots threshold based on screen size)\n- add option to delay trailer playback\n- add option to limit the plot width",
"targetAbi": "10.11.0.0", "targetAbi": "10.11.0.0",
"sourceUrl": "https://git.mahom03-spacecloud.de/CodeDevMLH/jellyfin-plugin-media-bar-enhanced/releases/download/v1.8.1.4/Jellyfin.Plugin.MediaBarEnhanced.zip", "sourceUrl": "https://git.mahom03-spacecloud.de/CodeDevMLH/jellyfin-plugin-media-bar-enhanced/releases/download/v1.8.1.5/Jellyfin.Plugin.MediaBarEnhanced.zip",
"checksum": "5caa751c6979b6d0da221bae6989a174", "checksum": "c619ba23098a62cacf30351573cf4a3f",
"timestamp": "2026-03-23T23:18:10Z" "timestamp": "2026-03-23T23:44:23Z"
}, },
{ {
"version": "1.8.0.0", "version": "1.8.0.0",