Privacy settings

This commit is contained in:
Isaac
2024-01-12 22:42:18 +04:00
parent 5b7d4984ac
commit eeba8a7db1
70 changed files with 2586 additions and 521 deletions

View File

@@ -1022,6 +1022,51 @@ public extension TelegramEngine.EngineData.Item {
}
}
public struct IsPremiumRequiredForMessaging: TelegramEngineDataItem, TelegramEngineMapKeyDataItem, AnyPostboxViewDataItem {
public typealias Result = Bool
fileprivate var id: EnginePeer.Id
public var mapKey: EnginePeer.Id {
return self.id
}
public init(id: EnginePeer.Id) {
self.id = id
}
func keys(data: TelegramEngine.EngineData) -> [PostboxViewKey] {
return [
.cachedPeerData(peerId: self.id),
.basicPeer(data.accountPeerId)
]
}
func _extract(data: TelegramEngine.EngineData, views: [PostboxViewKey: PostboxView]) -> Any {
guard let basicPeerView = views[.basicPeer(data.accountPeerId)] as? BasicPeerView else {
assertionFailure()
return false
}
guard let view = views[.cachedPeerData(peerId: self.id)] as? CachedPeerDataView else {
assertionFailure()
return false
}
if let peer = basicPeerView.peer, peer.isPremium {
return false
}
if self.id.namespace == Namespaces.Peer.CloudUser {
if let cachedData = view.cachedPeerData as? CachedUserData {
return cachedData.flags.contains(.premiumRequired)
} else {
return false
}
} else {
return false
}
}
}
public struct LegacyGroupParticipants: TelegramEngineDataItem, TelegramEngineMapKeyDataItem, PostboxViewDataItem {
public typealias Result = EnginePeerCachedInfoItem<[EngineLegacyGroupParticipant]>