using System; using System.Collections.ObjectModel; using Firebase.Database.Streaming; namespace Firebase.Database { /// /// Extensions for . /// public static class ObservableExtensions { /// /// Starts observing on given firebase observable and propagates event into an . /// /// The observable. /// Type of entity. /// The . public static ObservableCollection AsObservableCollection(this IObservable> observable) { var collection = new ObservableCollection(); observable.Subscribe(f => { if (f.EventType == FirebaseEventType.InsertOrUpdate) { var i = collection.IndexOf(f.Object); if (i >= 0) collection.RemoveAt(i); collection.Add(f.Object); } else { collection.Remove(f.Object); } }); return collection; } } }