Пример #1
0
        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);
        }