Nullabfrage hinzugefügt
This commit is contained in:
@@ -46,6 +46,7 @@
|
||||
<HintPath>..\PrototypChat\packages\RestSharp.105.2.3\lib\net45\RestSharp.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Web" />
|
||||
|
||||
@@ -319,7 +319,7 @@ namespace ChatController
|
||||
_ContainingWindow.Activate();
|
||||
|
||||
var selectedContact = _ContactList?.FirstOrDefault(f => f?.Contact.GroupId == pGroupId);
|
||||
if(!(selectedContact is null))
|
||||
if(!(selectedContact?.Contact is null))
|
||||
{
|
||||
SelectContact(selectedContact.Contact);
|
||||
}
|
||||
@@ -374,83 +374,93 @@ namespace ChatController
|
||||
return;
|
||||
}
|
||||
|
||||
if(Clientlist?.SelectedItem is ContactDependencyObject selectedContactDependencyObject)
|
||||
if(Clientlist?.SelectedItem is ContactDependencyObject selectedContactDependencyObject && !(selectedContactDependencyObject.Contact is null))
|
||||
{
|
||||
SelectContact(selectedContactDependencyObject.Contact);
|
||||
}
|
||||
}
|
||||
|
||||
// ToDo: Hier kommt es immer wieder zu einer NullPointerException
|
||||
private void SelectContact(Contact contact)
|
||||
{
|
||||
if(contact is null)
|
||||
try
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
ChatMessageFileWrapper = null;
|
||||
|
||||
ShouldInterruptContactsThread = true;
|
||||
|
||||
StartWaitingImmediately();
|
||||
|
||||
_ScrollPrueferAktivieren = false;
|
||||
|
||||
if(contact.HasUnreadMessages)
|
||||
{
|
||||
contact.HasUnreadMessages = false;
|
||||
|
||||
Clientlist.Items.Refresh();
|
||||
OnPropertyChanged(nameof(ContactList));
|
||||
}
|
||||
|
||||
var currentContact = contact;
|
||||
contact.IsNewMessage = false;
|
||||
|
||||
var shouldChangeIcon = _ContactList.Any(contactDependencyObject => contactDependencyObject.Contact.IsNewMessage);
|
||||
if(shouldChangeIcon)
|
||||
{
|
||||
ContainingWindow.Icon = Utils.ConvertIconToImageSource(Resource.ownchat_favicon);
|
||||
}
|
||||
|
||||
CurrentContact = currentContact;
|
||||
|
||||
OnPropertyChanged(nameof(IsSendButtonEnabled));
|
||||
|
||||
foreach(ContactDependencyObject item in Clientlist.Items)
|
||||
{
|
||||
if(item.Contact.Equals(contact))
|
||||
if(contact is null)
|
||||
{
|
||||
Clientlist.SelectedItem = item;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
_ChatMessages.Clear();
|
||||
OnPropertyChanged(nameof(_ChatMessages));
|
||||
ChatMessageFileWrapper = null;
|
||||
|
||||
Chat.LoadChatMessagesForContactAsync(currentContact, GetFirstMessage(), chatMessages =>
|
||||
{
|
||||
this.Dispatch(() =>
|
||||
ShouldInterruptContactsThread = true;
|
||||
|
||||
// Zeigt die Warteanimation (das Rädchen)
|
||||
StartWaitingImmediately();
|
||||
|
||||
_ScrollPrueferAktivieren = false;
|
||||
|
||||
if(contact.HasUnreadMessages)
|
||||
{
|
||||
_ChatMessages.Clear();
|
||||
_ChatMessages.AddRangeIfElementsNotIn(chatMessages);
|
||||
OnPropertyChanged(nameof(_ChatMessages));
|
||||
contact.HasUnreadMessages = false;
|
||||
|
||||
WpfUtils.ScrollToBottomOfListBox(ChatListBox);
|
||||
Clientlist?.Items.Refresh();
|
||||
OnPropertyChanged(nameof(ContactList));
|
||||
}
|
||||
|
||||
ChatListBox.ContextMenu = Chat.ErstelleKontextMenue();
|
||||
SetContextHandler();
|
||||
_ScrollPrueferAktivieren = true;
|
||||
var currentContact = contact;
|
||||
|
||||
ListenForMessages();
|
||||
Cursor = Cursors.Arrow;
|
||||
contact.IsNewMessage = false;
|
||||
|
||||
WriteToNewSyncFile();
|
||||
var shouldChangeIcon = _ContactList.Any(contactDependencyObject => contactDependencyObject.Contact.IsNewMessage);
|
||||
if(shouldChangeIcon)
|
||||
{
|
||||
ContainingWindow.Icon = Utils.ConvertIconToImageSource(Resource.ownchat_favicon);
|
||||
}
|
||||
|
||||
ShouldInterruptContactsThread = false;
|
||||
CurrentContact = currentContact;
|
||||
|
||||
EndWaiting();
|
||||
OnPropertyChanged(nameof(IsSendButtonEnabled));
|
||||
|
||||
foreach(ContactDependencyObject item in Clientlist.Items)
|
||||
{
|
||||
if(item.Contact.Equals(contact))
|
||||
{
|
||||
Clientlist.SelectedItem = item;
|
||||
}
|
||||
}
|
||||
|
||||
_ChatMessages.Clear();
|
||||
OnPropertyChanged(nameof(_ChatMessages));
|
||||
|
||||
Chat.LoadChatMessagesForContactAsync(currentContact, GetFirstMessage(), chatMessages =>
|
||||
{
|
||||
this.Dispatch(() =>
|
||||
{
|
||||
_ChatMessages.Clear();
|
||||
_ChatMessages.AddRangeIfElementsNotIn(chatMessages);
|
||||
OnPropertyChanged(nameof(_ChatMessages));
|
||||
|
||||
WpfUtils.ScrollToBottomOfListBox(ChatListBox);
|
||||
|
||||
ChatListBox.ContextMenu = Chat.ErstelleKontextMenue();
|
||||
SetContextHandler();
|
||||
_ScrollPrueferAktivieren = true;
|
||||
|
||||
ListenForMessages();
|
||||
Cursor = Cursors.Arrow;
|
||||
|
||||
WriteToNewSyncFile();
|
||||
|
||||
ShouldInterruptContactsThread = false;
|
||||
|
||||
EndWaiting();
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
catch(Exception exception)
|
||||
{
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
private void SetContextHandler()
|
||||
|
||||
@@ -357,20 +357,20 @@ namespace ChatController.HauptKlassen
|
||||
return result;
|
||||
}
|
||||
|
||||
var messageId = 0;
|
||||
var userName = ChatDaten.LoggedInUser.Response.User.UserName;
|
||||
var sendTime = DateTime.Now;
|
||||
var fileName = Path.GetFileName(pathToScaledFile);
|
||||
var imageFile = GetImageFile(pathToScaledFile, out var fileSize);
|
||||
var isImage = Constants.ImageFileExtensions.Contains(Path.GetExtension(pathToScaledFile).ToUpperInvariant());
|
||||
var messageText = string.IsNullOrWhiteSpace(chatBoxText) ? fileName : chatBoxText;
|
||||
var filePath = isImage ? null : pathToScaledFile;
|
||||
var originalImage = isImage ? pathToScaledFile : null;
|
||||
var imageName = isImage ? fileName : null;
|
||||
var messageId = 0;
|
||||
var userName = ChatDaten.LoggedInUser.Response.User.UserName;
|
||||
var sendTime = DateTime.Now;
|
||||
var fileName = Path.GetFileName(pathToScaledFile);
|
||||
var imageFile = GetImageFile(pathToScaledFile, out var fileSize);
|
||||
var isImage = Constants.ImageFileExtensions.Contains(Path.GetExtension(pathToScaledFile).ToUpperInvariant());
|
||||
var messageText = string.IsNullOrWhiteSpace(chatBoxText) ? fileName : chatBoxText;
|
||||
var filePath = isImage ? null : pathToScaledFile;
|
||||
var originalImage = isImage ? pathToScaledFile : null;
|
||||
var imageName = isImage ? fileName : null;
|
||||
var linkToThumbnail = isImage ? null : $"{ChatDaten.ServerUrl}/document.png";
|
||||
var logo = isImage ? imageFile : null;
|
||||
var logo = isImage ? imageFile : null;
|
||||
var chatMessageType = isImage ? ChatMessageType.Image : ChatMessageType.Document;
|
||||
var senderId = ChatDaten.LoggedInUser.Response.User.Oid;
|
||||
var senderId = ChatDaten.LoggedInUser.Response.User.Oid;
|
||||
|
||||
var chatMessage = new ChatMessage(groupId, messageId, userName, messageText, sendTime, true, fileSize, filePath, originalImage, imageName, linkToThumbnail, logo, chatMessageType, senderId);
|
||||
|
||||
@@ -925,11 +925,17 @@ namespace ChatController.HauptKlassen
|
||||
|
||||
private static List<ChatMessage> AddSeparators(List<ChatMessage> chatMessages)
|
||||
{
|
||||
if(chatMessages is null)
|
||||
{
|
||||
chatMessages = new List<ChatMessage>();
|
||||
}
|
||||
|
||||
var messagesWithoutSeparators = chatMessages.Where(message => !message.IsSeparator).OrderBy(message => message.SendTime).ToList();
|
||||
|
||||
var separators = new List<ChatMessage>();
|
||||
|
||||
var previousMessage = messagesWithoutSeparators.OrderBy(message => message.SendTime).FirstOrDefault();
|
||||
|
||||
foreach(var message in messagesWithoutSeparators.OrderBy(message => message.SendTime))
|
||||
{
|
||||
if(!message.Equals(previousMessage) && !(previousMessage is null))
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// Allgemeine Informationen über eine Assembly werden über die folgenden
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="ClrHeapAllocationAnalyzer" version="3.0.0" targetFramework="net45" />
|
||||
<package id="RestSharp" version="105.2.3" targetFramework="net45" />
|
||||
</packages>
|
||||
@@ -7,6 +7,7 @@ namespace ownChat
|
||||
public ExceptionWindow(Exception exception)
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
ExceptionViewControl.Exception = exception;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user