aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/Music/MusicDynamicImageProvider.cs
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-10-29 18:01:02 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-10-29 18:01:02 -0400
commite33244d7971f0299cd21297597da6181d01631e9 (patch)
treeb11fc639998458f3b8d95b54538bd5dc0e6868bd /MediaBrowser.Server.Implementations/Music/MusicDynamicImageProvider.cs
parent5eec770ae2ea61597f6e80877860d48f540b78e8 (diff)
improve user view images
Diffstat (limited to 'MediaBrowser.Server.Implementations/Music/MusicDynamicImageProvider.cs')
-rw-r--r--MediaBrowser.Server.Implementations/Music/MusicDynamicImageProvider.cs90
1 files changed, 90 insertions, 0 deletions
diff --git a/MediaBrowser.Server.Implementations/Music/MusicDynamicImageProvider.cs b/MediaBrowser.Server.Implementations/Music/MusicDynamicImageProvider.cs
new file mode 100644
index 000000000..846357529
--- /dev/null
+++ b/MediaBrowser.Server.Implementations/Music/MusicDynamicImageProvider.cs
@@ -0,0 +1,90 @@
+using MediaBrowser.Common.IO;
+using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Providers;
+using MediaBrowser.Model.Entities;
+using MediaBrowser.Server.Implementations.Photos;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace MediaBrowser.Server.Implementations.Music
+{
+ public class MusicDynamicImageProvider : BaseDynamicImageProvider<UserView>, ICustomMetadataProvider<UserView>
+ {
+ private readonly IUserManager _userManager;
+
+ public MusicDynamicImageProvider(IFileSystem fileSystem, IProviderManager providerManager, IUserManager userManager)
+ : base(fileSystem, providerManager)
+ {
+ _userManager = userManager;
+ }
+
+ protected override async Task<List<BaseItem>> GetItemsWithImages(IHasImages item)
+ {
+ var view = (UserView)item;
+
+ if (!view.UserId.HasValue)
+ {
+ return new List<BaseItem>();
+ }
+
+ var result = await view.GetItems(new InternalItemsQuery
+ {
+ User = _userManager.GetUserById(view.UserId.Value)
+
+ }).ConfigureAwait(false);
+
+ return GetFinalItems(result.Items.Where(i => i.HasImage(ImageType.Primary)).ToList());
+ }
+
+ protected override bool Supports(IHasImages item)
+ {
+ var view = item as UserView;
+
+ if (view != null && view.UserId.HasValue)
+ {
+ var supported = new[]
+ {
+ SpecialFolder.TvFavoriteEpisodes,
+ SpecialFolder.TvFavoriteSeries,
+ SpecialFolder.TvGenres,
+ SpecialFolder.TvLatest,
+ SpecialFolder.TvNextUp,
+ SpecialFolder.TvResume,
+ SpecialFolder.TvShowSeries,
+
+ SpecialFolder.MovieCollections,
+ SpecialFolder.MovieFavorites,
+ SpecialFolder.MovieGenres,
+ SpecialFolder.MovieLatest,
+ SpecialFolder.MovieMovies,
+ SpecialFolder.MovieResume,
+
+ SpecialFolder.GameFavorites,
+ SpecialFolder.GameGenres,
+ SpecialFolder.GameSystems,
+ SpecialFolder.LatestGames,
+ SpecialFolder.RecentlyPlayedGames,
+
+ SpecialFolder.MusicArtists,
+ SpecialFolder.MusicAlbumArtists,
+ SpecialFolder.MusicAlbums,
+ SpecialFolder.MusicGenres,
+ SpecialFolder.MusicLatest,
+ SpecialFolder.MusicSongs,
+ SpecialFolder.MusicFavorites,
+ SpecialFolder.MusicFavoriteArtists,
+ SpecialFolder.MusicFavoriteAlbums,
+ SpecialFolder.MusicFavoriteSongs
+ };
+
+ return supported.Contains(view.ViewType, StringComparer.OrdinalIgnoreCase) &&
+ _userManager.GetUserById(view.UserId.Value) != null;
+ }
+
+ return false;
+ }
+ }
+}