示例#1
0
 public static void OnDirectMessage(TweetViewModel tweet)
 {
     if (AccountStorage.Contains(tweet.Status.User.ScreenName) || tweet.CreatedAt < wakeupTime)
     {
         return;
     }
     Register(new EventDescription(EventKind.DirectMessage,
                                   UserStorage.Get(tweet.Status.User), null, tweet));
 }
示例#2
0
 public static void OnUnfavored(TweetViewModel tweet, UserViewModel favorer)
 {
     if (AccountStorage.Contains(favorer.TwitterUser.ScreenName))
     {
         return;
     }
     Register(new EventDescription(EventKind.Unfavorite,
                                   favorer, UserStorage.Get(tweet.Status.User), tweet));
 }
示例#3
0
 public static void OnRetweeted(TweetViewModel tweet, UserViewModel retweeter)
 {
     if (AccountStorage.Contains(retweeter.TwitterUser.ScreenName) || tweet.CreatedAt < wakeupTime)
     {
         return;
     }
     Register(new EventDescription(EventKind.Retweet, retweeter,
                                   UserStorage.Get(tweet.Status.User), tweet));
 }
示例#4
0
 internal static void UpdateMute()
 {
     if (Setting.Instance.TimelineFilteringProperty.MuteFilterCluster == null)
     {
         return;
     }
     GetAll(t => Setting.Instance.TimelineFilteringProperty.MuteFilterCluster.Filter(t.Status))
     .ForEach(t =>
     {
         if (!AccountStorage.Contains(t.Status.User.ScreenName))
         {
             Remove(t.bindingId);
         }
     });
 }
示例#5
0
 static void RaiseStatusAdded(TweetViewModel added)
 {
     // Mention通知設定がないか、
     // 自分へのMentionでない場合にのみRegisterする
     // +
     // Retweet通知設定がないか、
     // 自分のTweetのRetweetでない場合にのみRegisterする
     if ((!Setting.Instance.NotificationProperty.NotifyMention ||
          !TwitterHelper.IsMentionOfMe(added.Status)) &&
         (!Setting.Instance.NotificationProperty.NotifyRetweet ||
          !(added.Status is TwitterStatus) || ((TwitterStatus)added.Status).RetweetedOriginal == null ||
          !AccountStorage.Contains(((TwitterStatus)added.Status).RetweetedOriginal.User.ScreenName)))
     {
         NotificationCore.RegisterNotify(added);
     }
     OnTweetStorageChanged(new TweetStorageChangedEventArgs(TweetActionKind.Added, added));
     NotificationCore.DispatchNotify(added);
 }
示例#6
0
        /// <summary>
        /// ステータスの追加に際しての処理
        /// </summary>
        private static TweetViewModel RegisterStatus(TwitterStatus status)
        {
            if (status.RetweetedOriginal != null)
            {
                // リツイートのオリジナルステータスを登録
                var vm = Register(status.RetweetedOriginal);

                // リツイートユーザーに登録
                var user  = UserStorage.Get(status.User);
                var tuser = UserStorage.Get(status.RetweetedOriginal.User);
                if (vm.RegisterRetweeted(user))
                {
                    if (!vm.IsStatusInfoContains)
                    {
                        vm.SetStatus(status.RetweetedOriginal);
                    }
                    // 自分が関係していれば
                    if (AccountStorage.Contains(status.RetweetedOriginal.User.ScreenName) ||
                        AccountStorage.Contains(user.TwitterUser.ScreenName))
                    {
                        EventStorage.OnRetweeted(vm, user);
                    }
                }
            }

            UserStorage.Register(status.User);
            var registered = RegisterCore(status);

            // 返信先の登録
            if (status.InReplyToStatusId != 0)
            {
                Get(status.InReplyToStatusId, true).RegisterInReplyToThis(status.Id);
            }

            if (TwitterHelper.IsMentionOfMe(status))
            {
                EventStorage.OnMention(registered);
            }
            return(registered);
        }