From ffa620b62bdeeb28719fefb8c0585a1697e287ed Mon Sep 17 00:00:00 2001 From: Mikhail Filimonov Date: Mon, 20 Oct 2025 21:04:05 +0300 Subject: [PATCH] - add contact improments. --- .../Contacts/ImportContact.swift | 21 +++++++++++++++++-- .../Contacts/TelegramEngineContacts.swift | 4 ++-- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/submodules/TelegramCore/Sources/TelegramEngine/Contacts/ImportContact.swift b/submodules/TelegramCore/Sources/TelegramEngine/Contacts/ImportContact.swift index 1148b91c2e..fc078e3a01 100644 --- a/submodules/TelegramCore/Sources/TelegramEngine/Contacts/ImportContact.swift +++ b/submodules/TelegramCore/Sources/TelegramEngine/Contacts/ImportContact.swift @@ -3,10 +3,17 @@ import TelegramApi import SwiftSignalKit -func _internal_importContact(account: Account, firstName: String, lastName: String, phoneNumber: String) -> Signal { +func _internal_importContact(account: Account, firstName: String, lastName: String, phoneNumber: String, noteText: String, noteEntities: [MessageTextEntity]) -> Signal { let accountPeerId = account.peerId - let input = Api.InputContact.inputPhoneContact(flags: 0, clientId: 1, phone: phoneNumber, firstName: firstName, lastName: lastName, note: nil) + var flags: Int32 = 0 + var note: Api.TextWithEntities? + if !noteText.isEmpty { + flags |= (1 << 1) + note = .textWithEntities(text: noteText, entities: apiEntitiesFromMessageTextEntities(noteEntities, associatedPeers: SimpleDictionary())) + } + + let input = Api.InputContact.inputPhoneContact(flags: 0, clientId: 1, phone: phoneNumber, firstName: firstName, lastName: lastName, note: note) return account.network.request(Api.functions.contacts.importContacts(contacts: [input])) |> map(Optional.init) @@ -28,6 +35,11 @@ func _internal_importContact(account: Account, firstName: String, lastName: Stri peerIds.insert(peerId) transaction.replaceContactPeerIds(peerIds) } + if !noteText.isEmpty { + transaction.updatePeerCachedData(peerIds: peerIds, update: { peerId, cachedData in + (cachedData as? CachedUserData)?.withUpdatedNote(.init(text: noteText, entities: noteEntities)) + }) + } return peerId } } @@ -86,6 +98,11 @@ func _internal_addContactInteractively(account: Account, peerId: PeerId, firstNa peerIds.insert(peerId) transaction.replaceContactPeerIds(peerIds) } + if !noteText.isEmpty { + transaction.updatePeerCachedData(peerIds: peerIds, update: { peerId, cachedData in + (cachedData as? CachedUserData)?.withUpdatedNote(.init(text: noteText, entities: noteEntities)) + }) + } account.stateManager.addUpdates(result) } diff --git a/submodules/TelegramCore/Sources/TelegramEngine/Contacts/TelegramEngineContacts.swift b/submodules/TelegramCore/Sources/TelegramEngine/Contacts/TelegramEngineContacts.swift index a4eabbbd5c..c3ecf5a4e2 100644 --- a/submodules/TelegramCore/Sources/TelegramEngine/Contacts/TelegramEngineContacts.swift +++ b/submodules/TelegramCore/Sources/TelegramEngine/Contacts/TelegramEngineContacts.swift @@ -42,8 +42,8 @@ public extension TelegramEngine { return _internal_deviceContactsImportedByCount(postbox: self.account.postbox, contacts: contacts) } - public func importContact(firstName: String, lastName: String, phoneNumber: String) -> Signal { - return _internal_importContact(account: self.account, firstName: firstName, lastName: lastName, phoneNumber: phoneNumber) + public func importContact(firstName: String, lastName: String, phoneNumber: String, noteText: String, noteEntities: [MessageTextEntity]) -> Signal { + return _internal_importContact(account: self.account, firstName: firstName, lastName: lastName, phoneNumber: phoneNumber, noteText: noteText, noteEntities: noteEntities) } public func addContactInteractively(peerId: PeerId, firstName: String, lastName: String, phoneNumber: String, noteText: String, noteEntities: [MessageTextEntity], addToPrivacyExceptions: Bool) -> Signal {