Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 private int GetRequiredOffset(FeedOperationDetails fod)
 {
     if (!string.IsNullOrEmpty(fod.FeedItemRemoteId))
     {
         return((int)(fod.FeedItemTimestamp.Ticks % 10000L));
     }
     return(0);
 }
Esempio n. 3
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);
        }
Esempio n. 4
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);
        }
Esempio n. 5
0
        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);
            }
        }