From 7ae256b5665d26c19a7c97dd0ec4986d53afd63c Mon Sep 17 00:00:00 2001 From: Benoit Martins Date: Mon, 24 Feb 2025 16:14:58 +0100 Subject: [PATCH] Fix crash in conversationModel.getChatRoomSubject when avatarListModel is null --- .../Model/ConversationModel.swift | 40 +++++++++++-------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/Linphone/UI/Main/Conversations/Model/ConversationModel.swift b/Linphone/UI/Main/Conversations/Model/ConversationModel.swift index f2b102172..be16dcdba 100644 --- a/Linphone/UI/Main/Conversations/Model/ConversationModel.swift +++ b/Linphone/UI/Main/Conversations/Model/ConversationModel.swift @@ -225,23 +225,29 @@ class ConversationModel: ObservableObject, Identifiable { let addressTmp = addressFriend?.address?.asStringUriOnly() ?? "" - let avatarModelTmp = addressFriend != nil && !self.isGroup - ? ContactsManager.shared.avatarListModel.first(where: { - $0.friend!.name == addressFriend!.name - && $0.friend!.address!.asStringUriOnly() == addressFriend!.address!.asStringUriOnly() - }) - ?? ContactAvatarModel( - friend: nil, - name: subjectTmp, - address: addressTmp, - withPresence: false - ) - : ContactAvatarModel( - friend: nil, - name: subjectTmp, - address: self.chatRoom.peerAddress?.asStringUriOnly() ?? addressTmp, - withPresence: false - ) + let avatarModelTmp: ContactAvatarModel + if let addressFriend = addressFriend, !self.isGroup { + if let existingAvatarModel = ContactsManager.shared.avatarListModel.first(where: { + $0.friend?.name == addressFriend.name && + $0.friend?.address?.asStringUriOnly() == addressFriend.address?.asStringUriOnly() + }) { + avatarModelTmp = existingAvatarModel + } else { + avatarModelTmp = ContactAvatarModel( + friend: nil, + name: subjectTmp, + address: addressTmp, + withPresence: false + ) + } + } else { + avatarModelTmp = ContactAvatarModel( + friend: nil, + name: subjectTmp, + address: self.chatRoom.peerAddress?.asStringUriOnly() ?? addressTmp, + withPresence: false + ) + } var participantsAddressTmp: [String] = []