internal static void StartAcceptNewArrival(TwitterStatus status) { // check muted or blocked if (MuteBlockManager.IsUnwanted(status)) { return; } lock (_acceptingArrivals) { _acceptingArrivals[status.Id] = new List <TabModel>(); } }
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)); }
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 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>(); } }
private bool CheckAcceptStatus(TwitterStatus status) { return(!MuteBlockManager.IsUnwanted(status) && CheckAcceptStatusCore(status)); }