From d4a5a6fe4e9ea709455bc7203f4154155d8fa897 Mon Sep 17 00:00:00 2001 From: fallenbagel <98979876+Fallenbagel@users.noreply.github.com> Date: Sat, 28 Feb 2026 06:15:40 +0800 Subject: [PATCH] fix: mark requests as completed when media is already available When media is already available (e.g. manually added to Jellyfin), sendToRadarrand sendToSonarr incorrectly kept the request status as APPROVED instead ofmarking it COMPLETED. This caused the "available" filter to miss these requestssince it requires both COMPLETED status and AVAILABLE media. Additionally, MediaSubscriber.updateRelatedMediaRequest only queried forAPPROVED requests when transitioning to COMPLETED, so FAILED requests werenever picked up when media became available via library scan. fix #2409 --- server/subscriber/MediaRequestSubscriber.ts | 19 +++++++++---------- server/subscriber/MediaSubscriber.ts | 4 ++-- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/server/subscriber/MediaRequestSubscriber.ts b/server/subscriber/MediaRequestSubscriber.ts index 5f46fb70f..e1e836035 100644 --- a/server/subscriber/MediaRequestSubscriber.ts +++ b/server/subscriber/MediaRequestSubscriber.ts @@ -354,11 +354,9 @@ export class MediaRequestSubscriber implements EntitySubscriberInterface { + season.status = MediaRequestStatus.COMPLETED; + }); + await requestRepository.save(entity); return; } diff --git a/server/subscriber/MediaSubscriber.ts b/server/subscriber/MediaSubscriber.ts index 3cf8229f0..333fa3961 100644 --- a/server/subscriber/MediaSubscriber.ts +++ b/server/subscriber/MediaSubscriber.ts @@ -9,7 +9,7 @@ import { MediaRequest } from '@server/entity/MediaRequest'; import Season from '@server/entity/Season'; import SeasonRequest from '@server/entity/SeasonRequest'; import type { EntitySubscriberInterface, UpdateEvent } from 'typeorm'; -import { EventSubscriber } from 'typeorm'; +import { EventSubscriber, In } from 'typeorm'; @EventSubscriber() export class MediaSubscriber implements EntitySubscriberInterface { @@ -45,7 +45,7 @@ export class MediaSubscriber implements EntitySubscriberInterface { }, where: { media: { id: event.id }, - status: MediaRequestStatus.APPROVED, + status: In([MediaRequestStatus.APPROVED, MediaRequestStatus.FAILED]), is4k, }, });