public MarbleObservableItem(IConcurrencyService concurrencyService) { StreamEventsViewModel = new StreamEventsViewModel(concurrencyService); var subItems = new ObservableCollection <MarbleSubscriptionItem>(); SubscriptionItems = new ReadOnlyObservableCollection <MarbleSubscriptionItem>(subItems); this.WhenActivated(disposables => { subItems.Clear(); ObservableInstance.Subscriptions .Select(sub => new MarbleSubscriptionItem(concurrencyService) { Subscription = sub }) .ObserveOn(concurrencyService.DispatcherRxScheduler) .Subscribe(subItems.Add) .DisposeWith(disposables); StreamEventsViewModel.StreamEventsSource = ObservableInstance.Subscriptions .SelectMany(sub => sub.Events); }); }
public MarbleSubscriptionItem(IConcurrencyService concurrencyService) { StreamEventsViewModel = new StreamEventsViewModel(concurrencyService); this.WhenActivated((CompositeDisposable _) => { StreamEventsViewModel.StreamEventsSource = Subscription.Events; }); }
public MarbleObservableItemGroup(IImmutableList <long> ordering, IInstrumentedCall call, ReadOnlyObservableCollection <MarbleObservableItem> items, IConcurrencyService concurrencyService) { Ordering = ordering; mCall = call; Items = items; StreamEventsViewModel = new StreamEventsViewModel(concurrencyService); StreamEventsViewModel.StreamEventsSource = Items.ToObservableChangeSet() .ObserveOn(concurrencyService.TaskPoolRxScheduler) .AddKey(x => x.ObservableInstance.ObservableId) .WhereReasonsAre(ChangeReason.Add) .Flatten() .Select(chg => chg.Current) .Select(item => item.ObservableInstance) .SelectMany(obs => obs.Subscriptions) .SelectMany(sub => sub.Events); }