mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-01-17 11:08:06 +00:00
Replace publisher with delegate in ContactAvatarModel
This commit is contained in:
parent
a25441a467
commit
8d8966407a
2 changed files with 19 additions and 18 deletions
|
|
@ -39,7 +39,7 @@ class ContactAvatarModel: ObservableObject {
|
|||
|
||||
@Published var presenceStatus: ConsolidatedPresence
|
||||
|
||||
private var friendSuscription: AnyCancellable?
|
||||
private var friendDelegate: FriendDelegate?
|
||||
|
||||
init(friend: Friend?, name: String, address: String, withPresence: Bool?) {
|
||||
self.friend = friend
|
||||
|
|
@ -71,27 +71,26 @@ class ContactAvatarModel: ObservableObject {
|
|||
self.lastPresenceInfo = ""
|
||||
}
|
||||
|
||||
if self.friendSuscription != nil {
|
||||
self.friendSuscription = nil
|
||||
if let delegate = friendDelegate {
|
||||
self.friend?.removeDelegate(delegate: delegate)
|
||||
self.friendDelegate = nil
|
||||
}
|
||||
|
||||
addSubscription()
|
||||
addFriendDelegate()
|
||||
} else {
|
||||
self.lastPresenceInfo = ""
|
||||
self.presenceStatus = .Offline
|
||||
}
|
||||
}
|
||||
|
||||
func addSubscription() {
|
||||
friendSuscription = self.friend?.publisher?.onPresenceReceived?.postOnCoreQueue { (cbValue: (Friend)) in
|
||||
|
||||
let latestActivityTimestamp = cbValue.presenceModel?.latestActivityTimestamp ?? -1
|
||||
|
||||
func addFriendDelegate() {
|
||||
friendDelegate = FriendDelegateStub(onPresenceReceived: { (friend: Friend) in
|
||||
let latestActivityTimestamp = friend.presenceModel?.latestActivityTimestamp ?? -1
|
||||
DispatchQueue.main.async {
|
||||
self.presenceStatus = cbValue.consolidatedPresence
|
||||
if cbValue.consolidatedPresence == .Online || cbValue.consolidatedPresence == .Busy {
|
||||
if cbValue.consolidatedPresence == .Online || latestActivityTimestamp != -1 {
|
||||
self.lastPresenceInfo = cbValue.consolidatedPresence == .Online ?
|
||||
self.presenceStatus = friend.consolidatedPresence
|
||||
if friend.consolidatedPresence == .Online || friend.consolidatedPresence == .Busy {
|
||||
if friend.consolidatedPresence == .Online || latestActivityTimestamp != -1 {
|
||||
self.lastPresenceInfo = friend.consolidatedPresence == .Online ?
|
||||
"Online" : self.getCallTime(startDate: latestActivityTimestamp)
|
||||
} else {
|
||||
self.lastPresenceInfo = "Away"
|
||||
|
|
@ -100,13 +99,15 @@ class ContactAvatarModel: ObservableObject {
|
|||
self.lastPresenceInfo = ""
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
friend?.addDelegate(delegate: friendDelegate!)
|
||||
}
|
||||
|
||||
func removeAllSuscription() {
|
||||
if friendSuscription != nil {
|
||||
func removeFriendDelegate() {
|
||||
if let delegate = friendDelegate {
|
||||
presenceStatus = .Offline
|
||||
friendSuscription = nil
|
||||
friend?.removeDelegate(delegate: delegate)
|
||||
friendDelegate = nil
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -95,7 +95,7 @@ final class MagicSearchSingleton: ObservableObject {
|
|||
self.contactsManager.lastSearchSuggestions = lastSearchSuggestions
|
||||
|
||||
self.contactsManager.avatarListModel.forEach { contactAvatarModel in
|
||||
contactAvatarModel.removeAllSuscription()
|
||||
contactAvatarModel.removeFriendDelegate()
|
||||
}
|
||||
self.contactsManager.avatarListModel.removeAll()
|
||||
self.contactsManager.avatarListModel += addedAvatarListModel
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue