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); }
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); }
internal static void NotifyUserUpdated(TwitterUser source) { if (MuteBlockManager.IsBlocked(source)) { return; } Head.NotifyUserUpdated(source); }
internal static void StartAcceptNewArrival(TwitterStatus status) { // check muted or blocked if (MuteBlockManager.IsUnwanted(status)) { return; } lock (_acceptingArrivals) { _acceptingArrivals[status.Id] = new List <TabModel>(); } }
internal static void NotifyUnblocked(TwitterUser source, TwitterUser target) { if (MuteBlockManager.IsBlocked(source)) { return; } if (!NotificationLatch.CheckSetNegative( NotificationLatchTarget.Block, source.Id, target.Id)) { return; } Head.NotifyUnblocked(source, target); }
internal static void NotifyMuted(TwitterUser source, TwitterUser target) { if (MuteBlockManager.IsBlocked(source) || MuteBlockManager.IsOfficialMuted(source)) { return; } if (!NotificationLatch.CheckSetPositive( NotificationLatchTarget.Mute, source.Id, target.Id)) { return; } Head.NotifyMuted(source, target); }
private static async Task <IEnumerable <TwitterStatus> > FindCache( Func <TwitterStatus, bool> predicate, long?maxId = null, bool applyMuteBlockFilter = true) { if (maxId != null) { var op = predicate; predicate = s => op(s) && s.Id < maxId; } if (applyMuteBlockFilter) { var op = predicate; predicate = s => op(s) && !MuteBlockManager.IsUnwanted(s); } return(await Task.Run(() => _statusQueue.Find(predicate)).ConfigureAwait(false)); }
internal static void NotifyQuoted(TwitterUser source, TwitterStatus original, TwitterStatus quote) { if (MuteBlockManager.IsBlocked(source) || MuteBlockManager.IsOfficialMuted(source)) { return; } if (!Setting.NotifyBackfilledTweets.Value && quote.CreatedAt < App.StartupDateTime) { // backfilled tweets return; } Task.Run(() => UserProxy.StoreUser(source)); Head.NotifyQuoted(source, original, quote); }
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); }
private static async void StatusPump() { StatusNotification n; while (true) { _signal.Reset(); while (_queue.TryDequeue(out n) && !_isHaltRequested) { var status = n.Status; if (n.IsAdded && status != null) { if (Setting.UseLightweightMute.Value && MuteBlockManager.IsUnwanted(status)) { // muted continue; } // check registered as removed or not var removed = IsRegisteredAsRemoved(status.Id) || (status.RetweetedStatus != null && IsRegisteredAsRemoved(status.RetweetedStatus.Id)); // check status is registered as removed or already received if (removed || !await StatusReceived(status).ConfigureAwait(false)) { continue; } StatusBroadcaster.Enqueue(n); } else { StatusDeleted(n.StatusId); } // post next _signal.Reset(); } if (_isHaltRequested) { break; } _signal.Wait(); } _signal.Dispose(); }
private static void StatusPump() { StatusModelNotification notification; while (true) { _signal.Reset(); while (_queue.TryDequeue(out notification) && !_isHaltRequested) { var status = notification.StatusModel?.Status; var added = notification.IsAdded && status != null; if (added && MuteBlockManager.IsUnwanted(status)) { // MUTE CAPTURE System.Diagnostics.Debug.WriteLine("*** Mute or Block Capture: " + status); continue; } if (added && notification.IsNew) { NotificationService.NotifyReceived(status); NotificationService.StartAcceptNewArrival(status); } _broadcastSubject.OnNext(notification); if (!added) { NotificationService.NotifyDeleted(notification.StatusId, status); } else if (notification.IsNew) { NotificationService.EndAcceptNewArrival(status); } _signal.Reset(); } if (_isHaltRequested) { break; } _signal.Wait(); } _signal.Dispose(); _broadcastSubject.OnCompleted(); }
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); }
internal static void StartAcceptNewArrival(TwitterStatus status) { // check muted or blocked if (MuteBlockManager.IsUnwanted(status)) { return; } if (!Setting.NotifyBackfilledTweets.Value && status.CreatedAt < App.StartupDateTime) { // backfilled tweets return; } lock (_acceptingArrivals) { _acceptingArrivals[status.Id] = new List <TabModel>(); } }
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(); }
private bool CheckAcceptStatus(TwitterStatus status) { return(!MuteBlockManager.IsUnwanted(status) && CheckAcceptStatusCore(status)); }