Swiftgram/submodules/SyncCore/Sources/TelegramChatAdminRights.swift
2020-11-26 19:10:53 +04:00

86 lines
2.7 KiB
Swift

import Postbox
public struct TelegramChatAdminRightsFlags: OptionSet {
public var rawValue: Int32
public init(rawValue: Int32) {
self.rawValue = rawValue
}
public init() {
self.rawValue = 0
}
public static let canChangeInfo = TelegramChatAdminRightsFlags(rawValue: 1 << 0)
public static let canPostMessages = TelegramChatAdminRightsFlags(rawValue: 1 << 1)
public static let canEditMessages = TelegramChatAdminRightsFlags(rawValue: 1 << 2)
public static let canDeleteMessages = TelegramChatAdminRightsFlags(rawValue: 1 << 3)
public static let canBanUsers = TelegramChatAdminRightsFlags(rawValue: 1 << 4)
public static let canInviteUsers = TelegramChatAdminRightsFlags(rawValue: 1 << 5)
public static let canPinMessages = TelegramChatAdminRightsFlags(rawValue: 1 << 7)
public static let canAddAdmins = TelegramChatAdminRightsFlags(rawValue: 1 << 9)
public static let canBeAnonymous = TelegramChatAdminRightsFlags(rawValue: 1 << 10)
public static let canManageCalls = TelegramChatAdminRightsFlags(rawValue: 1 << 11)
public static var groupSpecific: TelegramChatAdminRightsFlags = [
.canChangeInfo,
.canDeleteMessages,
.canBanUsers,
.canInviteUsers,
.canPinMessages,
.canBeAnonymous,
.canAddAdmins,
.canManageCalls
]
public static var broadcastSpecific: TelegramChatAdminRightsFlags = [
.canChangeInfo,
.canPostMessages,
.canEditMessages,
.canDeleteMessages,
.canInviteUsers,
.canAddAdmins
]
public var count: Int {
var result = 0
var index = 0
while index < 31 {
let currentValue = self.rawValue >> Int32(index)
index += 1
if currentValue == 0 {
break
}
if (currentValue & 1) != 0 {
result += 1
}
}
return result
}
}
public struct TelegramChatAdminRights: PostboxCoding, Equatable {
public let flags: TelegramChatAdminRightsFlags
public init(flags: TelegramChatAdminRightsFlags) {
self.flags = flags
}
public init(decoder: PostboxDecoder) {
self.flags = TelegramChatAdminRightsFlags(rawValue: decoder.decodeInt32ForKey("f", orElse: 0))
}
public func encode(_ encoder: PostboxEncoder) {
encoder.encodeInt32(self.flags.rawValue, forKey: "f")
}
public static func ==(lhs: TelegramChatAdminRights, rhs: TelegramChatAdminRights) -> Bool {
return lhs.flags == rhs.flags
}
public var isEmpty: Bool {
return self.flags.isEmpty
}
}