private async Task <bool> ProcessSingleDashboardRequest(FeedOperationDetails fod) { BackendResult <WallData, ResultCode> wall = await WallService.Current.GetWall(RemoteIdHelper.GetItemIdByRemoteId(fod.OwnerRemoteId), 0, 1, "owner"); if (wall.ResultCode == ResultCode.Succeeded && wall.ResultData.wall.Count > 0) { WallPost wallPost = wall.ResultData.wall[0]; FeedItem feedItem = this.CreateFeedItem(wallPost, wall.ResultData.groups, wall.ResultData.profiles, false); if (feedItem != null) { DashboardItem dashboardItem = await SocialManager.OpenContactDashboardAsync(fod); dashboardItem.DefaultTarget = feedItem.DefaultTarget; dashboardItem.Timestamp = new DateTimeOffset(ExtensionsBase.UnixTimeStampToDateTime((double)wallPost.date, true)); if (!string.IsNullOrEmpty(feedItem.PrimaryContent.Title) || !string.IsNullOrEmpty(feedItem.PrimaryContent.Message)) { dashboardItem.Content.Title = feedItem.PrimaryContent.Title; dashboardItem.Content.Message = feedItem.PrimaryContent.Message; } else { dashboardItem.Content.Title = feedItem.SecondaryContent.Title; dashboardItem.Content.Message = feedItem.SecondaryContent.Message; } dashboardItem.Content.Target = feedItem.PrimaryContent.Target; await dashboardItem.SaveAsync(); return(true); } wallPost = null; feedItem = null; } return(false); }
private int GetRequiredOffset(FeedOperationDetails fod) { if (!string.IsNullOrEmpty(fod.FeedItemRemoteId)) { return((int)(fod.FeedItemTimestamp.Ticks % 10000L)); } return(0); }
private NewsFeedGetParams CreateNewsFeedGetParams(FeedOperationDetails op) { NewsFeedGetParams newsFeedGetParams = new NewsFeedGetParams(); //if (op.Direction == null) // Debugger.Break(); if (!string.IsNullOrEmpty(op.FeedItemRemoteId)) { newsFeedGetParams = RemoteIdHelper.GetNewsFeedGetParamsBy(op.FeedItemRemoteId, op.ItemCount); } newsFeedGetParams.NewsListId = -10; return(newsFeedGetParams); }
private async Task <bool> ProcessContactFeeds(List <FeedOperationDetails> fodList) { List <WallService.WallRequestData> requestData = new List <WallService.WallRequestData>(); using (List <FeedOperationDetails> .Enumerator enumerator = fodList.GetEnumerator()) { while (enumerator.MoveNext()) { FeedOperationDetails current = enumerator.Current; requestData.Add(new WallService.WallRequestData() { UserId = RemoteIdHelper.GetItemIdByRemoteId(current.OwnerRemoteId), Offset = this.GetRequiredOffset(current), Count = current.ItemCount }); } } BackendResult <List <WallData>, ResultCode> res = await WallService.Current.GetWallForManyUsers(requestData); if (res.ResultCode != ResultCode.Succeeded) { return(false); } for (int i = 0; i < fodList.Count && i < res.ResultData.Count; ++i) { FeedOperationDetails fod = fodList[i]; WallData currentWallData = res.ResultData[i]; int nextOffset = this.GetRequiredOffset(fod) + currentWallData.wall.Count; Feed feed = await SocialManager.OpenContactFeedAsync(fod); foreach (WallPost wallPost in currentWallData.wall) { FeedItem feedItem = this.CreateFeedItem(wallPost, currentWallData.groups, currentWallData.profiles, true); if (feedItem != null) { this.SetRequiredOffset(feedItem, nextOffset); ((ICollection <FeedItem>)feed.Items).Add(feedItem); } } await feed.SaveAsync(); currentWallData = null; } return(true); }
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); } }