diff --git a/submodules/TelegramCore/TelegramCore/UpdateContactName.swift b/submodules/TelegramCore/TelegramCore/UpdateContactName.swift index 8cdf628d9c..c917657f3b 100644 --- a/submodules/TelegramCore/TelegramCore/UpdateContactName.swift +++ b/submodules/TelegramCore/TelegramCore/UpdateContactName.swift @@ -21,26 +21,19 @@ public enum UpdateContactNameError { public func updateContactName(account: Account, peerId: PeerId, firstName: String, lastName: String) -> Signal { return account.postbox.transaction { transaction -> Signal in - if let peer = transaction.getPeer(peerId) as? TelegramUser, let phone = peer.phone, !phone.isEmpty { - return account.network.request(Api.functions.contacts.importContacts(contacts: [Api.InputContact.inputPhoneContact(clientId: 1, phone: phone, firstName: firstName, lastName: lastName)])) - |> mapError { _ -> UpdateContactNameError in - return .generic - } - |> mapToSignal { result -> Signal in - return account.postbox.transaction { transaction -> Void in - switch result { - case let .importedContacts(_, _, _, users): - if let first = users.first { - let user = TelegramUser(user: first) - updatePeers(transaction: transaction, peers: [user], update: { _, updated in - return updated - }) - } - } - } |> mapError { _ -> UpdateContactNameError in return .generic } - } + if let peer = transaction.getPeer(peerId) as? TelegramUser, let inputUser = apiInputUser(peer) { + return account.network.request(Api.functions.contacts.addContact(flags: 0, id: inputUser, firstName: firstName, lastName: lastName, phone: "")) + |> mapError { _ -> UpdateContactNameError in + return .generic + } + |> mapToSignal { result -> Signal in + account.stateManager.addUpdates(result) + return .complete() + } } else { return .fail(.generic) } - } |> mapError { _ -> UpdateContactNameError in return .generic } |> switchToLatest + } + |> mapError { _ -> UpdateContactNameError in return .generic } + |> switchToLatest } diff --git a/submodules/TelegramUI/TelegramUI/ChatController.swift b/submodules/TelegramUI/TelegramUI/ChatController.swift index fb02b84309..278ff9599f 100644 --- a/submodules/TelegramUI/TelegramUI/ChatController.swift +++ b/submodules/TelegramUI/TelegramUI/ChatController.swift @@ -4801,7 +4801,7 @@ public final class ChatController: TelegramController, GalleryHiddenMediaTarget, guard let contact = contact as? TelegramUser, let phoneNumber = contact.phone else { return } - let contactData = DeviceContactExtendedData(basicData: DeviceContactBasicData(firstName: contact.firstName ?? "", lastName: contact.lastName ?? "", phoneNumbers: [DeviceContactPhoneNumberData(label: "_$!!$_", value: phoneNumber)]), middleName: "", prefix: "", suffix: "", organization: "", jobTitle: "", department: "", emailAddresses: [], urls: [], addresses: [], birthdayDate: nil, socialProfiles: [], instantMessagingProfiles: []) + let contactData = DeviceContactExtendedData(basicData: DeviceContactBasicData(firstName: contact.firstName ?? "", lastName: contact.lastName ?? "", phoneNumbers: [DeviceContactPhoneNumberData(label: "_$!!$_", value: phoneNumber)]), middleName: "", prefix: "", suffix: "", organization: "", jobTitle: "", department: "", emailAddresses: [], urls: [], addresses: [], birthdayDate: nil, socialProfiles: [], instantMessagingProfiles: []) let context = strongSelf.context dataSignal = (strongSelf.context.sharedContext.contactDataManager?.basicData() ?? .single([:])) |> take(1) diff --git a/submodules/TelegramUI/TelegramUI/DeviceContactData.swift b/submodules/TelegramUI/TelegramUI/DeviceContactData.swift index 6130764843..09fd35ca80 100644 --- a/submodules/TelegramUI/TelegramUI/DeviceContactData.swift +++ b/submodules/TelegramUI/TelegramUI/DeviceContactData.swift @@ -470,7 +470,7 @@ extension DeviceContactExtendedData { } var phoneNumbers: [DeviceContactPhoneNumberData] = [] if let phone = user.phone, !phone.isEmpty { - phoneNumbers.append(DeviceContactPhoneNumberData(label: "_$!!$_", value: phone)) + phoneNumbers.append(DeviceContactPhoneNumberData(label: "_$!!$_", value: phone)) } self.init(basicData: DeviceContactBasicData(firstName: user.firstName ?? "", lastName: user.lastName ?? "", phoneNumbers: phoneNumbers), middleName: "", prefix: "", suffix: "", organization: "", jobTitle: "", department: "", emailAddresses: [], urls: [], addresses: [], birthdayDate: nil, socialProfiles: [], instantMessagingProfiles: []) } diff --git a/submodules/TelegramUI/TelegramUI/OpenChatMessage.swift b/submodules/TelegramUI/TelegramUI/OpenChatMessage.swift index e2722410ec..6276ea26af 100644 --- a/submodules/TelegramUI/TelegramUI/OpenChatMessage.swift +++ b/submodules/TelegramUI/TelegramUI/OpenChatMessage.swift @@ -326,7 +326,7 @@ func openChatMessage(context: AccountContext, message: Message, standalone: Bool if let vCard = contact.vCardData, let vCardData = vCard.data(using: .utf8), let parsed = DeviceContactExtendedData(vcard: vCardData) { contactData = parsed } else { - contactData = DeviceContactExtendedData(basicData: DeviceContactBasicData(firstName: contact.firstName, lastName: contact.lastName, phoneNumbers: [DeviceContactPhoneNumberData(label: "_$!!$_", value: contact.phoneNumber)]), middleName: "", prefix: "", suffix: "", organization: "", jobTitle: "", department: "", emailAddresses: [], urls: [], addresses: [], birthdayDate: nil, socialProfiles: [], instantMessagingProfiles: []) + contactData = DeviceContactExtendedData(basicData: DeviceContactBasicData(firstName: contact.firstName, lastName: contact.lastName, phoneNumbers: [DeviceContactPhoneNumberData(label: "_$!!$_", value: contact.phoneNumber)]), middleName: "", prefix: "", suffix: "", organization: "", jobTitle: "", department: "", emailAddresses: [], urls: [], addresses: [], birthdayDate: nil, socialProfiles: [], instantMessagingProfiles: []) } let controller = deviceContactInfoController(context: context, subject: .vcard(peer, nil, contactData)) navigationController?.pushViewController(controller)