mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
37 lines
1.5 KiB
Swift
37 lines
1.5 KiB
Swift
import Foundation
|
|
import Postbox
|
|
import SwiftSignalKit
|
|
import TelegramApi
|
|
import MtProtoKit
|
|
|
|
public func _internal_updateCloseFriends(account: Account, peerIds: [EnginePeer.Id]) -> Signal<Never, NoError> {
|
|
let ids: [Int64] = peerIds.map { $0.id._internalGetInt64Value() }
|
|
return account.network.request(Api.functions.contacts.editCloseFriends(id: ids))
|
|
|> retryRequest
|
|
|> mapToSignal { result -> Signal<Void, NoError> in
|
|
return account.postbox.transaction { transaction in
|
|
let contactPeerIds = transaction.getContactPeerIds()
|
|
var updatedPeers: [Peer] = []
|
|
for peerId in contactPeerIds {
|
|
if let peer = transaction.getPeer(peerId) as? TelegramUser {
|
|
if peerIds.contains(peerId) {
|
|
var updatedFlags = peer.flags
|
|
updatedFlags.insert(.isCloseFriend)
|
|
let updatedPeer = peer.withUpdatedFlags(updatedFlags)
|
|
updatedPeers.append(updatedPeer)
|
|
} else if peer.flags.contains(.isCloseFriend) {
|
|
var updatedFlags = peer.flags
|
|
updatedFlags.remove(.isCloseFriend)
|
|
let updatedPeer = peer.withUpdatedFlags(updatedFlags)
|
|
updatedPeers.append(updatedPeer)
|
|
}
|
|
}
|
|
}
|
|
updatePeersCustom(transaction: transaction, peers: updatedPeers, update: { _, updated in
|
|
return updated
|
|
})
|
|
}
|
|
}
|
|
|> ignoreValues
|
|
}
|