From cd6e31acfaa42ff4c10493e034d9c9d5e08c584d Mon Sep 17 00:00:00 2001 From: Dispatcharr Date: Wed, 8 Oct 2025 10:25:24 -0500 Subject: [PATCH] test --- apps/channels/api_views.py | 16 ++++++++++++++++ frontend/src/components/SeriesModal.jsx | 18 +++++++++++++----- frontend/src/components/VODModal.jsx | 1 + frontend/src/pages/VODs.jsx | 13 ++++++++++--- 4 files changed, 40 insertions(+), 8 deletions(-) diff --git a/apps/channels/api_views.py b/apps/channels/api_views.py index 691bf435..4d083aec 100644 --- a/apps/channels/api_views.py +++ b/apps/channels/api_views.py @@ -1463,6 +1463,22 @@ class LogoViewSet(viewsets.ModelViewSet): return super().destroy(request, *args, **kwargs) + def list(self, request, *args, **kwargs): + """Support optional no_pagination flag for convenience queries.""" + queryset = self.filter_queryset(self.get_queryset()) + + if request.query_params.get("no_pagination", "").lower() == "true": + serializer = self.get_serializer(queryset, many=True) + return Response(serializer.data) + + page = self.paginate_queryset(queryset) + if page is not None: + serializer = self.get_serializer(page, many=True) + return self.get_paginated_response(serializer.data) + + serializer = self.get_serializer(queryset, many=True) + return Response(serializer.data) + @action(detail=False, methods=["post"]) def upload(self, request): if "file" not in request.FILES: diff --git a/frontend/src/components/SeriesModal.jsx b/frontend/src/components/SeriesModal.jsx index bb8ffdc1..59832821 100644 --- a/frontend/src/components/SeriesModal.jsx +++ b/frontend/src/components/SeriesModal.jsx @@ -341,6 +341,7 @@ const SeriesModal = ({ series, opened, onClose }) => { displaySeries?.series_image || displaySeries?.logo?.cache_url || displaySeries?.logo?.url || + displaySeries?.custom_properties?.poster_url || null; return ( @@ -706,10 +707,16 @@ const SeriesModal = ({ series, opened, onClose }) => { {/* Episode Image and Description Row */} {/* Episode Image */} - {episode.movie_image && ( - - { + const episodeImage = + episode.movie_image || seriesPoster; + if (!episodeImage) { + return null; + } + return ( + + {episode.name} { style={{ borderRadius: '4px' }} /> - )} + ); + })()} {/* Episode Description */} diff --git a/frontend/src/components/VODModal.jsx b/frontend/src/components/VODModal.jsx index c6f0758d..ea2ea7b7 100644 --- a/frontend/src/components/VODModal.jsx +++ b/frontend/src/components/VODModal.jsx @@ -323,6 +323,7 @@ const VODModal = ({ vod, opened, onClose }) => { displayVOD?.movie_image || displayVOD?.logo?.cache_url || displayVOD?.logo?.url || + displayVOD?.custom_properties?.poster_url || null; return ( diff --git a/frontend/src/pages/VODs.jsx b/frontend/src/pages/VODs.jsx index ea10d920..df672052 100644 --- a/frontend/src/pages/VODs.jsx +++ b/frontend/src/pages/VODs.jsx @@ -36,6 +36,9 @@ const VODCard = ({ vod, onClick }) => { const isEpisode = vod.type === 'episode'; const posterSrc = vod.movie_image || vod.logo?.cache_url || vod.logo?.url || null; + const fallbackPoster = + vod.custom_properties?.poster_url || vod.custom_properties?.cover || null; + const imageSrc = posterSrc || fallbackPoster; const getDisplayTitle = () => { if (isEpisode && vod.series) { @@ -73,9 +76,9 @@ const VODCard = ({ vod, onClick }) => { > - {posterSrc ? ( + {imageSrc ? ( {vod.name} { const SeriesCard = ({ series, onClick }) => { const seriesCover = - series.series_image || series.logo?.cache_url || series.logo?.url || null; + series.series_image || + series.logo?.cache_url || + series.logo?.url || + series.custom_properties?.poster_url || + null; return (