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);
            });
        }
Exemple #2
0
        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);
        }