From ed6f3215b9dda796c056b739a82ef84919b8a6b5 Mon Sep 17 00:00:00 2001 From: Benoit Martins Date: Tue, 25 Feb 2025 10:56:45 +0100 Subject: [PATCH] Fix friend.consolidatedPresence calls in addFriendDelegate on the core thread --- .../Main/Contacts/Model/ContactAvatarModel.swift | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Linphone/UI/Main/Contacts/Model/ContactAvatarModel.swift b/Linphone/UI/Main/Contacts/Model/ContactAvatarModel.swift index 34eea1cc4..b1b52e16d 100644 --- a/Linphone/UI/Main/Contacts/Model/ContactAvatarModel.swift +++ b/Linphone/UI/Main/Contacts/Model/ContactAvatarModel.swift @@ -86,11 +86,12 @@ class ContactAvatarModel: ObservableObject, Identifiable { func addFriendDelegate() { friendDelegate = FriendDelegateStub(onPresenceReceived: { (friend: Friend) in let latestActivityTimestamp = friend.presenceModel?.latestActivityTimestamp ?? -1 + let consolidatedPresenceTmp = friend.consolidatedPresence DispatchQueue.main.async { - self.presenceStatus = friend.consolidatedPresence - if friend.consolidatedPresence == .Online || friend.consolidatedPresence == .Busy { - if friend.consolidatedPresence == .Online || latestActivityTimestamp != -1 { - self.lastPresenceInfo = friend.consolidatedPresence == .Online ? + self.presenceStatus = consolidatedPresenceTmp + if consolidatedPresenceTmp == .Online || consolidatedPresenceTmp == .Busy { + if consolidatedPresenceTmp == .Online || latestActivityTimestamp != -1 { + self.lastPresenceInfo = consolidatedPresenceTmp == .Online ? "Online" : self.getCallTime(startDate: latestActivityTimestamp) } else { self.lastPresenceInfo = "Away" @@ -100,7 +101,10 @@ class ContactAvatarModel: ObservableObject, Identifiable { } } }) - friend?.addDelegate(delegate: friendDelegate!) + + if friend != nil && friendDelegate != nil { + friend!.addDelegate(delegate: friendDelegate!) + } } func removeFriendDelegate() {