public async Task LoadSinglePreviewPlayerThumbnails(ReplayPreview replay) { if (replay == null) { throw new ArgumentNullException(nameof(replay)); } if (LatestDataDragonVersion == null) { LatestDataDragonVersion = await RequestManager.GetDataDragonVersionAsync(null).ConfigureAwait(true); } var dataVersion = LatestDataDragonVersion; // Get the correct data version for the replay version if (!SettingsManager.Settings.UseMostRecent) { dataVersion = await RequestManager.GetDataDragonVersionAsync(replay.GameVersion).ConfigureAwait(true); } var allPlayers = new List <PlayerPreview>(); allPlayers.AddRange(replay.BluePreviewPlayers); allPlayers.AddRange(replay.RedPreviewPlayers); _log.Information($"Processing {allPlayers.Count} champion thumbnail requests"); var allRequests = new List <dynamic>(allPlayers.Select(x => new { Player = x, Request = new ChampionRequest() { ChampionName = x.ChampionName, DataDragonVersion = dataVersion } })); var allTasks = new List <Task>(); foreach (var request in allRequests) { Application.Current.Dispatcher.Invoke((Action) delegate { request.Player.ImageSource = ResourceTools.GetImageSourceFromResource("DownloadDrawingImage"); }); allTasks.Add(Task.Run(async() => { var response = await RequestManager.MakeRequestAsync(request.Request as RequestBase) .ConfigureAwait(true); if (response.IsFaulted) { Application.Current.Dispatcher.Invoke((Action) delegate { request.Player.ImageSource = ResourceTools.GetImageSourceFromResource("ErrorDrawingImage"); }); } Application.Current.Dispatcher.Invoke((Action) delegate { request.Player.ImageSource = ResourceTools.GetImageSourceFromPath(response.ResponsePath); }); })); } await Task.WhenAll(allTasks).ConfigureAwait(true); }
public async Task LoadItemThumbnails(ReplayDetail replay) { _log.Information("Loading/downloading thumbnails for items..."); if (replay == null) { throw new ArgumentNullException(nameof(replay)); } if (LatestDataDragonVersion == null) { LatestDataDragonVersion = await RequestManager.GetDataDragonVersionAsync(null).ConfigureAwait(true); } var dataVersion = LatestDataDragonVersion; var allItems = new List <Item>(); var itemTasks = new List <Task>(); allItems.AddRange(replay.BluePlayers.SelectMany(x => x.Items)); allItems.AddRange(replay.RedPlayers.SelectMany(x => x.Items)); _log.Information($"Processing {allItems.Count} item thumbnail requests"); foreach (var item in allItems) { // If an item does not exist, set it to nothing! if (item.ItemId == "0") { Application.Current.Dispatcher.Invoke((Action) delegate { item.ShowBorder = true; }); continue; } // Set default item image, to be replaced Application.Current.Dispatcher.Invoke((Action) delegate { item.ImageSource = ResourceTools.GetImageSourceFromResource("DownloadDrawingImage"); }); itemTasks.Add(Task.Run(async() => { var response = await RequestManager.MakeRequestAsync(new ItemRequest { DataDragonVersion = dataVersion, ItemID = item.ItemId }).ConfigureAwait(true); if (response.IsFaulted) { Application.Current.Dispatcher.Invoke((Action) delegate { item.ImageSource = ResourceTools.GetImageSourceFromResource("ErrorDrawingImage"); }); } else { Application.Current.Dispatcher.Invoke((Action) delegate { item.ImageSource = ResourceTools.GetImageSourceFromPath(response.ResponsePath); }); } })); } await Task.WhenAll(itemTasks).ConfigureAwait(true); }