public Task <int> TrySaveFanArt <T>(Guid mediaItemId, string title, string fanArtType, ICollection <T> files, TrySaveMultipleFanArtAsyncDelegate <T> saveDlgt) { if (files != null && files.Count > 0) { GetOrAddFanArtPathList(mediaItemId).AddRange(files.Select(f => f.ToString())); } return(Task.FromResult(files != null ? files.Count : 0)); }
public async Task <int> TrySaveFanArt <T>(Guid mediaItemId, string title, string fanArtType, ICollection <T> files, TrySaveMultipleFanArtAsyncDelegate <T> saveDlgt) { if (files == null || files.Count == 0) { return(0); } string fanArtCacheDirectory = GetFanArtDirectory(mediaItemId); string fanArtTypeSubDirectory = GetFanArtTypeDirectory(fanArtCacheDirectory, fanArtType); int savedCount = 0; using (var writer = await _fanArtSync.WriterLockAsync(mediaItemId).ConfigureAwait(false)) { if (!await InitCache(fanArtCacheDirectory, fanArtTypeSubDirectory, title).ConfigureAwait(false)) { return(savedCount); } int maxCount = GetMaxFanArtCount(fanArtType); FanArtCount currentCount = await _fanArtCounts.GetValue(CreateFanArtTypeId(mediaItemId, fanArtType), _ => CreateFanArtCount(mediaItemId, fanArtType)).ConfigureAwait(false); if (currentCount.Count >= maxCount) { return(savedCount); } foreach (T file in files) { if (await saveDlgt(fanArtTypeSubDirectory, file).ConfigureAwait(false)) { savedCount++; currentCount.Count++; if (currentCount.Count >= maxCount) { break; } } } } return(savedCount); }