private static void DoLoadNewsFeed(string methodName, Dictionary <string, string> paramDict, Action <BackendResult <NewsFeedData, ResultCode> > callback) { VKRequestsDispatcher.DispatchRequestToVK <NewsFeedData>(methodName, paramDict, callback, (Func <string, NewsFeedData>)(jsonStr => { List <int> resultCounts1; jsonStr = VKRequestsDispatcher.GetArrayCountsAndRemove(jsonStr, "photos", out resultCounts1); List <int> resultCounts2; jsonStr = VKRequestsDispatcher.GetArrayCountsAndRemove(jsonStr, "photo_tags", out resultCounts2); NewsFeedData response = JsonConvert.DeserializeObject <GenericRoot <NewsFeedData> >(jsonStr).response; NewsFeedType result1; if (Enum.TryParse <NewsFeedType>(response.feed_type, out result1)) { response.FeedType = new NewsFeedType?(result1); } VKList <UserNotification> notifications = response.notifications; if ((notifications != null ? notifications.items : null) != null) { foreach (UserNotification userNotification in response.notifications.items) { UserNotificationType result2; if (Enum.TryParse <UserNotificationType>(userNotification.type, out result2)) { userNotification.Type = result2; } } } return(response); }), false, true, new CancellationToken?(), null); }
public void Search(string searchStr, int count, int startTime, int endTime, string startFrom, Action <BackendResult <NewsFeedData, ResultCode> > callback) { Dictionary <string, string> parameters = new Dictionary <string, string>(); parameters["q"] = searchStr; parameters["count"] = count.ToString(); if (startTime > 0) { parameters["start_time"] = startTime.ToString(); } if (endTime > 0) { parameters["end_time"] = endTime.ToString(); } if (!string.IsNullOrWhiteSpace("startFrom")) { parameters["start_from"] = startFrom.ToString(); } parameters["extended"] = "1"; VKRequestsDispatcher.DispatchRequestToVK <NewsFeedData>("newsfeed.search", parameters, callback, (Func <string, NewsFeedData>)(jsonStr => { jsonStr = VKRequestsDispatcher.FixFalseArray(jsonStr, "items", false); NewsFeedData response = JsonConvert.DeserializeObject <GenericRoot <NewsFeedData> >(jsonStr).response; foreach (NewsItem newsItem in response.items) { if (newsItem.user != null) { response.profiles.Add(newsItem.user); } if (newsItem.group != null) { response.groups.Add(newsItem.group); } } return(response); }), false, true, new CancellationToken?(), null); }
private async Task <bool> ProcessHomeFeed(DownloadHomeFeedOperation downloadHomeFeedOperation) { try { List <Task> taskList = new List <Task>(); FeedOperationDetails op = downloadHomeFeedOperation.FeedOperationDetails; BackendResult <NewsFeedData, ResultCode> res = await NewsFeedService.Current.GetNewsFeed(this.CreateNewsFeedGetParams(op)); if (res.ResultCode == ResultCode.Succeeded) { NewsFeedData newsFeedData = res.ResultData; Feed feed = await SocialManager.OpenHomeFeedAsync(op); foreach (NewsItem newsFeedItem in newsFeedData.items) { FeedItem feedItem = this.CreateFeedItem(newsFeedItem, newsFeedData.groups, newsFeedData.profiles); if (feedItem != null) { ((ICollection <FeedItem>)feed.Items).Add(feedItem); } } if (((IEnumerable <FeedItem>)feed.Items).Any <FeedItem>()) { RemoteIdHelper.NewsFeedNewFromData.Instance.SetParams(((IEnumerable <FeedItem>)feed.Items).Last <FeedItem>().RemoteId, res.ResultData.new_offset, res.ResultData.next_from); } await feed.SaveAsync(); newsFeedData = (NewsFeedData)null; } return(res.ResultCode == ResultCode.Succeeded); } catch { Debugger.Break(); return(false); } }