private bool UpdateTimelines(IEnumerable <Status> statuses, TweetClassification tweetType) { var updated = false; foreach (var status in statuses) { var tweet = status.CreateTweet(tweetType); var index = _tweets.IndexOf(tweet); if (index == -1) { _tweets.Add(tweet); } else { var t = _tweets[index]; t.IsHome |= tweet.IsHome; t.IsMention |= tweet.IsMention; t.IsDirectMessage |= tweet.IsDirectMessage; t.IsFavorite |= tweet.IsFavorite; tweet = t; } if (TimelineFilter(tweet) && _timeline.Contains(tweet) == false) { Timeline.Add(tweet); updated = true; } } if (updated) { SortTweetCollection(Timeline); } return(updated); }
private bool UpdateTimelines(IEnumerable<Status> statuses, TweetClassification tweetType) { var updated = false; foreach (var status in statuses) { var tweet = status.CreateTweet(tweetType); var index = _tweets.IndexOf(tweet); if (index == -1) { _tweets.Add(tweet); } else { var t = _tweets[index]; t.IsHome |= tweet.IsHome; t.IsMention |= tweet.IsMention; t.IsDirectMessage |= tweet.IsDirectMessage; t.IsFavorite |= tweet.IsFavorite; tweet = t; } if (TimelineFilter(tweet) && _timeline.Contains(tweet) == false) { Timeline.Add(tweet); updated = true; } } if (updated) SortTweetCollection(Timeline); return updated; }
public void UpdateStatus(IEnumerable <Status> statuses, TweetClassification tweetType) { DispatchInvoker(() => { if (UpdateTimelines(statuses, tweetType)) { PlayNotification(); } }); }
public static Tweet CreateTweet(this Status status, TweetClassification tweetType) { var isMention = false; var isDirectMessage = false; var username = new OAuth().ScreenName; var displayStatus = status.RetweetedStatus ?? status; var entities = displayStatus.ExtendedTweet?.Entities ?? displayStatus.Entities; var extendedEntities = displayStatus.ExtendedTweet?.ExtendedEntities ?? displayStatus.ExtendedEntities; var text = displayStatus?.ExtendedTweet?.FullText ?? displayStatus.FullText ?? displayStatus.Text; // Direct messages don't have a User. Instead, dm's use sender and recipient collections. if (displayStatus.User == null) { isDirectMessage = true; displayStatus.User = status.Recipient.ScreenName == username ? status.Sender : status.Recipient; } if (entities?.Mentions != null && entities.Mentions.Any(m => m.ScreenName == username)) { isMention = true; } var createdAt = DateTime.ParseExact(status.CreatedAt, "ddd MMM dd HH:mm:ss zzz yyyy", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal); var tweet = new Tweet { StatusId = status.Id, Name = displayStatus.User.Name, ScreenName = displayStatus.User.ScreenName, ProfileImageUrl = displayStatus.User.ProfileImageUrl, Text = text, MarkupNodes = BuildMarkupNodes(text, entities), CreatedAt = createdAt, TimeAgo = TimeAgo(createdAt), IsRetweet = status.Retweeted, RetweetedBy = RetweetedBy(status, username), RetweetedByScreenName = RetweetedByScreenName(status, username), RetweetStatusId = status.RetweetedStatus != null ? status.RetweetedStatus.Id : string.Empty, MediaLinks = entities?.Media?.Select(m => m).ToArray() ?? new Media[0], ExtendedMediaLinks = extendedEntities?.Media?.Select(m => m).ToArray() ?? new Media[0], Urls = entities?.Urls.Select(u => u.ExpandedUrl).ToArray() ?? new string[0], IsMyTweet = displayStatus.User.ScreenName == username, IsHome = tweetType == TweetClassification.Home, IsMention = tweetType == TweetClassification.Mention | isMention, IsDirectMessage = tweetType == TweetClassification.DirectMessage | isDirectMessage, IsFavorite = tweetType == TweetClassification.Favorite | status.Favorited, IsSearch = tweetType == TweetClassification.Search }; return(tweet); }
public static Tweet CreateTweet(this Status status, TweetClassification tweetType) { var isMention = false; var isDirectMessage = false; var username = new OAuth().ScreenName; var displayStatus = status.RetweetedStatus ?? status; // Direct messages don't have a User. Instead, dm's use sender and recipient collections. if (displayStatus.User == null) { isDirectMessage = true; displayStatus.User = (status.Recipient.ScreenName == username) ? status.Sender : status.Recipient; } if (status.Entities != null && status.Entities.Mentions != null && status.Entities.Mentions.Any(m => m.ScreenName == username)) { isMention = true; } var createdAt = DateTime.ParseExact(status.CreatedAt, "ddd MMM dd HH:mm:ss zzz yyyy", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal); var tweet = new Tweet { StatusId = status.Id, Name = displayStatus.User.Name, ScreenName = displayStatus.User.ScreenName, ProfileImageUrl = displayStatus.User.ProfileImageUrl, Text = displayStatus.Text, MarkupNodes = BuildMarkupNodes(displayStatus.Text, displayStatus.Entities), CreatedAt = createdAt, TimeAgo = TimeAgo(createdAt), IsRetweet = status.Retweeted, RetweetedBy = RetweetedBy(status, username), RetweetedByScreenName = RetweetedByScreenName(status, username), RetweetStatusId = (status.RetweetedStatus != null) ? status.RetweetedStatus.Id : String.Empty, MediaLinks = status.Entities.Media != null ? status.Entities.Media.Select(m => m.MediaUrl).ToArray() : new string[0], IsMyTweet = displayStatus.User.ScreenName == username, IsHome = tweetType == TweetClassification.Home, IsMention = tweetType == TweetClassification.Mention | isMention, IsDirectMessage = tweetType == TweetClassification.DirectMessage | isDirectMessage, IsFavorite = tweetType == TweetClassification.Favorite | status.Favorited, IsSearch = tweetType == TweetClassification.Search }; return tweet; }
public void UpdateStatus(IEnumerable <Status> statuses, TweetClassification tweetType) { _timelinesModel.UpdateStatus(statuses, tweetType); }
public void UpdateStatus(IEnumerable<Status> statuses, TweetClassification tweetType) { _timelinesModel.UpdateStatus(statuses, tweetType); }
public void UpdateStatus(IEnumerable<Status> statuses, TweetClassification tweetType) { DispatchInvoker(() => { if (UpdateTimelines(statuses, tweetType)) PlayNotification(); }); }