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));
            });
        }
Пример #2
0
 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);
     });
 }