diff --git a/scripts/watchlist.js b/scripts/watchlist.js index afcb891..48c06f6 100644 --- a/scripts/watchlist.js +++ b/scripts/watchlist.js @@ -24,6 +24,8 @@ In the Custom Tabs plugin, add a new tab with the following HTML content: const WATCHLIST_CACHE_TTL = 5 * 60 * 1000; // 5 minutes + const SUPPORTED_WATCHLIST_ITEM_TYPES = ['Movie', 'Series', 'Season', 'Episode', 'Video', 'BoxSet', 'Playlist']; + // Playback monitoring for watchlist cleanup let playbackMonitorInitialized = false; @@ -2315,22 +2317,31 @@ In the Custom Tabs plugin, add a new tab with the following HTML content: try { // Fetch watchlist data - const watchlistData = await window.apiHelper.getWatchlistItems({ IncludeItemTypes: 'Movie,Series,Season,Episode' }); + const watchlistData = await window.apiHelper.getWatchlistItems({ IncludeItemTypes: SUPPORTED_WATCHLIST_ITEM_TYPES.join(',') }); localStorageCache.set('watchlist_movies', watchlistData.Items.filter(item => item.Type === 'Movie')); localStorageCache.set('watchlist_series', watchlistData.Items.filter(item => item.Type === 'Series')); localStorageCache.set('watchlist_seasons', watchlistData.Items.filter(item => item.Type === 'Season')); localStorageCache.set('watchlist_episodes', watchlistData.Items.filter(item => item.Type === 'Episode')); + localStorageCache.set('watchlist_videos', watchlistData.Items.filter(item => item.Type === 'Video')); + localStorageCache.set('watchlist_boxsets', watchlistData.Items.filter(item => item.Type === 'BoxSet')); + localStorageCache.set('watchlist_playlists', watchlistData.Items.filter(item => item.Type === 'Playlist')); watchlistCache.movies.data = watchlistData.Items.filter(item => item.Type === 'Movie'); watchlistCache.series.data = watchlistData.Items.filter(item => item.Type === 'Series'); watchlistCache.seasons.data = watchlistData.Items.filter(item => item.Type === 'Season'); watchlistCache.episodes.data = watchlistData.Items.filter(item => item.Type === 'Episode'); + watchlistCache.videos.data = watchlistData.Items.filter(item => item.Type === 'Video'); + watchlistCache.boxsets.data = watchlistData.Items.filter(item => item.Type === 'BoxSet'); + watchlistCache.playlists.data = watchlistData.Items.filter(item => item.Type === 'Playlist'); // Initialize all watchlist sections in parallel await Promise.all([ initWatchlistSection('movies', 'Movie'), initWatchlistSection('series', 'Series'), initWatchlistSection('seasons', 'Season'), - initWatchlistSection('episodes', 'Episode') + initWatchlistSection('episodes', 'Episode'), + initWatchlistSection('videos', 'Video'), + initWatchlistSection('boxsets', 'BoxSet'), + initWatchlistSection('playlists', 'Playlist') ]); tabStates.watchlist.isDataFetched = true; @@ -3043,7 +3054,20 @@ In the Custom Tabs plugin, add a new tab with the following HTML content: movies: { data: [] }, series: { data: [] }, seasons: { data: [] }, - episodes: { data: [] } + episodes: { data: [] }, + videos: { data: [] }, + boxsets: { data: [] }, + playlists: { data: [] } + }; + + const watchlistCacheTypeMap = { + 'Movie': 'movies', + 'Series': 'series', + 'Season': 'seasons', + 'Episode': 'episodes', + 'Video': 'videos', + 'BoxSet': 'boxsets', + 'Playlist': 'playlists' }; // Function to render the complete watchlist HTML structure @@ -3097,6 +3121,9 @@ In the Custom Tabs plugin, add a new tab with the following HTML content:
+
+
+