예제 #1
0
        public async Task <MediaThumbnail?> GetThumbnailAsync(
            Album album,
            ThumbnailSizeName size,
            CancellationToken cancellationToken)
        {
            Guid?mediaId;

            if (album.CoverMediaId.HasValue)
            {
                mediaId = album.CoverMediaId.Value;
            }
            else
            {
                mediaId = (await GetMediaIdsAsync(album, cancellationToken))
                          .FirstOrDefault();
            }

            if (mediaId.HasValue)
            {
                IReadOnlyDictionary <Guid, MediaThumbnail>?thumbs = await _mediaStore
                                                                    .GetThumbnailsByMediaIdsAsync(
                    new[] { mediaId.Value },
                    size,
                    cancellationToken);

                return(thumbs.Values.FirstOrDefault());
            }

            return(null);
        }
예제 #2
0
        protected async override Task <IReadOnlyDictionary <Tuple <Guid, ThumbnailSizeName>, MediaThumbnail> > LoadBatchAsync(
            IReadOnlyList <Tuple <Guid, ThumbnailSizeName> > keys,
            CancellationToken cancellationToken)
        {
            ThumbnailSizeName size = keys.First().Item2;

            IReadOnlyDictionary <Guid, MediaThumbnail> thumbs = await _mediaStore
                                                                .GetThumbnailsByMediaIdsAsync(
                keys.Select(x => x.Item1),
                size,
                cancellationToken);

            return(thumbs.ToDictionary(k => new Tuple <Guid, ThumbnailSizeName>(k.Key, size), v => v.Value));
        }