- add contact improments.

This commit is contained in:
Mikhail Filimonov 2025-10-20 21:04:05 +03:00
parent 2751cf54d8
commit ffa620b62b
2 changed files with 21 additions and 4 deletions

View File

@ -3,10 +3,17 @@ import TelegramApi
import SwiftSignalKit
func _internal_importContact(account: Account, firstName: String, lastName: String, phoneNumber: String) -> Signal<PeerId?, NoError> {
func _internal_importContact(account: Account, firstName: String, lastName: String, phoneNumber: String, noteText: String, noteEntities: [MessageTextEntity]) -> Signal<PeerId?, NoError> {
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)
}

View File

@ -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<PeerId?, NoError> {
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<PeerId?, NoError> {
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<Never, AddContactError> {