private void InsertPostList(IEnumerable <Post> posts, int delay = 0) { IEnumerable <PostViewModel> newPosts = posts .Where(x => !_seenPosts.Contains(x.Number)) .Select(x => new PostViewModel(x) { Tapped = new ModelCommand(() => { if (App.IsPostTapAllowed) { PostTapped(x.Number); } }), NumberTapped = new ModelCommand(() => { if (App.IsPostTapAllowed) { OpenQuoteRegion(x.Number); } }), ViewQuotes = new ModelCommand(() => { if (App.IsPostTapAllowed) { OpenQuoteRegion(x.Number); } }), QuoteTapped = new ModelCommand <ulong>(postID => OpenQuoteRegion(postID)) }).ToList(); bool hasScrollTarget = false; PostViewModel scrollTarget = null; foreach (PostViewModel post in newPosts) { _seenPosts.Add(post.Number); if (post.Number == _scrollTarget) { hasScrollTarget = true; scrollTarget = post; } } AllPosts.AddRange(newPosts, delay); ImagePosts.AddRange(newPosts.Where(x => x.HasImage), delay); SelectedPosts.AddRange(newPosts.Where(x => x.Number == _quotedPost || x.QuotesPost(_quotedPost)), delay); if (hasScrollTarget) { AllPosts.Flush(); ScrollTargetLoaded(this, scrollTarget); } }
public async Task Update() { if (_showLoading) { IsLoading = true; } List <Post> posts; try { posts = await _thread.GetPostsAsync(); } catch { return; } finally { IsLoading = false; } for (int i = 0; i < posts.Count; i++) { Post post = posts[i]; if (!_seenPosts.Contains(post.Number) && post.RenamedFileName != 0) { _seenPosts.Add(post.Number); ImagePosts.Add(new ImageViewerPostViewModel(post)); if (post.Number == _postID) { SelectedIndex = ImagePosts.Count - 1; } } } }