From 8796a51f0292c69dc3047876693482348e7026d1 Mon Sep 17 00:00:00 2001 From: TheMelmacian <76712303+TheMelmacian@users.noreply.github.com> Date: Thu, 13 Apr 2023 14:22:53 +0200 Subject: [PATCH] Fix item details not fully updated on version change --- src/controllers/itemDetails/index.js | 32 +++++++++++++++++----------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index 5c59483291..943b5f74a2 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -113,6 +113,11 @@ function getProgramScheduleHtml(items, action = 'none') { }); } +function getSelectedMediaSource(page, mediaSources) { + const mediaSourceId = page.querySelector('.selectSource').value; + return mediaSources.filter(m => m.Id === mediaSourceId)[0]; +} + function renderSeriesTimerSchedule(page, apiClient, seriesTimerId) { apiClient.getLiveTvTimers({ UserId: apiClient.getCurrentUserId(), @@ -206,10 +211,7 @@ function renderTrackSelections(page, instance, item, forceReload) { } function renderVideoSelections(page, mediaSources) { - const mediaSourceId = page.querySelector('.selectSource').value; - const mediaSource = mediaSources.filter(function (m) { - return m.Id === mediaSourceId; - })[0]; + const mediaSource = getSelectedMediaSource(page, mediaSources); const tracks = mediaSource.MediaStreams.filter(function (m) { return m.Type === 'Video'; @@ -243,10 +245,8 @@ function renderVideoSelections(page, mediaSources) { } function renderAudioSelections(page, mediaSources) { - const mediaSourceId = page.querySelector('.selectSource').value; - const mediaSource = mediaSources.filter(function (m) { - return m.Id === mediaSourceId; - })[0]; + const mediaSource = getSelectedMediaSource(page, mediaSources); + const tracks = mediaSource.MediaStreams.filter(function (m) { return m.Type === 'Audio'; }); @@ -273,10 +273,8 @@ function renderAudioSelections(page, mediaSources) { } function renderSubtitleSelections(page, mediaSources) { - const mediaSourceId = page.querySelector('.selectSource').value; - const mediaSource = mediaSources.filter(function (m) { - return m.Id === mediaSourceId; - })[0]; + const mediaSource = getSelectedMediaSource(page, mediaSources); + const tracks = mediaSource.MediaStreams.filter(function (m) { return m.Type === 'Subtitle'; }); @@ -2029,6 +2027,7 @@ export default function (view, params) { renderVideoSelections(view, self._currentPlaybackMediaSources); renderAudioSelections(view, self._currentPlaybackMediaSources); renderSubtitleSelections(view, self._currentPlaybackMediaSources); + updateMiscInfo(); }); view.addEventListener('viewshow', function (e) { const page = this; @@ -2063,5 +2062,14 @@ export default function (view, params) { }); } + function updateMiscInfo() { + const selectedMediaSource = getSelectedMediaSource(view, self._currentPlaybackMediaSources); + renderMiscInfo(view, { + // patch currentItem (primary item) with details from the selected MediaSource: + ...currentItem, + ...selectedMediaSource + }); + } + init(); }