ChatterBox.Client.Presentation.Shared.ViewModels.ContactsViewModel.OnPeerDataUpdated C# (CSharp) Method

OnPeerDataUpdated() private method

private OnPeerDataUpdated ( ) : void
return void
        private void OnPeerDataUpdated()
        {
            var peers = SignaledPeerData.Peers;
            ObservableCollection<ConversationViewModel> copyConversations = new ObservableCollection<ConversationViewModel>(Conversations);
            foreach (var contact in copyConversations)
            {
                if (peers.All(p => p.UserId != contact.UserId))
                {
                    Conversations.Remove(contact);
                }
            }
            foreach (var peer in peers)
            {
                var contact = Conversations.SingleOrDefault(s => s.UserId == peer.UserId);
                if (contact == null)
                {
                    contact = _contactFactory();
                    contact.Name = peer.Name;
                    contact.UserId = peer.UserId;
                    contact.ProfileSource = new BitmapImage(new Uri(AvatarLink.EmbeddedLinkFor(peer.Avatar)));
                    contact.OnCloseConversation += Contact_OnCloseConversation;
                    contact.OnIsInCallMode += Contact_OnIsInCallMode;
                    var sortList = Conversations.ToList();
                    sortList.Add(contact);
                    sortList = sortList.OrderBy(s => s.Name).ToList();
                    Conversations.Insert(sortList.IndexOf(contact), contact);
                    contact.Initialize();
                }
                contact.IsOnline = peer.IsOnline;
            }

            UpdateSelection();
        }