From 46f5f21216c0eb520115f49034de9cec6fba66be Mon Sep 17 00:00:00 2001 From: Benoit Martins Date: Fri, 31 Jan 2025 17:52:41 +0100 Subject: [PATCH] Fix contact refresh --- Linphone/Contacts/ContactsManager.swift | 8 +++++--- .../Fragments/ContactInnerFragment.swift | 17 ++++------------- 2 files changed, 9 insertions(+), 16 deletions(-) diff --git a/Linphone/Contacts/ContactsManager.swift b/Linphone/Contacts/ContactsManager.swift index 862b3dc48..a2e7e11c1 100644 --- a/Linphone/Contacts/ContactsManager.swift +++ b/Linphone/Contacts/ContactsManager.swift @@ -88,6 +88,8 @@ final class ContactsManager: ObservableObject { } } + MagicSearchSingleton.shared.searchForContacts(sourceFlags: MagicSearch.Source.Friends.rawValue | MagicSearch.Source.LdapServers.rawValue) + let store = CNContactStore() store.requestAccess(for: .contacts) { (granted, error) in if let error = error { @@ -129,7 +131,7 @@ final class ContactsManager: ObservableObject { name: contact.givenName + contact.familyName, prefix: ((imageThumbnail == nil) ? "-default" : ""), contact: newContact, linphoneFriend: false, existingFriend: nil) { - if (self.friendList?.friends.count ?? 0) + (self.linphoneFriendList?.friends.count ?? 0) == contactCounter { + if (self.friendList?.friends.count ?? 0) == contactCounter { // Every contact properly added, proceed self.linphoneFriendList?.updateSubscriptions() self.friendList?.updateSubscriptions() @@ -137,6 +139,7 @@ final class ContactsManager: ObservableObject { if let friendListDelegate = self.friendListDelegate { self.friendList?.removeDelegate(delegate: friendListDelegate) } + self.friendListDelegate = FriendListDelegateStub(onNewSipAddressDiscovered: { (_: FriendList, linphoneFriend: Friend, sipUri: String) in var addedAvatarListModel: [ContactAvatarModel] = [] linphoneFriend.phoneNumbers.forEach { phone in @@ -160,11 +163,10 @@ final class ContactsManager: ObservableObject { DispatchQueue.main.async { self.avatarListModel += addedAvatarListModel + self.avatarListModel = self.avatarListModel.sorted { $0.name < $1.name } } }) self.friendList?.addDelegate(delegate: self.friendListDelegate!) - - MagicSearchSingleton.shared.searchForContacts(sourceFlags: MagicSearch.Source.Friends.rawValue | MagicSearch.Source.LdapServers.rawValue) } } } diff --git a/Linphone/UI/Main/Contacts/Fragments/ContactInnerFragment.swift b/Linphone/UI/Main/Contacts/Fragments/ContactInnerFragment.swift index 0e17fe1c7..9fb71ae6a 100644 --- a/Linphone/UI/Main/Contacts/Fragments/ContactInnerFragment.swift +++ b/Linphone/UI/Main/Contacts/Fragments/ContactInnerFragment.swift @@ -73,8 +73,8 @@ struct ContactInnerFragment: View { } Spacer() - if contactViewModel.indexDisplayedFriend != nil && contactViewModel.indexDisplayedFriend! < contactsManager.lastSearch.count - && !contactAvatarModel.nativeUri.isEmpty { + + if !contactAvatarModel.nativeUri.isEmpty { Button(action: { editNativeContact() }, label: { @@ -118,17 +118,9 @@ struct ContactInnerFragment: View { VStack(spacing: 0) { VStack(spacing: 0) { VStack(spacing: 0) { - if contactViewModel.indexDisplayedFriend != nil && contactViewModel.indexDisplayedFriend! < contactsManager.lastSearch.count { + if contactViewModel.indexDisplayedFriend != nil { Avatar(contactAvatarModel: contactAvatarModel, avatarSize: 100) - } else if contactViewModel.indexDisplayedFriend != nil - && contactViewModel.indexDisplayedFriend! < contactsManager.lastSearch.count { - Image("profil-picture-default") - .resizable() - .frame(width: 100, height: 100) - .clipShape(Circle()) - } - if contactViewModel.indexDisplayedFriend != nil - && contactViewModel.indexDisplayedFriend! < contactsManager.lastSearch.count { + Text(contactAvatarModel.name) .foregroundStyle(Color.grayMain2c700) .multilineTextAlignment(.center) @@ -144,7 +136,6 @@ struct ContactInnerFragment: View { .default_text_style_300(styleSize: 12) .frame(maxWidth: .infinity) } - } .frame(minHeight: 150) .frame(maxWidth: .infinity)