diff --git a/server/subscriber/MediaRequestSubscriber.ts b/server/subscriber/MediaRequestSubscriber.ts index d5cf36dc..39d9f315 100644 --- a/server/subscriber/MediaRequestSubscriber.ts +++ b/server/subscriber/MediaRequestSubscriber.ts @@ -795,6 +795,7 @@ export class MediaRequestSubscriber implements EntitySubscriberInterface s.seasonNumber === seasonRequest.seasonNumber ); - if (season) { - season[statusKey] = MediaStatus.UNKNOWN; - await seasonRepository.save(season); + if (season && season[statusKey] == MediaStatus.PENDING) { + const otherActiveRequests = await requestRepository + .createQueryBuilder('request') + .leftJoinAndSelect('request.seasons', 'season') + .where('request.mediaId = :mediaId', { mediaId: media.id }) + .andWhere('request.id != :requestId', { requestId: entity.id }) + .andWhere('request.is4k = :is4k', { is4k: entity.is4k }) + .andWhere('request.status NOT IN (:...statuses)', { + statuses: [ + MediaRequestStatus.DECLINED, + MediaRequestStatus.COMPLETED, + ], + }) + .andWhere('season.seasonNumber = :seasonNumber', { + seasonNumber: season.seasonNumber, + }) + .getCount(); + + if (otherActiveRequests === 0) { + season[statusKey] = MediaStatus.UNKNOWN; + await seasonRepository.save(season); + } } } } diff --git a/src/components/RequestModal/TvRequestModal.tsx b/src/components/RequestModal/TvRequestModal.tsx index e42c3c22..0a649585 100644 --- a/src/components/RequestModal/TvRequestModal.tsx +++ b/src/components/RequestModal/TvRequestModal.tsx @@ -363,7 +363,8 @@ const TvRequestModal = ({ .filter( (request) => request.is4k === is4k && - request.status !== MediaRequestStatus.DECLINED + request.status !== MediaRequestStatus.DECLINED && + request.status !== MediaRequestStatus.COMPLETED ) .forEach((request) => { if (!seasonRequest) {