public void UpdateMessages(FirebaseEvent <Message> observer) { var message = Messages.FirstOrDefault(f => f.FirebaseKey == observer.Key); if (observer.EventType == FirebaseEventType.Delete && message != null) { Messages.Remove(message); return; } if (observer.EventType == FirebaseEventType.Delete) { return; } if (message != null) { message.Text = observer.Object.Text; message.TimeStamp = observer.Object.TimeStamp; return; } observer.Object.FirebaseKey = observer.Key; Messages.Add(observer.Object); }
/// <summary> /// Starts observing the real-time Database. Events will be fired both when change is done locally and remotely. /// </summary> /// <returns> Stream of <see cref="FirebaseEvent{T}"/>. </returns> public IObservable <FirebaseEvent <T> > AsObservable() { if (this.observable == null) { var initialData = this.Database.Count == 0 ? Observable.Return(FirebaseEvent <T> .Empty(FirebaseEventSource.Offline)) : this.Database .Where(kvp => !string.IsNullOrEmpty(kvp.Value.Data) && kvp.Value.Data != "null" && !kvp.Value.IsPartial) .Select(kvp => new FirebaseEvent <T>(kvp.Key, kvp.Value.Deserialize <T>(), FirebaseEventType.InsertOrUpdate, FirebaseEventSource.Offline)) .ToList() .ToObservable(); this.observable = initialData .Merge(this.subject) .Merge(this.GetInitialPullObservable() .RetryAfterDelay(TimeSpan.FromSeconds(10)) .SelectMany(e => e) .Do(this.SetObjectFromInitialPull) .Select(e => new FirebaseEvent <T>(e.Key, e.Object, FirebaseEventType.InsertOrUpdate, FirebaseEventSource.Online)) .Concat(Observable.Create <FirebaseEvent <T> >(observer => this.InitializeStreamingSubscription(observer)))) .Replay() .RefCount(); } return(this.observable); }
private void OnRoomFound(FirebaseEvent <Chatroom> chatroom) { if (!chatroom.Object.IsAvailable) { return; } if (chatroom.EventType == FirebaseEventType.Delete) { return; } if (_currentChatroom != "") { return; } if (chatroom.Object.User1 == _currentUser.LocalId || chatroom.Object.User2 == _currentUser.LocalId) { _currentChatroom = chatroom.Key; _eventAggregator.GetEvent <RoomFoundEvent>().Publish(); } _messageObservable = _firebaseClient.Child($"chatrooms/{_currentChatroom}/messages").AsObservable <MessageModel>().Subscribe( message => { message.Object.Sender = message.Object.Sender == _currentUser.LocalId ? "Me" : "Other"; _eventAggregator.GetEvent <ReceiveEvent>().Publish(message.Object); _messageMedia.Start(); }); }
public void IncomingNavigationRequest(FirebaseEvent <NavigateRequestDto> observer) { lock (_updateLock) { IsNavigationActive = observer.Object.CallActive; InitiatorEmail = observer.Object.InitiatorEmail; IsRequestAccepted = observer.Object.IsRequestedAccepted; IsRequestDeclined = observer.Object.IsRequestDeclined; if (observer.Object.InitiatorEmail != ActiveUser.EmailAddress && observer.Object.InitiatorEmail != string.Empty && IsNavigationActive) { NavigationReqest?.Invoke(this, new EventArgs()); } if (IsRequestDeclined) { NavigationDeclined?.Invoke(this, new EventArgs()); } if (IsInitiator && IsNavigationActive && IsRequestAccepted) { NavigationAccepted?.Invoke(this, new EventArgs()); } } }
public void UpdateCordinates(FirebaseEvent <MapDto> observer) { if (IsInitiator) { if (InitiatorLatitude != observer.Object.InitiatorLatitude || InitiatorLongitude != observer.Object.InitiatorLongitude) { InitiatorLatitude = observer.Object.InitiatorLatitude; InitiatorLongitude = observer.Object.InitiatorLongitude; OtherUserCordinatesUpdated?.Invoke(this, new EventArgs()); } } else { if (ResponderLatitude != observer.Object.ResponderLatitude || ResponderLongitude != observer.Object.ResponderLongitude) { ResponderLatitude = observer.Object.ResponderLatitude; ResponderLongitude = observer.Object.ResponderLongitude; OtherUserCordinatesUpdated?.Invoke(this, new EventArgs()); } } }
private void OnItemMessage(FirebaseEvent <PedidoFireBase> message) { if (message.EventType == FirebaseEventType.InsertOrUpdate) { this.Activity.RunOnUiThread(() => Toast.MakeText(this.Activity, message.Object.descripcion, ToastLength.Short).Show()); } }
public void UpdateFriendList(FirebaseEvent <Friend> observer) { var friend = FriendList.FirstOrDefault(f => f.FirebaseKey == observer.Key); if (observer.EventType == FirebaseEventType.Delete && friend != null) { FriendList.Remove(friend); return; } if (observer.EventType == FirebaseEventType.Delete) { return; } if (friend != null) { friend.EmailAddress = observer.Object.EmailAddress; return; } observer.Object.FirebaseKey = observer.Key; FriendList.Add(observer.Object); }
/// <summary> /// Starts observing the real-time Database. Events will be fired both when change is done locally and remotely. /// </summary> /// <returns> Stream of <see cref="FirebaseEvent{T}"/>. </returns> public IObservable <FirebaseEvent <T> > AsObservable() { if (this.observable == null) { var initialData = this.Database.Count == 0 ? Observable.Return(FirebaseEvent <T> .Empty(FirebaseEventSource.Offline)) : this.Database .Where(kvp => !string.IsNullOrEmpty(kvp.Value.Data) && kvp.Value.Data != "null" && !kvp.Value.IsPartial) .Select(kvp => new FirebaseEvent <T>(kvp.Key, kvp.Value.Deserialize <T>(), FirebaseEventType.InsertOrUpdate, FirebaseEventSource.Offline)) .ToList() .ToObservable(); this.observable = initialData .Merge(this.subject) .Merge(this.GetInitialPullObservable() .RetryAfterDelay <IReadOnlyCollection <FirebaseObject <T> >, FirebaseException>( this.childQuery.Client.Options.SyncPeriod, ex => ex.StatusCode == System.Net.HttpStatusCode.OK) // OK implies the request couldn't complete due to network error. .SelectMany(e => e) .Do(this.SetObjectFromInitialPull) .Select(e => new FirebaseEvent <T>(e.Key, e.Object, FirebaseEventType.InsertOrUpdate, FirebaseEventSource.Online)) .Concat(Observable.Create <FirebaseEvent <T> >(observer => this.InitializeStreamingSubscription(observer)))) .Do(next => { }, e => this.observable = null, () => this.observable = null) .Replay() .RefCount(); } return(this.observable); }
public void On(string route, FirebaseEvent evt, Action <string, DataBranch> callback) { if (!parsers.ContainsKey(route)) { parsers.Add(route, new FirebaseStreamParser(route)); } var parser = parsers[route]; switch (evt) { case FirebaseEvent.Added: parser.Added += callback; break; case FirebaseEvent.Changed: parser.Changed += callback; break; case FirebaseEvent.Deleted: parser.Deleted += callback; break; default: break; } }
private void OnDataUpdated(FirebaseEvent <BattleData> evt) { currentBattle = evt.Object; if (currentBattle.LastPlayingPlayerId != ApplicationData.PlayerId) { DataUpdated?.Invoke(evt.Object); } }
// handle new messages from firebase private async void HandleServerRequest(FirebaseEvent <string> data, FirebaseClient Firebase, FirebaseAuthLink auth) { if (data.EventType == FirebaseEventType.InsertOrUpdate && data.Object.ToLower() != "false") // new message arrives { await Dispatcher.BeginInvoke((Action)(() => StartServerRequest(data.Object))); await Firebase.Child("Users/" + auth.User.LocalId + "/PC/message").PutAsync("false"); } }
public void CustomerSubscribedEvent(FirebaseEvent <Customer> sender) { //fix this string newkey = sender.Key; if (newkey != previouskey) { Console.WriteLine("Update, Name" + sender.Object.Name); } previouskey = newkey; }
private void getWinner(FirebaseEvent <Winner> u) { if (u.Object != null) { if (u.EventType == FirebaseEventType.Delete) { setWinner(u.Object.Name, "remove"); return; } setWinner(u.Object.Name, "set"); } }
private void getSetting(FirebaseEvent <DrawSetting> s) { if (s.Object != null) { drawSetting.Key = s.Key; drawSetting.EnableWageVote = s.Object.EnableWageVote; drawSetting.Wage = s.Object.Wage; if (s.Object.EnableWageVote) { btnWageUp.Enabled = !AuthUser.Instance.wageUpVote; } } }
private void updateData(FirebaseEvent <InboundMessage> f) { if (!Dispatcher.CheckAccess()) { Dispatcher.Invoke(new updateDataDel(updateData), f); } else { x.Add(x.Count + 1); string tmp = f.Object.temp.Substring(0, 5); StringBuilder strb = new StringBuilder(tmp); strb[2] = ','; y.Add(Convert.ToDouble(strb.ToString())); linegraph.Plot(x, y); // x and y are IEnumerable<double> } }
private void getMonitor(FirebaseEvent <Monitor> l) { if (l.Object != null) { if (l.EventType == FirebaseEventType.Delete) { SetText(false); } if (monitor.ContainsKey(l.Key)) { return; } monitor.Add(l.Key, l.Object.Message); SetText(l.Object.Message + "\n"); } }
/// <summary> /// Starts observing the real-time Database. Events will be fired both when change is done locally and remotely. /// </summary> /// <returns> Stream of <see cref="FirebaseEvent{T}"/>. </returns> public IObservable <FirebaseEvent <T> > AsObservable() { if (!this.isSyncRunning) { this.isSyncRunning = true; Task.Factory.StartNew(this.SynchronizeThread, CancellationToken.None, TaskCreationOptions.LongRunning, TaskScheduler.Default); } if (this.observable == null) { var initialData = Observable.Return(FirebaseEvent <T> .Empty(FirebaseEventSource.Offline)); if (this.Database.TryGetValue(this.elementRoot, out OfflineEntry oe)) { initialData = Observable.Return(oe) .Where(offlineEntry => !string.IsNullOrEmpty(offlineEntry.Data) && offlineEntry.Data != "null" && !offlineEntry.IsPartial) .Select(offlineEntry => new FirebaseEvent <T>(offlineEntry.Key, offlineEntry.Deserialize <T>(), FirebaseEventType.InsertOrUpdate, FirebaseEventSource.Offline)); } else if (this.Database.Count > 0) { initialData = this.Database .Where(kvp => !string.IsNullOrEmpty(kvp.Value.Data) && kvp.Value.Data != "null" && !kvp.Value.IsPartial) .Select(kvp => new FirebaseEvent <T>(kvp.Key, kvp.Value.Deserialize <T>(), FirebaseEventType.InsertOrUpdate, FirebaseEventSource.Offline)) .ToList() .ToObservable(); } this.observable = initialData .Merge(this.subject) .Merge(this.GetInitialPullObservable() .RetryAfterDelay <IReadOnlyCollection <FirebaseObject <T> >, FirebaseException>( this.childQuery.Client.Options.SyncPeriod, ex => ex.StatusCode == System.Net.HttpStatusCode.OK) // OK implies the request couldn't complete due to network error. .Select(e => this.ResetDatabaseFromInitial(e)) .SelectMany(e => e) .Do(this.SetObjectFromInitialPull) .Select(e => new FirebaseEvent <T>(e.Key, e.Object, e.Object == null ? FirebaseEventType.Delete : FirebaseEventType.InsertOrUpdate, FirebaseEventSource.OnlineInitial)) .Concat(Observable.Create <FirebaseEvent <T> >(observer => this.InitializeStreamingSubscription(observer)))) .Do(next => { }, e => this.observable = null, () => this.observable = null) .Replay() .RefCount(); } return(this.observable); }
private void displayMessage(FirebaseEvent <InboundMessage> item) { if (this.InvokeRequired) { this.Invoke(new displayMessageDelegate(this.displayMessage), item); } else { if (item.Object?.Recipient == Form1.username && item.Object?.Author == partner) { textBox3.Text += item.Object.Author + ": " + item.Object.Content + "\r\n"; } else if (item.Object?.Recipient == Form1.username && item.Object?.Author == partner && item.Object?.File != null) { textBox3.Text += item.Object.Author + ": " + item.Object.Filename + "\r\n"; File.WriteAllLines("C:\\Users\\szicsa\\Downloads" + item.Object.Filename, item.Object.File); } } }
private void VotedObserver(FirebaseEvent <Vote> data) { if (data.Key != null && !data.Key.Equals("")) { bool doesExists = false; if (voted.Count > 0) { foreach (var vote in voted) { if (vote.ID == data.Object.ID) { doesExists = true; } } } if (doesExists == false) { Vote this_vote = new Vote(data.Object.ID, data.Object.VoteMale, data.Object.VoteFemale); Console.WriteLine("Voted Observer | Added to voted: {0}", this_vote.ID); voted.Add(this_vote); } } }
//Comprobamos que la notificacion de cambio del estado del pedido es diferente a la inicial y así mandar la notificación private async void OnItemMessage(FirebaseEvent <Dictionary <string, PedidoFireBase> > message) { String empresa; if (message.Key.Contains("Liege")) { empresa = Monitorizacion.empresaLiege; } else { empresa = Monitorizacion.empresaSevilla; } foreach (KeyValuePair <string, PedidoFireBase> item in message.Object) { string pedMessage = item.Value.codPedido.ToString(); string estadoMessage = item.Value.descripcion.ToString(); if (Monitorizacion.listMonitorizacionLieja != null || Monitorizacion.listMonitorizacionSevilla != null) { var pedido = Monitorizacion.listMonitorizacionLieja.Where(q => q.codigoPedido.Equals(item.Value.codPedido)).FirstOrDefault(); if (pedido == null) { pedido = Monitorizacion.listMonitorizacionSevilla.Where(q => q.codigoPedido.Equals(item.Value.codPedido)).FirstOrDefault(); } if (pedido != null) { if (pedido.Estado != item.Value.estado) { await Monitorizacion.getListMonitorizacion(empresa); notificar(item.Value); } } else { await Monitorizacion.getListMonitorizacion(empresa); notificar(item.Value); } } //if (Monitorizacion.listMonitorizacion.Count > 0) //{ // for (int i = 0; i < Monitorizacion.listMonitorizacion.Count; i++) // { // string pedidoListado = Monitorizacion.listMonitorizacion[i].codigoPedido.ToString(); // if (item.Value.codPedido.Equals(Monitorizacion.listMonitorizacion[i].codigoPedido)) // { // string estadoListado = Monitorizacion.listMonitorizacion[i].Estado.ToString(); // if (!Monitorizacion.listMonitorizacion[i].Estado.Equals(item.Value.descripcion) && (message.EventType == FirebaseEventType.InsertOrUpdate)) // { // notificar(item.Value); // } // } // } //} } }
private void UpdateHighscores(FirebaseEvent <Highscore> firebaseEvent) { this.Highscores = this.db.GetHighscores(); this.OnPropertyChanged(nameof(this.Highscores)); }
public void OnNext(FirebaseEvent <T> value) { //process value }
private void VotedObserver(FirebaseEvent <Vote> data) { if (data.Key != null && !data.Key.Equals("")) { bool doesExists = false; if (voted.Count > 0) { foreach (var vote in voted) { if (vote.ID == data.Object.ID) { doesExists = true; } } } if (doesExists == false) { Vote this_vote = new Vote(data.Object.ID, data.Object.VoteMale, data.Object.VoteFemale); Console.WriteLine("Voted Observer | Added to voted: {0}", this_vote.ID); voted.Add(this_vote); totalVotes++; switch (this_vote.VoteMale) { case 1920987: votesM[0]++; break; case 1820826: votesM[1]++; break; case 1520293: votesM[2]++; break; default: Console.WriteLine("Voted Observer | VoteMale ID Not Found: {0}", this_vote.VoteMale); break; } switch (this_vote.VoteFemale) { case 1921078: votesF[0]++; break; case 1820364: votesF[1]++; break; case 1520045: votesF[2]++; break; default: Console.WriteLine("Voted Observer | VoteFemale ID Not Found: {0}", this_vote.VoteFemale); break; } } } }
private void getJoinMembers(FirebaseEvent <JoinMember> m) { setCurrentSession(m); }
private void setCurrentSession(FirebaseEvent <JoinMember> m) { if (this.lblVoted.InvokeRequired || this.btnJoin.InvokeRequired || this.btnWageUp.InvokeRequired) { SetCurrentSessionCallback d = new SetCurrentSessionCallback(setCurrentSession); this.Invoke(d, new object[] { m }); } else { if (m.Object == null) { btnJoin.Enabled = true; return; } switch (m.EventType) { case FirebaseEventType.InsertOrUpdate: if (joinKey == null) { btnJoin.Enabled = true; } if (m.Object.Username == AuthUser.Instance.Username) { AuthUser.Instance.BetWage = m.Object.BetWage; joinKey = m.Key; btnJoin.Enabled = false; btnWageUp.Enabled = drawSetting.EnableWageVote ? !m.Object.wageUpVote : false; AuthUser.Instance.wageUpVote = m.Object.wageUpVote; } if (!currentSession.ContainsKey(m.Key)) { currentSession.Add(m.Key, m.Object); wageCollection.Add(m.Key, m.Object.wageUpVote); if (m.Object.wageUpVote) { wageUpVoteCtr++; } } else { if (m.Object.wageUpVote && !wageCollection[m.Key]) { wageUpVoteCtr++; } else if (!m.Object.wageUpVote && wageCollection[m.Key]) { wageUpVoteCtr--; } wageCollection[m.Key] = m.Object.wageUpVote; } break; case FirebaseEventType.Delete: if (m.Key == joinKey) { btnWageUp.Enabled = false; btnJoin.Enabled = true; joinKey = null; AuthUser.Instance.wageUpVote = false; wageUpVoteCtr = wageUpVoteCtr <= 0 ? 0 : wageUpVoteCtr--; } currentSession.Remove(m.Key); break; default: break; } if (currentSession.Count <= 0) { lblVoted.Text = Constants.NO_SESSION; wageUpVoteCtr = 0; } else { lblVoted.Text = wageUpVoteCtr.ToString() + " / " + currentSession.Count + " voted"; } } }