diff --git a/server/subscriber/MediaRequestSubscriber.ts b/server/subscriber/MediaRequestSubscriber.ts index 12af8327..e77c96a9 100644 --- a/server/subscriber/MediaRequestSubscriber.ts +++ b/server/subscriber/MediaRequestSubscriber.ts @@ -21,6 +21,7 @@ import { getSettings } from '@server/lib/settings'; import logger from '@server/logger'; import { isEqual, truncate } from 'lodash'; import type { + EntityManager, EntitySubscriberInterface, InsertEvent, RemoveEvent, @@ -741,13 +742,17 @@ export class MediaRequestSubscriber } } - public async handleRemoveParentUpdate(entity: MediaRequest): Promise { - const mediaRepository = getRepository(Media); - const fullMedia = await mediaRepository.findOneOrFail({ + public async handleRemoveParentUpdate( + manager: EntityManager, + entity: MediaRequest + ): Promise { + const fullMedia = await manager.findOneOrFail(Media, { where: { id: entity.media.id }, relations: { requests: true }, }); + if (!fullMedia) return; + if ( !fullMedia.requests.some((request) => !request.is4k) && fullMedia.status !== MediaStatus.AVAILABLE @@ -762,7 +767,7 @@ export class MediaRequestSubscriber fullMedia.status4k = MediaStatus.UNKNOWN; } - mediaRepository.save(fullMedia); + await manager.save(fullMedia); } public afterUpdate(event: UpdateEvent): void { @@ -796,12 +801,15 @@ export class MediaRequestSubscriber this.updateParentStatus(event.entity as MediaRequest); } - public afterRemove(event: RemoveEvent): void { + public async afterRemove(event: RemoveEvent): Promise { if (!event.entity) { return; } - this.handleRemoveParentUpdate(event.entity as MediaRequest); + await this.handleRemoveParentUpdate( + event.manager as EntityManager, + event.entity as MediaRequest + ); } public listenTo(): typeof MediaRequest {