From 39c7c6a4b1cdd752237d3fbaddf95c1b71d993c2 Mon Sep 17 00:00:00 2001 From: Benoit Martins Date: Mon, 8 Jul 2024 11:22:07 +0200 Subject: [PATCH] Change values of EditContactViewModel.resetValues in main thread --- .../ViewModel/EditContactViewModel.swift | 51 ++++++++++++------- 1 file changed, 33 insertions(+), 18 deletions(-) diff --git a/Linphone/UI/Main/Contacts/ViewModel/EditContactViewModel.swift b/Linphone/UI/Main/Contacts/ViewModel/EditContactViewModel.swift index a66fa422b..25fa52755 100644 --- a/Linphone/UI/Main/Contacts/ViewModel/EditContactViewModel.swift +++ b/Linphone/UI/Main/Contacts/ViewModel/EditContactViewModel.swift @@ -37,26 +37,41 @@ class EditContactViewModel: ObservableObject { } func resetValues() { - identifier = (selectedEditFriend == nil ? "" : selectedEditFriend!.nativeUri) ?? "" - firstName = (selectedEditFriend == nil ? "" : selectedEditFriend!.vcard?.givenName) ?? "" - lastName = (selectedEditFriend == nil ? "" : selectedEditFriend!.vcard?.familyName) ?? "" - sipAddresses = [] - phoneNumbers = [] - company = (selectedEditFriend == nil ? "" : selectedEditFriend!.organization) ?? "" - jobTitle = (selectedEditFriend == nil ? "" : selectedEditFriend!.jobTitle) ?? "" - - if selectedEditFriend != nil { - selectedEditFriend?.addresses.forEach({ address in - sipAddresses.append(String(address.asStringUriOnly().dropFirst(4))) - }) + CoreContext.shared.doOnCoreQueue { _ in + let nativeUriTmp = (self.selectedEditFriend == nil ? "" : self.selectedEditFriend!.nativeUri) ?? "" + let givenNameTmp = (self.selectedEditFriend == nil ? "" : self.selectedEditFriend!.vcard?.givenName) ?? "" + let familyNameTmp = (self.selectedEditFriend == nil ? "" : self.selectedEditFriend!.vcard?.familyName) ?? "" + let organizationTmp = (self.selectedEditFriend == nil ? "" : self.selectedEditFriend!.organization) ?? "" + let jobTitleTmp = (self.selectedEditFriend == nil ? "" : self.selectedEditFriend!.jobTitle) ?? "" - selectedEditFriend?.phoneNumbers.forEach({ phoneNumber in - phoneNumbers.append(phoneNumber) - }) + var sipAddressesTmp: [String] = [] + var phoneNumbersTmp: [String] = [] + if self.selectedEditFriend != nil { + self.selectedEditFriend?.addresses.forEach({ address in + sipAddressesTmp.append(String(address.asStringUriOnly().dropFirst(4))) + }) + + self.selectedEditFriend?.phoneNumbers.forEach({ phoneNumber in + phoneNumbersTmp.append(phoneNumber) + }) + } + + DispatchQueue.main.async { + self.identifier = nativeUriTmp + self.firstName = givenNameTmp + self.lastName = familyNameTmp + self.sipAddresses = [] + self.phoneNumbers = [] + self.company = organizationTmp + self.jobTitle = jobTitleTmp + + self.sipAddresses = sipAddressesTmp + self.phoneNumbers = phoneNumbersTmp + + self.sipAddresses.append("") + self.phoneNumbers.append("") + } } - - sipAddresses.append("") - phoneNumbers.append("") } }