public void ObserveSingle <T>(FirebaseEventDelegate <T> handler) { var rootNode = databaseReference; rootNode.ObserveSingleEvent(DataEventType.Value, (snapshot) => { if (snapshot.Exists) { FirebaseXamarinHelper.RunOnUIThread(() => { var data = snapshot.GetValue(); var snapData = DataConverter.Convert <T>(data, GetObjectFromHandler(handler)); SetObjectFromHandler(handler, snapData); handler.OnSnapshot(snapData); }); } else { handler?.OnError?.Invoke(new SnapshotNotFoundException()); } }, (error) => { handler?.OnError?.Invoke(new FirebaseException(error)); }); }
private void HandleChange(FirebaseChildChangeEnum type, DataSnapshot snapshot, string previousChildName) { FirebaseXamarinHelper.RunOnUIThread(() => { var snapData = DataConverter.Convert <T>(snapshot.Value, GetObjectFromHandler(eventDelegate)); eventDelegate.OnSnapshot(type, previousChildName, new KeyValuePair <string, T>(snapshot.Key, snapData)); SetObjectFromHandler(eventDelegate, snapData); }); }