This commit is contained in:
2023-02-15 18:43:15 +01:00
parent 7367f36132
commit 101ce32c06

View File

@@ -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));
});
});
}