Update API [skip ci]

This commit is contained in:
Ilya Laktyushin
2022-10-03 16:45:43 +03:00
parent 7015c76e74
commit 9f0dc8c1d8
64 changed files with 2047 additions and 246 deletions

View File

@@ -165,6 +165,7 @@ public final class TelegramChannel: Peer, Equatable {
public let adminRights: TelegramChatAdminRights?
public let bannedRights: TelegramChatBannedRights?
public let defaultBannedRights: TelegramChatBannedRights?
public let usernames: [TelegramPeerUsername]
public var indexName: PeerIndexNameRepresentation {
return .title(title: self.title, addressName: self.username)
@@ -177,7 +178,7 @@ public final class TelegramChannel: Peer, Equatable {
public var timeoutAttribute: UInt32? { return nil }
public init(id: PeerId, accessHash: TelegramPeerAccessHash?, title: String, username: String?, photo: [TelegramMediaImageRepresentation], creationDate: Int32, version: Int32, participationStatus: TelegramChannelParticipationStatus, info: TelegramChannelInfo, flags: TelegramChannelFlags, restrictionInfo: PeerAccessRestrictionInfo?, adminRights: TelegramChatAdminRights?, bannedRights: TelegramChatBannedRights?, defaultBannedRights: TelegramChatBannedRights?) {
public init(id: PeerId, accessHash: TelegramPeerAccessHash?, title: String, username: String?, photo: [TelegramMediaImageRepresentation], creationDate: Int32, version: Int32, participationStatus: TelegramChannelParticipationStatus, info: TelegramChannelInfo, flags: TelegramChannelFlags, restrictionInfo: PeerAccessRestrictionInfo?, adminRights: TelegramChatAdminRights?, bannedRights: TelegramChatBannedRights?, defaultBannedRights: TelegramChatBannedRights?, usernames: [TelegramPeerUsername]) {
self.id = id
self.accessHash = accessHash
self.title = title
@@ -192,6 +193,7 @@ public final class TelegramChannel: Peer, Equatable {
self.adminRights = adminRights
self.bannedRights = bannedRights
self.defaultBannedRights = defaultBannedRights
self.usernames = usernames
}
public init(decoder: PostboxDecoder) {
@@ -219,6 +221,7 @@ public final class TelegramChannel: Peer, Equatable {
self.adminRights = decoder.decodeObjectForKey("ar", decoder: { TelegramChatAdminRights(decoder: $0) }) as? TelegramChatAdminRights
self.bannedRights = decoder.decodeObjectForKey("br", decoder: { TelegramChatBannedRights(decoder: $0) }) as? TelegramChatBannedRights
self.defaultBannedRights = decoder.decodeObjectForKey("dbr", decoder: { TelegramChatBannedRights(decoder: $0) }) as? TelegramChatBannedRights
self.usernames = decoder.decodeObjectArrayForKey("uns")
}
public func encode(_ encoder: PostboxEncoder) {
@@ -267,6 +270,7 @@ public final class TelegramChannel: Peer, Equatable {
} else {
encoder.encodeNil(forKey: "dbr")
}
encoder.encodeObjectArray(self.usernames, forKey: "uns")
}
public func isEqual(_ other: Peer) -> Bool {
@@ -301,19 +305,26 @@ public final class TelegramChannel: Peer, Equatable {
if lhs.defaultBannedRights != rhs.defaultBannedRights {
return false
}
if lhs.usernames != rhs.usernames {
return false
}
return true
}
public func withUpdatedAddressName(_ addressName: String?) -> TelegramChannel {
return TelegramChannel(id: self.id, accessHash: self.accessHash, title: self.title, username: addressName, photo: self.photo, creationDate: self.creationDate, version: self.version, participationStatus: self.participationStatus, info: self.info, flags: self.flags, restrictionInfo: self.restrictionInfo, adminRights: self.adminRights, bannedRights: self.bannedRights, defaultBannedRights: self.defaultBannedRights)
return TelegramChannel(id: self.id, accessHash: self.accessHash, title: self.title, username: addressName, photo: self.photo, creationDate: self.creationDate, version: self.version, participationStatus: self.participationStatus, info: self.info, flags: self.flags, restrictionInfo: self.restrictionInfo, adminRights: self.adminRights, bannedRights: self.bannedRights, defaultBannedRights: self.defaultBannedRights, usernames: self.usernames)
}
public func withUpdatedAddressNames(_ addressNames: [TelegramPeerUsername]) -> TelegramChannel {
return TelegramChannel(id: self.id, accessHash: self.accessHash, title: self.title, username: self.username, photo: self.photo, creationDate: self.creationDate, version: self.version, participationStatus: self.participationStatus, info: self.info, flags: self.flags, restrictionInfo: self.restrictionInfo, adminRights: self.adminRights, bannedRights: self.bannedRights, defaultBannedRights: self.defaultBannedRights, usernames: addressNames)
}
public func withUpdatedDefaultBannedRights(_ defaultBannedRights: TelegramChatBannedRights?) -> TelegramChannel {
return TelegramChannel(id: self.id, accessHash: self.accessHash, title: self.title, username: self.username, photo: self.photo, creationDate: self.creationDate, version: self.version, participationStatus: self.participationStatus, info: self.info, flags: self.flags, restrictionInfo: self.restrictionInfo, adminRights: self.adminRights, bannedRights: self.bannedRights, defaultBannedRights: defaultBannedRights)
return TelegramChannel(id: self.id, accessHash: self.accessHash, title: self.title, username: self.username, photo: self.photo, creationDate: self.creationDate, version: self.version, participationStatus: self.participationStatus, info: self.info, flags: self.flags, restrictionInfo: self.restrictionInfo, adminRights: self.adminRights, bannedRights: self.bannedRights, defaultBannedRights: defaultBannedRights, usernames: self.usernames)
}
public func withUpdatedFlags(_ flags: TelegramChannelFlags) -> TelegramChannel {
return TelegramChannel(id: self.id, accessHash: self.accessHash, title: self.title, username: self.username, photo: self.photo, creationDate: self.creationDate, version: self.version, participationStatus: self.participationStatus, info: self.info, flags: flags, restrictionInfo: self.restrictionInfo, adminRights: self.adminRights, bannedRights: self.bannedRights, defaultBannedRights: self.defaultBannedRights)
return TelegramChannel(id: self.id, accessHash: self.accessHash, title: self.title, username: self.username, photo: self.photo, creationDate: self.creationDate, version: self.version, participationStatus: self.participationStatus, info: self.info, flags: flags, restrictionInfo: self.restrictionInfo, adminRights: self.adminRights, bannedRights: self.bannedRights, defaultBannedRights: self.defaultBannedRights, usernames: self.usernames)
}
}

View File

@@ -59,6 +59,41 @@ public struct BotUserInfo: PostboxCoding, Equatable {
}
}
public struct TelegramPeerUsername: PostboxCoding, Equatable {
public struct Flags: OptionSet {
public var rawValue: Int32
public init() {
self.rawValue = 0
}
public init(rawValue: Int32) {
self.rawValue = rawValue
}
public static let isEditable = Flags(rawValue: (1 << 0))
public static let isActive = Flags(rawValue: (1 << 1))
}
public let flags: Flags
public let username: String
public init(flags: Flags, username: String) {
self.flags = flags
self.username = username
}
public init(decoder: PostboxDecoder) {
self.flags = Flags(rawValue: decoder.decodeInt32ForKey("f", orElse: 0))
self.username = decoder.decodeStringForKey("un", orElse: "")
}
public func encode(_ encoder: PostboxEncoder) {
encoder.encodeInt32(self.flags.rawValue, forKey: "f")
encoder.encodeString(self.username, forKey: "un")
}
}
public final class TelegramUser: Peer, Equatable {
public let id: PeerId
public let accessHash: TelegramPeerAccessHash?
@@ -71,6 +106,7 @@ public final class TelegramUser: Peer, Equatable {
public let restrictionInfo: PeerAccessRestrictionInfo?
public let flags: UserInfoFlags
public let emojiStatus: PeerEmojiStatus?
public let usernames: [TelegramPeerUsername]
public var nameOrPhone: String {
if let firstName = self.firstName {
@@ -127,7 +163,7 @@ public final class TelegramUser: Peer, Equatable {
}
}
public init(id: PeerId, accessHash: TelegramPeerAccessHash?, firstName: String?, lastName: String?, username: String?, phone: String?, photo: [TelegramMediaImageRepresentation], botInfo: BotUserInfo?, restrictionInfo: PeerAccessRestrictionInfo?, flags: UserInfoFlags, emojiStatus: PeerEmojiStatus?) {
public init(id: PeerId, accessHash: TelegramPeerAccessHash?, firstName: String?, lastName: String?, username: String?, phone: String?, photo: [TelegramMediaImageRepresentation], botInfo: BotUserInfo?, restrictionInfo: PeerAccessRestrictionInfo?, flags: UserInfoFlags, emojiStatus: PeerEmojiStatus?, usernames: [TelegramPeerUsername]) {
self.id = id
self.accessHash = accessHash
self.firstName = firstName
@@ -139,6 +175,7 @@ public final class TelegramUser: Peer, Equatable {
self.restrictionInfo = restrictionInfo
self.flags = flags
self.emojiStatus = emojiStatus
self.usernames = usernames
}
public init(decoder: PostboxDecoder) {
@@ -175,6 +212,8 @@ public final class TelegramUser: Peer, Equatable {
self.flags = UserInfoFlags(rawValue: decoder.decodeInt32ForKey("fl", orElse: 0))
self.emojiStatus = decoder.decode(PeerEmojiStatus.self, forKey: "emjs")
self.usernames = decoder.decodeObjectArrayForKey("uns")
}
public func encode(_ encoder: PostboxEncoder) {
@@ -226,6 +265,8 @@ public final class TelegramUser: Peer, Equatable {
} else {
encoder.encodeNil(forKey: "emjs")
}
encoder.encodeObjectArray(self.usernames, forKey: "uns")
}
public func isEqual(_ other: Peer) -> Bool {
@@ -275,27 +316,34 @@ public final class TelegramUser: Peer, Equatable {
if lhs.emojiStatus != rhs.emojiStatus {
return false
}
if lhs.usernames != rhs.usernames {
return false
}
return true
}
public func withUpdatedUsername(_ username:String?) -> TelegramUser {
return TelegramUser(id: self.id, accessHash: self.accessHash, firstName: self.firstName, lastName: self.lastName, username: username, phone: self.phone, photo: self.photo, botInfo: self.botInfo, restrictionInfo: self.restrictionInfo, flags: self.flags, emojiStatus: self.emojiStatus)
public func withUpdatedUsername(_ username: String?) -> TelegramUser {
return TelegramUser(id: self.id, accessHash: self.accessHash, firstName: self.firstName, lastName: self.lastName, username: username, phone: self.phone, photo: self.photo, botInfo: self.botInfo, restrictionInfo: self.restrictionInfo, flags: self.flags, emojiStatus: self.emojiStatus, usernames: self.usernames)
}
public func withUpdatedUsernames(_ usernames: [TelegramPeerUsername]) -> TelegramUser {
return TelegramUser(id: self.id, accessHash: self.accessHash, firstName: self.firstName, lastName: self.lastName, username: self.username, phone: self.phone, photo: self.photo, botInfo: self.botInfo, restrictionInfo: self.restrictionInfo, flags: self.flags, emojiStatus: self.emojiStatus, usernames: usernames)
}
public func withUpdatedNames(firstName: String?, lastName: String?) -> TelegramUser {
return TelegramUser(id: self.id, accessHash: self.accessHash, firstName: firstName, lastName: lastName, username: self.username, phone: self.phone, photo: self.photo, botInfo: self.botInfo, restrictionInfo: self.restrictionInfo, flags: self.flags, emojiStatus: self.emojiStatus)
return TelegramUser(id: self.id, accessHash: self.accessHash, firstName: firstName, lastName: lastName, username: self.username, phone: self.phone, photo: self.photo, botInfo: self.botInfo, restrictionInfo: self.restrictionInfo, flags: self.flags, emojiStatus: self.emojiStatus, usernames: self.usernames)
}
public func withUpdatedPhone(_ phone: String?) -> TelegramUser {
return TelegramUser(id: self.id, accessHash: self.accessHash, firstName: self.firstName, lastName: self.lastName, username: self.username, phone: phone, photo: self.photo, botInfo: self.botInfo, restrictionInfo: self.restrictionInfo, flags: self.flags, emojiStatus: self.emojiStatus)
return TelegramUser(id: self.id, accessHash: self.accessHash, firstName: self.firstName, lastName: self.lastName, username: self.username, phone: phone, photo: self.photo, botInfo: self.botInfo, restrictionInfo: self.restrictionInfo, flags: self.flags, emojiStatus: self.emojiStatus, usernames: self.usernames)
}
public func withUpdatedPhoto(_ representations: [TelegramMediaImageRepresentation]) -> TelegramUser {
return TelegramUser(id: self.id, accessHash: self.accessHash, firstName: self.firstName, lastName: self.lastName, username: self.username, phone: phone, photo: representations, botInfo: self.botInfo, restrictionInfo: self.restrictionInfo, flags: self.flags, emojiStatus: self.emojiStatus)
return TelegramUser(id: self.id, accessHash: self.accessHash, firstName: self.firstName, lastName: self.lastName, username: self.username, phone: phone, photo: representations, botInfo: self.botInfo, restrictionInfo: self.restrictionInfo, flags: self.flags, emojiStatus: self.emojiStatus, usernames: self.usernames)
}
public func withUpdatedEmojiStatus(_ emojiStatus: PeerEmojiStatus?) -> TelegramUser {
return TelegramUser(id: self.id, accessHash: self.accessHash, firstName: self.firstName, lastName: self.lastName, username: self.username, phone: phone, photo: self.photo, botInfo: self.botInfo, restrictionInfo: self.restrictionInfo, flags: self.flags, emojiStatus: emojiStatus)
return TelegramUser(id: self.id, accessHash: self.accessHash, firstName: self.firstName, lastName: self.lastName, username: self.username, phone: phone, photo: self.photo, botInfo: self.botInfo, restrictionInfo: self.restrictionInfo, flags: self.flags, emojiStatus: emojiStatus, usernames: self.usernames)
}
}