private void UpdatePages(IEnumerable <ComicPageData> newPages) { if (newPages == null || !newPages.Any()) { // Use history if no actual pages exist newPages = Comic.RecentHistory .Select( historyItem => new ComicPageData { Comic = Comic, Name = historyItem, Url = historyItem, IsRead = true }); } var reversed = newPages .Reverse() .ToList(); // Need to use ObservableCollection methods so UI is updated with animation Pages.MatchList(reversed); PagesUpdated?.Invoke(); // Clear ScrollTo target since page shuld have been scrolled during PagesUpdated event (if desired) scrollToPageTarget = ComicPageTargetType.None; }
public ComicDetailPageModel(ComicPageTargetType scrollTo) { scrollToPageTarget = scrollTo; OpenOptionsCommand = new AsyncCommand(OpenOptions); RefreshCommand = new AsyncCommand(async() => { try { IsRefreshing = true; var cancelToken = pageCancelTokenSource.Token; cancelToken.ThrowIfCancellationRequested(); await Refresh(cancelToken); IsRefreshing = false; } catch (OperationCanceledException) { } }); OpenPageCommand = new AsyncCommand <ComicPageData>(OpenPage); }