NullPointerException abgefangen

This commit is contained in:
Lyndon Jetten
2021-11-18 12:33:13 +01:00
parent afaf7a214c
commit bf99e669fd
4 changed files with 74 additions and 57 deletions

View File

@@ -322,64 +322,83 @@ namespace ChatController
private void SelectContact(Contact pContact)
{
if(pContact == null)
try
{
return;
}
ShouldInterruptContactsThread = true;
StartWaitingImmediately();
_ScrollPrueferAktivieren = false;
if (pContact.HasUnreadMessages)
{
pContact.HasUnreadMessages = false;
Clientlist.Items.Refresh();
}
var currentContact = pContact;
pContact.IsNewMessage = false;
var shouldChangeIcon = _ContactList.Any(contact => contact.IsNewMessage);
if(shouldChangeIcon)
{
ContainingWindow.Icon = Utils.ConvertIconToImageSource(Resource.ownchat_favicon);
}
CurrentContact = currentContact;
if(Clientlist.Items.Contains(pContact))
{
Clientlist.SelectedItem = pContact;
}
_ChatMessages.Clear();
Chat.LoadChatMessagesForContactAsync(currentContact, GetFirstMessage(), chatMessages =>
{
this.Dispatch(() =>
if (pContact == null)
{
_ChatMessages.AddRangeIfElementsNotIn(chatMessages);
return;
}
WpfUtils.ScrollToBottomOfListBox(ChatListBox);
ShouldInterruptContactsThread = true;
ChatListBox.ContextMenu = Chat.ErstelleKontextMenue();
SetContextHandler();
_ScrollPrueferAktivieren = true;
StartWaitingImmediately();
ListenForMessages();
Cursor = Cursors.Arrow;
_ScrollPrueferAktivieren = false;
WriteToNewSyncFile();
if (pContact.HasUnreadMessages)
{
pContact.HasUnreadMessages = false;
ShouldInterruptContactsThread = false;
Clientlist.Items.Refresh();
}
EndWaiting();
var currentContact = pContact;
pContact.IsNewMessage = false;
var shouldChangeIcon = _ContactList.Any(contact => contact.IsNewMessage);
if (shouldChangeIcon)
{
ContainingWindow.Icon = Utils.ConvertIconToImageSource(Resource.ownchat_favicon);
}
CurrentContact = currentContact;
if (Clientlist.Items.Contains(pContact))
{
Clientlist.SelectedItem = pContact;
}
_ChatMessages.Clear();
Chat.LoadChatMessagesForContactAsync(currentContact, GetFirstMessage(), chatMessages =>
{
this.Dispatch(() =>
{
_ChatMessages.AddRangeIfElementsNotIn(chatMessages);
WpfUtils.ScrollToBottomOfListBox(ChatListBox);
ChatListBox.ContextMenu = Chat.ErstelleKontextMenue();
SetContextHandler();
_ScrollPrueferAktivieren = true;
ListenForMessages();
Cursor = Cursors.Arrow;
WriteToNewSyncFile();
ShouldInterruptContactsThread = false;
EndWaiting();
});
});
});
}
catch(Exception exception)
{
#if DEBUG
var desktop = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
using(var fileStream = new FileStream(Path.Combine(desktop, "ownchat_log.txt"), FileMode.OpenOrCreate))
{
using(var streamWriter = new StreamWriter(fileStream))
{
streamWriter.WriteLine(exception.ToString());
}
}
#endif
MessageBox.Show(exception.Message, "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
private void SetContextHandler()