From e1032ff5dfac4a8c9d4da9cf2788c19822343ad9 Mon Sep 17 00:00:00 2001 From: sct Date: Wed, 20 Jan 2021 05:23:42 +0000 Subject: [PATCH] fix(requests): allow declined season requests to be re-requested fixes #690 --- server/routes/request.ts | 13 +++++++++++-- server/subscriber/MediaSubscriber.ts | 5 ++++- src/components/RequestModal/TvRequestModal.tsx | 13 ++++++++++--- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/server/routes/request.ts b/server/routes/request.ts index baa736164..0b7267245 100644 --- a/server/routes/request.ts +++ b/server/routes/request.ts @@ -160,7 +160,11 @@ requestRoutes.post( // (Unless there are no seasons, in which case we abort) if (media.requests) { existingSeasons = media.requests - .filter((request) => request.is4k === req.body.is4k) + .filter( + (request) => + request.is4k === req.body.is4k && + request.status !== MediaRequestStatus.DECLINED + ) .reduce((seasons, request) => { const combinedSeasons = request.seasons.map( (season) => season.seasonNumber @@ -303,7 +307,12 @@ requestRoutes.put<{ requestId: string }>( // Get all requested seasons that are not part of this request we are editing const existingSeasons = media.requests - .filter((r) => r.is4k === request.is4k && r.id !== request.id) + .filter( + (r) => + r.is4k === request.is4k && + r.id !== request.id && + r.status !== MediaRequestStatus.DECLINED + ) .reduce((seasons, r) => { const combinedSeasons = r.seasons.map( (season) => season.seasonNumber diff --git a/server/subscriber/MediaSubscriber.ts b/server/subscriber/MediaSubscriber.ts index 6e5e285ca..a1289fb0d 100644 --- a/server/subscriber/MediaSubscriber.ts +++ b/server/subscriber/MediaSubscriber.ts @@ -110,7 +110,10 @@ export class MediaSubscriber implements EntitySubscriberInterface { }); for (const request of requests) { - if (request.is4k === is4k) { + if ( + request.is4k === is4k && + request.status === MediaRequestStatus.PENDING + ) { request.status = MediaRequestStatus.APPROVED; await requestRepository.save(request); } diff --git a/src/components/RequestModal/TvRequestModal.tsx b/src/components/RequestModal/TvRequestModal.tsx index 4ee0aa5ad..f16dbb8e1 100644 --- a/src/components/RequestModal/TvRequestModal.tsx +++ b/src/components/RequestModal/TvRequestModal.tsx @@ -169,7 +169,11 @@ const TvRequestModal: React.FC = ({ const getAllRequestedSeasons = (): number[] => { const requestedSeasons = (data?.mediaInfo?.requests ?? []) - .filter((request) => request.is4k === is4k) + .filter( + (request) => + request.is4k === is4k && + request.status !== MediaRequestStatus.DECLINED + ) .reduce((requestedSeasons, request) => { return [ ...requestedSeasons, @@ -255,8 +259,11 @@ const TvRequestModal: React.FC = ({ if ( data?.mediaInfo && - (data.mediaInfo.requests || []).filter((request) => request.is4k === is4k) - .length > 0 + (data.mediaInfo.requests || []).filter( + (request) => + request.is4k === is4k && + request.status !== MediaRequestStatus.DECLINED + ).length > 0 ) { data.mediaInfo.requests .filter((request) => request.is4k === is4k)