Fix awaitDataWrite execution on main queue

This commit is contained in:
Benoit Martins 2025-09-05 15:19:44 +02:00
parent a5bef93587
commit 3aa9419c5d
3 changed files with 19 additions and 24 deletions

View file

@ -253,7 +253,7 @@ final class ContactsManager: ObservableObject {
return
}
awaitDataWrite(data: data, name: name, prefix: prefix) { _, result in
awaitDataWrite(data: data, name: name, prefix: prefix) { result in
self.saveFriend(result: result, contact: contact, existingFriend: existingFriend) { resultFriend in
if resultFriend != nil {
if linphoneFriend != self.nativeAddressBookFriendList && existingFriend == nil {
@ -268,7 +268,7 @@ final class ContactsManager: ObservableObject {
}
}
}
completion()
DispatchQueue.main.async { completion() }
}
}
}
@ -352,26 +352,21 @@ final class ContactsManager: ObservableObject {
return imagePath
}
func awaitDataWrite(data: Data, name: String, prefix: String, completion: @escaping ((), String) -> Void) {
let directory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first
func awaitDataWrite(data: Data, name: String, prefix: String, completion: @escaping (String) -> Void) {
guard let directory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else {
completion("")
return
}
if directory != nil {
DispatchQueue.main.async {
do {
if let urlName = URL(string: name + prefix) {
let imagePath = urlName.absoluteString.replacingOccurrences(of: "%", with: "")
let decodedData: () = try data.write(to: directory!.appendingPathComponent(imagePath + ".png"))
completion(decodedData, imagePath + ".png")
} else {
completion((), "")
}
} catch {
print("Error: ", error)
completion((), "")
}
}
do {
let fileName = name + prefix + ".png"
let fileURL = directory.appendingPathComponent(fileName)
try data.write(to: fileURL)
completion(fileName)
} catch {
print("Error writing image: \(error)")
completion("")
}
}
@ -556,7 +551,7 @@ final class ContactsManager: ObservableObject {
for contact in avatarListModel {
contact.$starred
.sink { [weak self] _ in
self?.starredChangeTrigger = UUID() // 🔁 Déclenche le refresh de la vue
self?.starredChangeTrigger = UUID()
}
.store(in: &cancellables)
}

View file

@ -131,7 +131,7 @@ class AccountProfileViewModel: ObservableObject {
let photoAvatarModelKey = CoreContext.shared.accounts[self.accountModelIndex!].usernaneAvatar
ContactsManager.shared.awaitDataWrite(data: data, name: name, prefix: prefix) { _, result in
ContactsManager.shared.awaitDataWrite(data: data, name: name, prefix: prefix) { result in
UserDefaults.standard.set(result, forKey: photoAvatarModelKey)
CoreContext.shared.accounts[self.accountModelIndex ?? 0].photoAvatarModel = ""

View file

@ -271,7 +271,7 @@ class AccountModel: ObservableObject {
let photoAvatarModelKey = name
ContactsManager.shared.awaitDataWrite(data: data, name: name, prefix: prefix) { _, result in
ContactsManager.shared.awaitDataWrite(data: data, name: name, prefix: prefix) { result in
UserDefaults.standard.set(result, forKey: photoAvatarModelKey)
self.photoAvatarModel = ""