mirror of
https://github.com/seerr-team/seerr.git
synced 2026-04-18 14:28:15 -04:00
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
This commit is contained in:
@@ -354,11 +354,9 @@ export class MediaRequestSubscriber implements EntitySubscriberInterface<MediaRe
|
||||
mediaId: entity.media.id,
|
||||
});
|
||||
|
||||
if (entity.status !== MediaRequestStatus.APPROVED) {
|
||||
const requestRepository = getRepository(MediaRequest);
|
||||
entity.status = MediaRequestStatus.APPROVED;
|
||||
await requestRepository.save(entity);
|
||||
}
|
||||
const requestRepository = getRepository(MediaRequest);
|
||||
entity.status = MediaRequestStatus.COMPLETED;
|
||||
await requestRepository.save(entity);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -532,11 +530,12 @@ export class MediaRequestSubscriber implements EntitySubscriberInterface<MediaRe
|
||||
mediaId: entity.media.id,
|
||||
});
|
||||
|
||||
if (entity.status !== MediaRequestStatus.APPROVED) {
|
||||
const requestRepository = getRepository(MediaRequest);
|
||||
entity.status = MediaRequestStatus.APPROVED;
|
||||
await requestRepository.save(entity);
|
||||
}
|
||||
const requestRepository = getRepository(MediaRequest);
|
||||
entity.status = MediaRequestStatus.COMPLETED;
|
||||
entity.seasons.forEach((season) => {
|
||||
season.status = MediaRequestStatus.COMPLETED;
|
||||
});
|
||||
await requestRepository.save(entity);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -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<Media> {
|
||||
@@ -45,7 +45,7 @@ export class MediaSubscriber implements EntitySubscriberInterface<Media> {
|
||||
},
|
||||
where: {
|
||||
media: { id: event.id },
|
||||
status: MediaRequestStatus.APPROVED,
|
||||
status: In([MediaRequestStatus.APPROVED, MediaRequestStatus.FAILED]),
|
||||
is4k,
|
||||
},
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user