Beispiel #1
0
        internal static void StartAcceptNewArrival(TwitterStatus status)
        {
            // check muted or blocked
            if (MuteBlockManager.IsUnwanted(status))
            {
                return;
            }

            lock (_acceptingArrivals)
            {
                _acceptingArrivals[status.Id] = new List <TabModel>();
            }
        }
Beispiel #2
0
 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));
 }
Beispiel #3
0
        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();
        }
Beispiel #4
0
        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 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>();
            }
        }
Beispiel #6
0
 private bool CheckAcceptStatus(TwitterStatus status)
 {
     return(!MuteBlockManager.IsUnwanted(status) && CheckAcceptStatusCore(status));
 }