diff --git a/src/controllers/playback/video/index.js b/src/controllers/playback/video/index.js index 7732537b09..2fffb43ce5 100644 --- a/src/controllers/playback/video/index.js +++ b/src/controllers/playback/video/index.js @@ -1835,21 +1835,11 @@ export default function (view) { }; nowPlayingPositionSlider.getMarkerInfo = function () { - const markers = []; - - const item = currentItem; - // use markers based on chapters - if (item?.Chapters?.length) { - item.Chapters.forEach(currentChapter => { - markers.push({ - name: currentChapter.Name, - progress: currentChapter.StartPositionTicks / item.RunTimeTicks - }); - }); - } - - return markers; + return currentItem?.Chapters?.map(currentChapter => ({ + name: currentChapter.Name, + progress: currentChapter.StartPositionTicks / currentItem.RunTimeTicks + })) || []; }; view.querySelector('.btnPreviousTrack').addEventListener('click', function () { diff --git a/src/elements/emby-slider/emby-slider.js b/src/elements/emby-slider/emby-slider.js index 03cbf141e2..f4bc38a052 100644 --- a/src/elements/emby-slider/emby-slider.js +++ b/src/elements/emby-slider/emby-slider.js @@ -1,3 +1,5 @@ +import isEqual from 'lodash-es/isEqual'; + import browser from '../../scripts/browser'; import dom from '../../scripts/dom'; import layoutManager from '../../components/layoutManager'; @@ -203,16 +205,20 @@ function setMarker(range, valueMarker, marker, valueProgress) { } function updateMarkers(range, currentValue) { - if (range.getMarkerInfo && !range.markerInfo) { - range.markerInfo = range.getMarkerInfo(); + if (range.getMarkerInfo) { + const newMarkerInfo = range.getMarkerInfo(); - let markersHtml = ''; - range.markerInfo.forEach(() => { - markersHtml += ''; - }); - range.markerContainerElement.innerHTML = markersHtml; + if (!range.markerInfo || !isEqual(range.markerInfo, newMarkerInfo)) { + range.markerInfo = newMarkerInfo; - range.markerElements = range.markerContainerElement.querySelectorAll('.sliderMarker'); + let markersHtml = ''; + range.markerInfo.forEach(() => { + markersHtml += ''; + }); + range.markerContainerElement.innerHTML = markersHtml; + + range.markerElements = range.markerContainerElement.querySelectorAll('.sliderMarker'); + } } if (range.markerInfo?.length && range.markerElements?.length) {