mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-10-09 11:23:48 +00:00
some changes for 172 layer
This commit is contained in:
parent
f001ee483e
commit
fd7d20e5db
@ -49,6 +49,9 @@ extension TelegramUser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var userFlags: UserInfoFlags = []
|
var userFlags: UserInfoFlags = []
|
||||||
|
if (flags & (1 << 12)) != 0 {
|
||||||
|
userFlags.insert(.mutualContact)
|
||||||
|
}
|
||||||
if (flags & (1 << 17)) != 0 {
|
if (flags & (1 << 17)) != 0 {
|
||||||
userFlags.insert(.isVerified)
|
userFlags.insert(.isVerified)
|
||||||
}
|
}
|
||||||
@ -67,7 +70,9 @@ extension TelegramUser {
|
|||||||
if (flags2 & (1 << 2)) != 0 {
|
if (flags2 & (1 << 2)) != 0 {
|
||||||
userFlags.insert(.isCloseFriend)
|
userFlags.insert(.isCloseFriend)
|
||||||
}
|
}
|
||||||
|
if (flags2 & (1 << 6)) != 0 {
|
||||||
|
userFlags.insert(.requirePremium)
|
||||||
|
}
|
||||||
var storiesHidden: Bool?
|
var storiesHidden: Bool?
|
||||||
if !isMin {
|
if !isMin {
|
||||||
storiesHidden = (flags2 & (1 << 3)) != 0
|
storiesHidden = (flags2 & (1 << 3)) != 0
|
||||||
@ -142,6 +147,9 @@ extension TelegramUser {
|
|||||||
|
|
||||||
if let lhs = lhs {
|
if let lhs = lhs {
|
||||||
var userFlags: UserInfoFlags = []
|
var userFlags: UserInfoFlags = []
|
||||||
|
if (flags & (1 << 12)) != 0 {
|
||||||
|
userFlags.insert(.mutualContact)
|
||||||
|
}
|
||||||
if (flags & (1 << 17)) != 0 {
|
if (flags & (1 << 17)) != 0 {
|
||||||
userFlags.insert(.isVerified)
|
userFlags.insert(.isVerified)
|
||||||
}
|
}
|
||||||
@ -161,7 +169,9 @@ extension TelegramUser {
|
|||||||
if lhs.flags.contains(.isCloseFriend) {
|
if lhs.flags.contains(.isCloseFriend) {
|
||||||
userFlags.insert(.isCloseFriend)
|
userFlags.insert(.isCloseFriend)
|
||||||
}
|
}
|
||||||
|
if lhs.flags.contains(.requirePremium) {
|
||||||
|
userFlags.insert(.requirePremium)
|
||||||
|
}
|
||||||
var botInfo: BotUserInfo?
|
var botInfo: BotUserInfo?
|
||||||
if (flags & (1 << 14)) != 0 {
|
if (flags & (1 << 14)) != 0 {
|
||||||
var botFlags = BotUserInfoFlags()
|
var botFlags = BotUserInfoFlags()
|
||||||
|
@ -0,0 +1,42 @@
|
|||||||
|
import SwiftSignalKit
|
||||||
|
import Postbox
|
||||||
|
import TelegramApi
|
||||||
|
|
||||||
|
internal func _internal_updateIsPremiumRequiredToContact(account: Account, peerIds: [EnginePeer.Id]) -> Signal<[EnginePeer.Id], NoError> {
|
||||||
|
return account.postbox.transaction { transaction -> [Api.InputUser] in
|
||||||
|
var inputUsers: [Api.InputUser] = []
|
||||||
|
for id in peerIds {
|
||||||
|
if let peer = transaction.getPeer(id), let inputUser = apiInputUser(peer) {
|
||||||
|
inputUsers.append(inputUser)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return inputUsers
|
||||||
|
} |> mapToSignal { inputUsers -> Signal<[EnginePeer.Id], NoError> in
|
||||||
|
return account.network.request(Api.functions.users.getIsPremiumRequiredToContact(id: inputUsers))
|
||||||
|
|> retryRequest
|
||||||
|
|> mapToSignal { result in
|
||||||
|
return account.postbox.transaction { transaction in
|
||||||
|
var requiredPeerIds: [EnginePeer.Id] = []
|
||||||
|
for (i, req) in result.enumerated() {
|
||||||
|
let peerId = peerIds[i]
|
||||||
|
let required = req == .boolTrue
|
||||||
|
transaction.updatePeerCachedData(peerIds: Set([peerId]), update: { _, cachedData in
|
||||||
|
let data = cachedData as? CachedUserData ?? CachedUserData()
|
||||||
|
var flags = data.flags
|
||||||
|
if required {
|
||||||
|
flags.insert(.premiumRequired)
|
||||||
|
} else {
|
||||||
|
flags.remove(.premiumRequired)
|
||||||
|
}
|
||||||
|
return data.withUpdatedFlags(flags)
|
||||||
|
})
|
||||||
|
if required {
|
||||||
|
requiredPeerIds.append(peerId)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return requiredPeerIds
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -204,6 +204,7 @@ public struct CachedUserFlags: OptionSet {
|
|||||||
public static let translationHidden = CachedUserFlags(rawValue: 1 << 0)
|
public static let translationHidden = CachedUserFlags(rawValue: 1 << 0)
|
||||||
public static let isBlockedFromStories = CachedUserFlags(rawValue: 1 << 1)
|
public static let isBlockedFromStories = CachedUserFlags(rawValue: 1 << 1)
|
||||||
public static let readDatesPrivate = CachedUserFlags(rawValue: 1 << 2)
|
public static let readDatesPrivate = CachedUserFlags(rawValue: 1 << 2)
|
||||||
|
public static let premiumRequired = CachedUserFlags(rawValue: 1 << 3)
|
||||||
}
|
}
|
||||||
|
|
||||||
public final class EditableBotInfo: PostboxCoding, Equatable {
|
public final class EditableBotInfo: PostboxCoding, Equatable {
|
||||||
|
@ -17,6 +17,8 @@ public struct UserInfoFlags: OptionSet {
|
|||||||
public static let isFake = UserInfoFlags(rawValue: (1 << 3))
|
public static let isFake = UserInfoFlags(rawValue: (1 << 3))
|
||||||
public static let isPremium = UserInfoFlags(rawValue: (1 << 4))
|
public static let isPremium = UserInfoFlags(rawValue: (1 << 4))
|
||||||
public static let isCloseFriend = UserInfoFlags(rawValue: (1 << 5))
|
public static let isCloseFriend = UserInfoFlags(rawValue: (1 << 5))
|
||||||
|
public static let requirePremium = UserInfoFlags(rawValue: (1 << 6))
|
||||||
|
public static let mutualContact = UserInfoFlags(rawValue: (1 << 7))
|
||||||
}
|
}
|
||||||
|
|
||||||
public struct BotUserInfoFlags: OptionSet {
|
public struct BotUserInfoFlags: OptionSet {
|
||||||
|
@ -1273,6 +1273,10 @@ public extension TelegramEngine {
|
|||||||
public func requestRecommendedChannels(peerId: EnginePeer.Id, forceUpdate: Bool = false) -> Signal<Never, NoError> {
|
public func requestRecommendedChannels(peerId: EnginePeer.Id, forceUpdate: Bool = false) -> Signal<Never, NoError> {
|
||||||
return _internal_requestRecommendedChannels(account: self.account, peerId: peerId, forceUpdate: forceUpdate)
|
return _internal_requestRecommendedChannels(account: self.account, peerId: peerId, forceUpdate: forceUpdate)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public func isPremiumRequiredToContact(_ peerIds: [EnginePeer.Id]) -> Signal<[EnginePeer.Id], NoError> {
|
||||||
|
return _internal_updateIsPremiumRequiredToContact(account: self.account, peerIds: peerIds)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -236,9 +236,15 @@ func _internal_fetchAndUpdateCachedPeerData(accountPeerId: PeerId, peerId rawPee
|
|||||||
let videoCallsAvailable = (userFullFlags & (1 << 13)) != 0
|
let videoCallsAvailable = (userFullFlags & (1 << 13)) != 0
|
||||||
let voiceMessagesAvailable = (userFullFlags & (1 << 20)) == 0
|
let voiceMessagesAvailable = (userFullFlags & (1 << 20)) == 0
|
||||||
let readDatesPrivate = (userFullFlags & (1 << 30)) != 0
|
let readDatesPrivate = (userFullFlags & (1 << 30)) != 0
|
||||||
|
let premiumRequired = (userFullFlags & (1 << 29)) != 0
|
||||||
let translationsDisabled = (userFullFlags & (1 << 23)) != 0
|
let translationsDisabled = (userFullFlags & (1 << 23)) != 0
|
||||||
|
|
||||||
var flags: CachedUserFlags = previous.flags
|
var flags: CachedUserFlags = previous.flags
|
||||||
|
if premiumRequired {
|
||||||
|
flags.insert(.premiumRequired)
|
||||||
|
} else {
|
||||||
|
flags.remove(.premiumRequired)
|
||||||
|
}
|
||||||
if readDatesPrivate {
|
if readDatesPrivate {
|
||||||
flags.insert(.readDatesPrivate)
|
flags.insert(.readDatesPrivate)
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user