diff --git a/ChatController/ChatMainControl.xaml.cs b/ChatController/ChatMainControl.xaml.cs index 01eab05..419c663 100644 --- a/ChatController/ChatMainControl.xaml.cs +++ b/ChatController/ChatMainControl.xaml.cs @@ -906,66 +906,74 @@ namespace ChatController this.Dispatch(() => { - foreach (var contactDependencyObject in _ContactList) + try { - foreach (var newContact in updatedContacts) + foreach (var contactDependencyObject in _ContactList) { - if (contactDependencyObject.Contact.GroupId == newContact.GroupId) + foreach (var newContact in updatedContacts) { - // ReceivedMessage kann null sein! - if (!(contactDependencyObject.Contact.ReceivedMessage is null) && !contactDependencyObject.Contact.ReceivedMessage.Id.Equals(newContact.ReceivedMessage?.Id)) + if (contactDependencyObject.Contact.GroupId == newContact.GroupId) { - contactDependencyObject.Contact.ReceivedMessage = newContact.ReceivedMessage; - contactDependencyObject.Contact.TimeStamp = newContact.TimeStamp; - - Contact selectedContact = null; - - if(Clientlist.SelectedItem is ContactDependencyObject selectedContactDependencyObject) + // ReceivedMessage kann null sein! + if (!(contactDependencyObject.Contact.ReceivedMessage is null) && !contactDependencyObject.Contact.ReceivedMessage.Id.Equals(newContact.ReceivedMessage?.Id)) { - selectedContact = selectedContactDependencyObject.Contact; - } + contactDependencyObject.Contact.ReceivedMessage = newContact.ReceivedMessage; + contactDependencyObject.Contact.TimeStamp = newContact.TimeStamp; - // Angemeldeter Benutzer - var userOid = Chat.ChatDaten.LoggedInUser.Response.User.Oid; + Contact selectedContact = null; - var senderId = contactDependencyObject.Contact.ReceivedMessage?.UserId; - var receiverId = userOid; - var receiverGroupId = newContact.GroupId; - var selectedGroupId = selectedContact?.GroupId; - - if (senderId != receiverId && (_IsInBackground || receiverGroupId != selectedGroupId)) - { - if (!(ContainingWindow is null)) + if(Clientlist.SelectedItem is ContactDependencyObject selectedContactDependencyObject) { - ContainingWindow.Icon = Utils.ConvertIconToImageSource(Resource.oC_favico_NewMessage); + selectedContact = selectedContactDependencyObject.Contact; } - ShowNotification(newContact.Name, newContact.ReceivedMessage, newContact.GroupId); - } + // Angemeldeter Benutzer + var userOid = Chat.ChatDaten.LoggedInUser.Response.User.Oid; - // Wenn der momentan ausgewählte Kontakt der aktuelle Kontakt in der Schleife ist, werden die Nachrichten nicht als ungelesen angezeigt, sonst schon. - if (!(CurrentContact is null) && newContact.GroupId == CurrentContact.GroupId) - { - contactDependencyObject.Contact.HasUnreadMessages = false; - } - else - { - contactDependencyObject.Contact.HasUnreadMessages = true; - contactDependencyObject.Contact.IsNewMessage = true; + var senderId = contactDependencyObject.Contact.ReceivedMessage?.UserId; + var receiverId = userOid; + var receiverGroupId = newContact.GroupId; + var selectedGroupId = selectedContact?.GroupId; + + if (senderId != receiverId && (_IsInBackground || receiverGroupId != selectedGroupId)) + { + if (!(ContainingWindow is null)) + { + ContainingWindow.Icon = Utils.ConvertIconToImageSource(Resource.oC_favico_NewMessage); + } + + ShowNotification(newContact.Name, newContact.ReceivedMessage, newContact.GroupId); + } + + // Wenn der momentan ausgewählte Kontakt der aktuelle Kontakt in der Schleife ist, werden die Nachrichten nicht als ungelesen angezeigt, sonst schon. + if (!(CurrentContact is null) && newContact.GroupId == CurrentContact.GroupId) + { + contactDependencyObject.Contact.HasUnreadMessages = false; + } + else + { + contactDependencyObject.Contact.HasUnreadMessages = true; + contactDependencyObject.Contact.IsNewMessage = true; + } } } } + + if (!updatedContacts.Contains(contactDependencyObject.Contact)) + { + _ContactList.ToList().Remove(contactDependencyObject); + } } - if (!updatedContacts.Contains(contactDependencyObject.Contact)) - { - _ContactList.ToList().Remove(contactDependencyObject); - } + ContactList.Sort((x, y) => DateTime.Compare(y.Contact.TimeStamp, x.Contact.TimeStamp)); + OnPropertyChanged(nameof(ChatMessages)); + OnPropertyChanged(nameof(ContactList)); + } + catch(Exception exception) + { + Console.WriteLine(exception); + throw; } - - ContactList.Sort((x, y) => DateTime.Compare(y.Contact.TimeStamp, x.Contact.TimeStamp)); - OnPropertyChanged(nameof(ChatMessages)); - OnPropertyChanged(nameof(ContactList)); }); }); }