From 70466aba7e480e190be836f9999c3062b5c59358 Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Sat, 2 Sep 2023 16:31:39 +0200 Subject: [PATCH] Fix thumbnails for episodse --- .../Controllers/Repositories/CollectionRepository.cs | 5 +++-- .../Controllers/Repositories/EpisodeRepository.cs | 8 +++++--- .../Controllers/Repositories/LibraryItemRepository.cs | 5 +++-- .../Controllers/Repositories/LocalRepository.cs | 10 +++++++++- .../Controllers/Repositories/MovieRepository.cs | 6 ++++-- .../Controllers/Repositories/PeopleRepository.cs | 6 ++++-- .../Controllers/Repositories/SeasonRepository.cs | 6 ++++-- .../Controllers/Repositories/ShowRepository.cs | 6 ++++-- .../Controllers/Repositories/StudioRepository.cs | 5 +++-- .../Controllers/Repositories/UserRepository.cs | 5 +++-- back/src/Kyoo.Core/Controllers/ThumbnailsManager.cs | 2 +- back/src/Kyoo.Core/Views/Helper/CrudThumbsApi.cs | 7 ------- front/packages/primitives/src/image/image.web.tsx | 3 +-- front/packages/ui/src/player/components/hover.tsx | 1 + front/packages/ui/src/player/index.tsx | 2 +- 15 files changed, 46 insertions(+), 31 deletions(-) diff --git a/back/src/Kyoo.Core/Controllers/Repositories/CollectionRepository.cs b/back/src/Kyoo.Core/Controllers/Repositories/CollectionRepository.cs index ca90cec7..7b7a1388 100644 --- a/back/src/Kyoo.Core/Controllers/Repositories/CollectionRepository.cs +++ b/back/src/Kyoo.Core/Controllers/Repositories/CollectionRepository.cs @@ -44,8 +44,9 @@ namespace Kyoo.Core.Controllers /// Create a new . /// /// The database handle to use - public CollectionRepository(DatabaseContext database) - : base(database) + /// The thumbnail manager used to store images. + public CollectionRepository(DatabaseContext database, IThumbnailsManager thumbs) + : base(database, thumbs) { _database = database; } diff --git a/back/src/Kyoo.Core/Controllers/Repositories/EpisodeRepository.cs b/back/src/Kyoo.Core/Controllers/Repositories/EpisodeRepository.cs index 19c5b839..933c2bb7 100644 --- a/back/src/Kyoo.Core/Controllers/Repositories/EpisodeRepository.cs +++ b/back/src/Kyoo.Core/Controllers/Repositories/EpisodeRepository.cs @@ -54,9 +54,11 @@ namespace Kyoo.Core.Controllers /// /// The database handle to use. /// A show repository + /// The thumbnail manager used to store images. public EpisodeRepository(DatabaseContext database, - IShowRepository shows) - : base(database) + IShowRepository shows, + IThumbnailsManager thumbs) + : base(database, thumbs) { _database = database; _shows = shows; @@ -144,8 +146,8 @@ namespace Kyoo.Core.Controllers /// public override async Task Create(Episode obj) { - await base.Create(obj); obj.ShowSlug = obj.Show?.Slug ?? _database.Shows.First(x => x.Id == obj.ShowId).Slug; + await base.Create(obj); _database.Entry(obj).State = EntityState.Added; await _database.SaveChangesAsync(() => obj.SeasonNumber != null && obj.EpisodeNumber != null diff --git a/back/src/Kyoo.Core/Controllers/Repositories/LibraryItemRepository.cs b/back/src/Kyoo.Core/Controllers/Repositories/LibraryItemRepository.cs index 87a28f24..0b5da1e7 100644 --- a/back/src/Kyoo.Core/Controllers/Repositories/LibraryItemRepository.cs +++ b/back/src/Kyoo.Core/Controllers/Repositories/LibraryItemRepository.cs @@ -46,8 +46,9 @@ namespace Kyoo.Core.Controllers /// Create a new . /// /// The database instance - public LibraryItemRepository(DatabaseContext database) - : base(database) + /// The thumbnail manager used to store images. + public LibraryItemRepository(DatabaseContext database, IThumbnailsManager thumbs) + : base(database, thumbs) { _database = database; } diff --git a/back/src/Kyoo.Core/Controllers/Repositories/LocalRepository.cs b/back/src/Kyoo.Core/Controllers/Repositories/LocalRepository.cs index 5d64ed30..81f2f57b 100644 --- a/back/src/Kyoo.Core/Controllers/Repositories/LocalRepository.cs +++ b/back/src/Kyoo.Core/Controllers/Repositories/LocalRepository.cs @@ -45,6 +45,11 @@ namespace Kyoo.Core.Controllers /// protected DbContext Database { get; } + /// + /// The thumbnail manager used to store images. + /// + private readonly IThumbnailsManager _thumbs; + /// /// The default sort order that will be used for this resource's type. /// @@ -54,9 +59,11 @@ namespace Kyoo.Core.Controllers /// Create a new base with the given database handle. /// /// A database connection to load resources of type - protected LocalRepository(DbContext database) + /// The thumbnail manager used to store images. + protected LocalRepository(DbContext database, IThumbnailsManager thumbs) { Database = database; + _thumbs = thumbs; } /// @@ -365,6 +372,7 @@ namespace Kyoo.Core.Controllers await Validate(obj); if (obj is IThumbnails thumbs) { + await _thumbs.DownloadImages(thumbs); if (thumbs.Poster != null) Database.Entry(thumbs).Reference(x => x.Poster).TargetEntry.State = EntityState.Added; if (thumbs.Thumbnail != null) diff --git a/back/src/Kyoo.Core/Controllers/Repositories/MovieRepository.cs b/back/src/Kyoo.Core/Controllers/Repositories/MovieRepository.cs index 49f315bb..02d0ba84 100644 --- a/back/src/Kyoo.Core/Controllers/Repositories/MovieRepository.cs +++ b/back/src/Kyoo.Core/Controllers/Repositories/MovieRepository.cs @@ -55,10 +55,12 @@ namespace Kyoo.Core.Controllers /// The database handle to use /// A studio repository /// A people repository + /// The thumbnail manager used to store images. public MovieRepository(DatabaseContext database, IStudioRepository studios, - IPeopleRepository people) - : base(database) + IPeopleRepository people, + IThumbnailsManager thumbs) + : base(database, thumbs) { _database = database; _studios = studios; diff --git a/back/src/Kyoo.Core/Controllers/Repositories/PeopleRepository.cs b/back/src/Kyoo.Core/Controllers/Repositories/PeopleRepository.cs index c7cdcbda..7c53b609 100644 --- a/back/src/Kyoo.Core/Controllers/Repositories/PeopleRepository.cs +++ b/back/src/Kyoo.Core/Controllers/Repositories/PeopleRepository.cs @@ -52,9 +52,11 @@ namespace Kyoo.Core.Controllers /// /// The database handle /// A lazy loaded show repository + /// The thumbnail manager used to store images. public PeopleRepository(DatabaseContext database, - Lazy shows) - : base(database) + Lazy shows, + IThumbnailsManager thumbs) + : base(database, thumbs) { _database = database; _shows = shows; diff --git a/back/src/Kyoo.Core/Controllers/Repositories/SeasonRepository.cs b/back/src/Kyoo.Core/Controllers/Repositories/SeasonRepository.cs index e7aed032..801b4876 100644 --- a/back/src/Kyoo.Core/Controllers/Repositories/SeasonRepository.cs +++ b/back/src/Kyoo.Core/Controllers/Repositories/SeasonRepository.cs @@ -47,9 +47,11 @@ namespace Kyoo.Core.Controllers /// /// The database handle that will be used /// A shows repository + /// The thumbnail manager used to store images. public SeasonRepository(DatabaseContext database, - IShowRepository shows) - : base(database) + IShowRepository shows, + IThumbnailsManager thumbs) + : base(database, thumbs) { _database = database; diff --git a/back/src/Kyoo.Core/Controllers/Repositories/ShowRepository.cs b/back/src/Kyoo.Core/Controllers/Repositories/ShowRepository.cs index 065202ee..11887286 100644 --- a/back/src/Kyoo.Core/Controllers/Repositories/ShowRepository.cs +++ b/back/src/Kyoo.Core/Controllers/Repositories/ShowRepository.cs @@ -56,10 +56,12 @@ namespace Kyoo.Core.Controllers /// The database handle to use /// A studio repository /// A people repository + /// The thumbnail manager used to store images. public ShowRepository(DatabaseContext database, IStudioRepository studios, - IPeopleRepository people) - : base(database) + IPeopleRepository people, + IThumbnailsManager thumbs) + : base(database, thumbs) { _database = database; _studios = studios; diff --git a/back/src/Kyoo.Core/Controllers/Repositories/StudioRepository.cs b/back/src/Kyoo.Core/Controllers/Repositories/StudioRepository.cs index 22201c74..21b16576 100644 --- a/back/src/Kyoo.Core/Controllers/Repositories/StudioRepository.cs +++ b/back/src/Kyoo.Core/Controllers/Repositories/StudioRepository.cs @@ -44,8 +44,9 @@ namespace Kyoo.Core.Controllers /// Create a new . /// /// The database handle - public StudioRepository(DatabaseContext database) - : base(database) + /// The thumbnail manager used to store images. + public StudioRepository(DatabaseContext database, IThumbnailsManager thumbs) + : base(database, thumbs) { _database = database; } diff --git a/back/src/Kyoo.Core/Controllers/Repositories/UserRepository.cs b/back/src/Kyoo.Core/Controllers/Repositories/UserRepository.cs index 2fcecb8a..6e4ea323 100644 --- a/back/src/Kyoo.Core/Controllers/Repositories/UserRepository.cs +++ b/back/src/Kyoo.Core/Controllers/Repositories/UserRepository.cs @@ -43,8 +43,9 @@ namespace Kyoo.Core.Controllers /// Create a new /// /// The database handle to use - public UserRepository(DatabaseContext database) - : base(database) + /// The thumbnail manager used to store images. + public UserRepository(DatabaseContext database, IThumbnailsManager thumbs) + : base(database, thumbs) { _database = database; } diff --git a/back/src/Kyoo.Core/Controllers/ThumbnailsManager.cs b/back/src/Kyoo.Core/Controllers/ThumbnailsManager.cs index 7a167cd2..f2ecf5a2 100644 --- a/back/src/Kyoo.Core/Controllers/ThumbnailsManager.cs +++ b/back/src/Kyoo.Core/Controllers/ThumbnailsManager.cs @@ -113,7 +113,7 @@ namespace Kyoo.Core.Controllers { string directory = item switch { - IResource res => Path.Combine("./metadata", typeof(T).Name.ToLowerInvariant(), res.Slug), + IResource res => Path.Combine("./metadata", item.GetType().Name.ToLowerInvariant(), res.Slug), _ => Path.Combine("./metadata", typeof(T).Name.ToLowerInvariant()) }; Directory.CreateDirectory(directory); diff --git a/back/src/Kyoo.Core/Views/Helper/CrudThumbsApi.cs b/back/src/Kyoo.Core/Views/Helper/CrudThumbsApi.cs index 13ccbf99..4674b6ff 100644 --- a/back/src/Kyoo.Core/Views/Helper/CrudThumbsApi.cs +++ b/back/src/Kyoo.Core/Views/Helper/CrudThumbsApi.cs @@ -131,12 +131,5 @@ namespace Kyoo.Core.Api { return _GetImage(identifier, "thumbnail", quality); } - - /// - public override async Task> Create([FromBody] T resource) - { - await _thumbs.DownloadImages(resource); - return await base.Create(resource); - } } } diff --git a/front/packages/primitives/src/image/image.web.tsx b/front/packages/primitives/src/image/image.web.tsx index 7803dd0f..be2f1231 100644 --- a/front/packages/primitives/src/image/image.web.tsx +++ b/front/packages/primitives/src/image/image.web.tsx @@ -71,7 +71,6 @@ export const Image = ({
{ > diff --git a/front/packages/ui/src/player/index.tsx b/front/packages/ui/src/player/index.tsx index 4cacbf33..517b0cb4 100644 --- a/front/packages/ui/src/player/index.tsx +++ b/front/packages/ui/src/player/index.tsx @@ -75,7 +75,7 @@ const mapData = ( name: data.type === "movie" ? data.name : `${episodeDisplayNumber(data, "")} ${data.name}`, showName: data.type === "movie" ? data.name! : data.show!.name, href: data ? (data.type === "movie" ? `/movie/${data.slug}` : `/show/${data.show!.slug}`) : "#", - poster: data.poster, + poster: data.type === "movie" ? data.poster : data.show!.poster, subtitles: info.subtitles, chapters: info.chapters, fonts: info.fonts,