/// <summary> /// Очистить список /// </summary> /// <param name="parameter"></param> private void ClearList(object parameter = null) { FilteredPosts.Clear(); }
/// <summary> /// Получить список постов /// </summary> private async Task Grab() { foreach (var group in ActiveGroups) { var groupInfo = (await App.VkApi.GetGroupsById(group.Name))?.FirstOrDefault(); if (groupInfo == null) { var dialogResult = await App.PopupManager.ShowMessageDialog($"Группа '{group.Name}' не найдена. Удалить ее из списка?", false); if (dialogResult) { App.VkSettings.Groups.Remove(group); } continue; } var res = await App.VkApi.GetPosts(groupInfo.Id, 100, group.Offset); if (res == null) { continue; } // Если с сервера получено 0 постов if (res.Items.Count == 0) { var dialogResult = await App.PopupManager.ShowListDialog(new string[] { "Деактивировать", "Обнулить сдвиг", "Удалить" }, $"В группе {group.Name} закончились посты"); if (dialogResult != -1) { switch (dialogResult) { case 0: group.IsActive = false; break; case 1: group.Offset = 0; break; case 2: App.VkSettings.Groups.Remove(group); break; } } } // Отбираем посты, к которым ничего не прикреплено или прикреплены только фото, а также фильтруем по количеству лайков и репостов var posts = res.Items .Where(p => p.Attachments?.All(a => a.Type == "photo") != false && p.Likes.Count >= group.LikeCount && p.Reposts.Count >= group.RepostCount) .ToList(); foreach (var p in posts) { p.GroupInfo = groupInfo; if (p.Attachments?.Count > 0) { SetPhotoSize(p.Attachments.Select(a => a.Photo).ToList()); } await _dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => FilteredPosts.Add(p)); } } }