private async Task Refresh() { DisplayComics(); try { var cancelToken = pageCancelTokenSource.Token; // Update comics from internet after loading from database so UI is filled ASAP var updateComicTasks = new List <Task>(ComicLibrary.Count); foreach (var comic in ComicLibrary) { updateComicTasks.Add(comicUpdater.UpdateComic(comic, cancelToken: cancelToken)); } // Updating comics can all happen at once instead of sequentially for speed await Task.WhenAll(updateComicTasks); } catch (OperationCanceledException) { } DisplayComics(); IsRefreshing = false; // TODO: Get comic updates in the background }
public static async Task PageIsNewIsTrueWhenUpdated( [ValueSource(nameof(EnumerateKnownComicTypes))] MockComic comic) { // Initial comic import ComicData savedComic = await comicUpdater.ImportComic(comic.State1.ArchiveUrl); // Switch selector to next stage pageLoader.StateSelector = c => c.State2; // Update comic now that selector has been switched IEnumerable <ComicPageData> pages = await comicUpdater.UpdateComic(savedComic); Assert.GreaterOrEqual(pages.Count(p => p.IsNew), 1); Assert.Fail(); }