step-up-labs / firebase-database-dotnet

C# library for Firebase Realtime Database.
MIT License
668 stars 168 forks source link

Subscription breaks after Firebase.Database.Streaming.FirebaseEventType.Delete #275

Open quibenefacit opened 2 years ago

quibenefacit commented 2 years ago

This problems occurs in version 4.0.7. I haven't tried it with any other versions. Xamarin.Forms version is 5.0.0.229.

I have the following subscription:

firebaseClient.Child("Products")
     .AsObservable<Prod>()
     .Where(item => (item.Object.uid == _thisUid)
     .Subscribe(obs => {
         switch(obs.EventType) {
                case Firebase.Database.Streaming.FirebaseEventType.InsertOrUpdate:
                            var m = obs.Object;
                                prodlist.Add(new Prod() {
                                    Name = m.uniquename,
                                });
                            }
                break;
                case Firebase.Database.Streaming.FirebaseEventType.Delete:
                            var m2 = obs.Object;
                            foreach (var p in prodlist) {
                                if(p.uniquename== m2.uniquename) prodlist.Remove(t);
                            } 
                break;
         }
         PropertyChanged(this, new PropertyChangedEventArgs(nameof(prodlist)));
    }

Any number of actions of type Firebase.Database.Streaming.FirebaseEventType.InsertOrUpdate work fine until the first action Firebase.Database.Streaming.FirebaseEventType.Delete. After the latter gets processed, no subsequent subscription events get fired.

danieljustus32 commented 2 years ago

Hi,

Did you ever make any progress on this? I'm facing the same issue

TathataHY commented 1 year ago

you can reply this method, with the Subscribe function https://github.com/step-up-labs/firebase-database-dotnet/issues/162#issuecomment-473751834