This commit is contained in:
Mike Renoir
2024-01-22 16:53:59 +04:00
parent d9ce409305
commit 28ee7548cd

View File

@@ -3,22 +3,27 @@ import Postbox
import TelegramApi
internal func _internal_updateIsPremiumRequiredToContact(account: Account, peerIds: [EnginePeer.Id]) -> Signal<[EnginePeer.Id], NoError> {
return account.postbox.transaction { transaction -> ([Api.InputUser], [PeerId]) in
return account.postbox.transaction { transaction -> ([Api.InputUser], [PeerId], [PeerId]) in
var inputUsers: [Api.InputUser] = []
var premiumRequired:[EnginePeer.Id] = []
var ids:[PeerId] = []
for id in peerIds {
if let peer = transaction.getPeer(id), let inputUser = apiInputUser(peer) {
if let cachedData = transaction.getPeerCachedData(peerId: id) as? CachedUserData {
if cachedData.flags.contains(.premiumRequired) {
premiumRequired.append(id)
if peer.isPremium {
if let cachedData = transaction.getPeerCachedData(peerId: id) as? CachedUserData {
if cachedData.flags.contains(.premiumRequired) {
inputUsers.append(inputUser)
ids.append(id)
}
} else if let peer = peer as? TelegramUser, peer.flags.contains(.requirePremium), !peer.flags.contains(.mutualContact) {
inputUsers.append(inputUser)
ids.append(id)
}
} else if let peer = peer as? TelegramUser, peer.flags.contains(.requirePremium), !peer.flags.contains(.mutualContact) {
inputUsers.append(inputUser)
}
}
}
return (inputUsers, premiumRequired)
} |> mapToSignal { inputUsers, premiumRequired -> Signal<[EnginePeer.Id], NoError> in
return (inputUsers, premiumRequired, ids)
} |> mapToSignal { inputUsers, premiumRequired, reqIds -> Signal<[EnginePeer.Id], NoError> in
if !inputUsers.isEmpty {
return account.network.request(Api.functions.users.getIsPremiumRequiredToContact(id: inputUsers))
@@ -27,7 +32,7 @@ internal func _internal_updateIsPremiumRequiredToContact(account: Account, peerI
return account.postbox.transaction { transaction in
var requiredPeerIds: [EnginePeer.Id] = []
for (i, req) in result.enumerated() {
let peerId = peerIds[i]
let peerId = reqIds[i]
let required = req == .boolTrue
transaction.updatePeerCachedData(peerIds: Set([peerId]), update: { _, cachedData in
let data = cachedData as? CachedUserData ?? CachedUserData()