Ejemplo n.º 1
0
        public async void AddRetweetedUser(TwitterUser user)
        {
            if (this.Status.RetweetedOriginal != null)
            {
                var status = await Get(this.Status.RetweetedOriginal);

                status.AddRetweetedUser(user);
            }
            else
            {
                var added = false;
                lock (this._retweetedsLock)
                {
                    if (!this._retweetedUsersDic.ContainsKey(user.Id))
                    {
                        this._retweetedUsersDic.Add(user.Id, user);
                        this.Status.RetweetedUsers = this.Status.RetweetedUsers.Guard()
                                                     .Append(user.Id)
                                                     .Distinct()
                                                     .ToArray();
                        added = true;
                    }
                }
                if (added)
                {
                    this._retweetedUsers.Add(user);
#pragma warning disable 4014
                    StatusProxy.AddRetweeter(this.Status.Id, user.Id);
                    StatusBroadcaster.Republish(this);
#pragma warning restore 4014
                }
            }
        }
Ejemplo n.º 2
0
        public async void RemoveRetweetedUser(long userId)
        {
            if (this.Status.RetweetedOriginal != null)
            {
                var status = await Get(this.Status.RetweetedOriginal);

                status.RemoveRetweetedUser(userId);
            }
            else
            {
                TwitterUser remove;
                lock (this._retweetedsLock)
                {
                    if (this._retweetedUsersDic.TryGetValue(userId, out remove))
                    {
                        this._retweetedUsersDic.Remove(userId);
                        this.Status.RetweetedUsers = this.Status.RetweetedUsers.Except(new[] { userId }).ToArray();
                    }
                }
                if (remove != null)
                {
                    this._retweetedUsers.Remove(remove);
                    // update persistent info
#pragma warning disable 4014
                    StatusProxy.RemoveRetweeter(this.Status.Id, userId);
                    StatusBroadcaster.Republish(this);
#pragma warning restore 4014
                }
            }
        }
Ejemplo n.º 3
0
        public async void RemoveRetweetedUser(long userId)
        {
            if (Status.RetweetedStatus != null)
            {
                var status = await Get(Status.RetweetedStatus).ConfigureAwait(false);

                status.RemoveRetweetedUser(userId);
            }
            else
            {
                TwitterUser remove;
                lock (_retweetedsLock)
                {
                    if (_retweetedUsersDic.TryGetValue(userId, out remove))
                    {
                        _retweetedUsersDic.Remove(userId);
                        Status.RetweetedUsers = Status.RetweetedUsers.Guard().Except(new[] { userId }).ToArray();
                    }
                }
                if (remove != null)
                {
                    _retweetedUsers.Remove(remove);
                    // update persistent info
#pragma warning disable 4014
                    StatusProxy.RemoveRetweeter(Status.Id, userId);
                    StatusBroadcaster.Republish(this);
#pragma warning restore 4014
                }
            }
        }
Ejemplo n.º 4
0
        public async void AddFavoritedUser(TwitterUser user)
        {
            if (Status.RetweetedStatus != null)
            {
                var status = await Get(Status.RetweetedStatus).ConfigureAwait(false);

                status.AddFavoritedUser(user);
            }
            else
            {
                var added = false;
                lock (_favoritedsLock)
                {
                    if (!_favoritedUsersDic.ContainsKey(user.Id))
                    {
                        _favoritedUsersDic.Add(user.Id, user);
                        Status.FavoritedUsers = Status.FavoritedUsers
                                                .Guard()
                                                .Append(user.Id)
                                                .Distinct()
                                                .ToArray();
                        added = true;
                    }
                }
                if (added)
                {
                    _favoritedUsers.Add(user);
#pragma warning disable 4014
                    StatusProxy.AddFavoritor(Status.Id, user.Id);
                    StatusBroadcaster.Republish(this);
#pragma warning restore 4014
                }
            }
        }
Ejemplo n.º 5
0
        internal static void NotifyRetweetRetweeted(TwitterUser source, TwitterUser target, TwitterStatus status)
        {
            if (MuteBlockManager.IsBlocked(source) || MuteBlockManager.IsOfficialMuted(source))
            {
                return;
            }
            if (!Setting.NotifyBackfilledTweets.Value && status.CreatedAt < App.StartupDateTime)
            {
                // backfilled tweets
                return;
            }
            var original = status.RetweetedStatus;

            if (original == null)
            {
                return;
            }
            Task.Run(() => UserProxy.StoreUser(source));
            Task.Run(() => StatusModel.UpdateStatusInfo(
                         original.Id,
                         model => model.AddRetweetedUser(source), _ =>
            {
                StatusProxy.AddRetweeter(original.Id, source.Id);
                StatusBroadcaster.Republish(original);
            }));
            Head.NotifyRetweetRetweeted(source, target, status);
        }
Ejemplo n.º 6
0
        internal static void NotifyRetweetFavorited(TwitterUser source, TwitterUser target, TwitterStatus status)
        {
            if (MuteBlockManager.IsBlocked(source) || MuteBlockManager.IsOfficialMuted(source))
            {
                return;
            }
            if (!NotificationLatch.CheckSetPositive(NotificationLatchTarget.Favorite, source.Id, status.Id))
            {
                return;
            }
            var original = status.RetweetedStatus;

            if (original == null)
            {
                return;
            }
            Task.Run(() => UserProxy.StoreUser(source));
            Task.Run(() => StatusModel.UpdateStatusInfo(
                         original.Id,
                         model => model.AddFavoritedUser(source), _ =>
            {
                StatusProxy.AddFavoritor(original.Id, source.Id);
                StatusBroadcaster.Republish(original);
            }));
            Head.NotifyRetweetFavorited(source, target, status);
        }
Ejemplo n.º 7
0
 internal static void NotifyRetweeted(TwitterUser source, TwitterStatus status)
 {
     if (MuteBlockManager.IsBlocked(source))
     {
         return;
     }
     Task.Run(() => UserProxy.StoreUser(source));
     Task.Run(() => StatusModel.UpdateStatusInfo(
                  status.Id,
                  model => model.AddRetweetedUser(source), _ =>
     {
         StatusProxy.AddRetweeter(status.Id, source.Id);
         StatusBroadcaster.Republish(status);
     }));
     Head.NotifyRetweeted(source, status);
 }
Ejemplo n.º 8
0
 internal static void NotifyUnfavorited(TwitterUser source, TwitterStatus status)
 {
     if (MuteBlockManager.IsBlocked(source))
     {
         return;
     }
     if (!NotificationLatch.CheckSetNegative(
             NotificationLatchTarget.Favorite, source.Id, status.Id))
     {
         return;
     }
     Task.Run(() => StatusModel.UpdateStatusInfo(
                  status.Id,
                  model => model.RemoveFavoritedUser(source.Id), _ =>
     {
         StatusProxy.RemoveFavoritor(status.Id, source.Id);
         StatusBroadcaster.Republish(status);
     }));
     Head.NotifyUnfavorited(source, status);
 }
Ejemplo n.º 9
0
        public static void PostInitialize()
        {
            // initialize subsystems
            StatisticsService.Initialize();
            PostLimitPredictionService.Initialize();
            MuteBlockManager.Initialize();
            StatusBroadcaster.Initialize();
            StatusInbox.Initialize();
            AutoUpdateService.StartSchedule();
            NotificationService.Initialize();
            UINotificationProxy.Initialize();

            // activate plugins
            PluginManager.LoadedPlugins.ForEach(p => p.Initialize());

            // activate scripts
            ScriptingManagerImpl.Initialize();

            // other core systems initialize
            ReceiveManager.Initialize();
            TwitterConfigurationService.Initialize();
            BackstageModel.Initialize();
        }