API update

This commit is contained in:
Ali 2020-09-17 19:57:41 +04:00
parent e72208e35f
commit d8d442caad
7 changed files with 202 additions and 160 deletions

View File

@ -111,7 +111,7 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = {
dict[497489295] = { return Api.help.AppUpdate.parse_appUpdate($0) } dict[497489295] = { return Api.help.AppUpdate.parse_appUpdate($0) }
dict[-209337866] = { return Api.LangPackDifference.parse_langPackDifference($0) } dict[-209337866] = { return Api.LangPackDifference.parse_langPackDifference($0) }
dict[84438264] = { return Api.WallPaperSettings.parse_wallPaperSettings($0) } dict[84438264] = { return Api.WallPaperSettings.parse_wallPaperSettings($0) }
dict[1152191385] = { return Api.EmojiURL.parse_EmojiURL($0) } dict[-1519029347] = { return Api.EmojiURL.parse_emojiURL($0) }
dict[1611985938] = { return Api.StatsGroupTopAdmin.parse_statsGroupTopAdmin($0) } dict[1611985938] = { return Api.StatsGroupTopAdmin.parse_statsGroupTopAdmin($0) }
dict[-791039645] = { return Api.channels.ChannelParticipant.parse_channelParticipant($0) } dict[-791039645] = { return Api.channels.ChannelParticipant.parse_channelParticipant($0) }
dict[-1736378792] = { return Api.InputCheckPasswordSRP.parse_inputCheckPasswordEmpty($0) } dict[-1736378792] = { return Api.InputCheckPasswordSRP.parse_inputCheckPasswordEmpty($0) }
@ -189,7 +189,6 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = {
dict[-364179876] = { return Api.Update.parse_updateChatParticipantAdd($0) } dict[-364179876] = { return Api.Update.parse_updateChatParticipantAdd($0) }
dict[1851755554] = { return Api.Update.parse_updateChatParticipantDelete($0) } dict[1851755554] = { return Api.Update.parse_updateChatParticipantDelete($0) }
dict[-1906403213] = { return Api.Update.parse_updateDcOptions($0) } dict[-1906403213] = { return Api.Update.parse_updateDcOptions($0) }
dict[-2131957734] = { return Api.Update.parse_updateUserBlocked($0) }
dict[-1094555409] = { return Api.Update.parse_updateNotifySettings($0) } dict[-1094555409] = { return Api.Update.parse_updateNotifySettings($0) }
dict[-337352679] = { return Api.Update.parse_updateServiceNotification($0) } dict[-337352679] = { return Api.Update.parse_updateServiceNotification($0) }
dict[-298113238] = { return Api.Update.parse_updatePrivacy($0) } dict[-298113238] = { return Api.Update.parse_updatePrivacy($0) }
@ -257,6 +256,7 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = {
dict[1708307556] = { return Api.Update.parse_updateChannelParticipant($0) } dict[1708307556] = { return Api.Update.parse_updateChannelParticipant($0) }
dict[1854571743] = { return Api.Update.parse_updateChannelMessageForwards($0) } dict[1854571743] = { return Api.Update.parse_updateChannelMessageForwards($0) }
dict[295679367] = { return Api.Update.parse_updateReadDiscussion($0) } dict[295679367] = { return Api.Update.parse_updateReadDiscussion($0) }
dict[610945826] = { return Api.Update.parse_updatePeerBlocked($0) }
dict[136574537] = { return Api.messages.VotesList.parse_votesList($0) } dict[136574537] = { return Api.messages.VotesList.parse_votesList($0) }
dict[1558266229] = { return Api.PopularContact.parse_popularContact($0) } dict[1558266229] = { return Api.PopularContact.parse_popularContact($0) }
dict[-373643672] = { return Api.FolderPeer.parse_folderPeer($0) } dict[-373643672] = { return Api.FolderPeer.parse_folderPeer($0) }
@ -268,8 +268,8 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = {
dict[-1567730343] = { return Api.MessageUserVote.parse_messageUserVote($0) } dict[-1567730343] = { return Api.MessageUserVote.parse_messageUserVote($0) }
dict[909603888] = { return Api.MessageUserVote.parse_messageUserVoteInputOption($0) } dict[909603888] = { return Api.MessageUserVote.parse_messageUserVoteInputOption($0) }
dict[244310238] = { return Api.MessageUserVote.parse_messageUserVoteMultiple($0) } dict[244310238] = { return Api.MessageUserVote.parse_messageUserVoteMultiple($0) }
dict[471043349] = { return Api.contacts.Blocked.parse_blocked($0) } dict[182326673] = { return Api.contacts.Blocked.parse_blocked($0) }
dict[-1878523231] = { return Api.contacts.Blocked.parse_blockedSlice($0) } dict[-513392236] = { return Api.contacts.Blocked.parse_blockedSlice($0) }
dict[-55902537] = { return Api.InputDialogPeer.parse_inputDialogPeer($0) } dict[-55902537] = { return Api.InputDialogPeer.parse_inputDialogPeer($0) }
dict[1684014375] = { return Api.InputDialogPeer.parse_inputDialogPeerFolder($0) } dict[1684014375] = { return Api.InputDialogPeer.parse_inputDialogPeerFolder($0) }
dict[-994444869] = { return Api.Error.parse_error($0) } dict[-994444869] = { return Api.Error.parse_error($0) }
@ -492,11 +492,11 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = {
dict[-1495959709] = { return Api.MessageReplyHeader.parse_messageReplyHeader($0) } dict[-1495959709] = { return Api.MessageReplyHeader.parse_messageReplyHeader($0) }
dict[411017418] = { return Api.SecureValue.parse_secureValue($0) } dict[411017418] = { return Api.SecureValue.parse_secureValue($0) }
dict[-316748368] = { return Api.SecureValueHash.parse_secureValueHash($0) } dict[-316748368] = { return Api.SecureValueHash.parse_secureValueHash($0) }
dict[1444661369] = { return Api.ContactBlocked.parse_contactBlocked($0) }
dict[-398136321] = { return Api.messages.SearchCounter.parse_searchCounter($0) } dict[-398136321] = { return Api.messages.SearchCounter.parse_searchCounter($0) }
dict[-2128698738] = { return Api.auth.CheckedPhone.parse_checkedPhone($0) } dict[-2128698738] = { return Api.auth.CheckedPhone.parse_checkedPhone($0) }
dict[-1188055347] = { return Api.PageListItem.parse_pageListItemText($0) } dict[-1188055347] = { return Api.PageListItem.parse_pageListItemText($0) }
dict[635466748] = { return Api.PageListItem.parse_pageListItemBlocks($0) } dict[635466748] = { return Api.PageListItem.parse_pageListItemBlocks($0) }
dict[-386039788] = { return Api.PeerBlocked.parse_peerBlocked($0) }
dict[-1182234929] = { return Api.InputUser.parse_inputUserEmpty($0) } dict[-1182234929] = { return Api.InputUser.parse_inputUserEmpty($0) }
dict[-138301121] = { return Api.InputUser.parse_inputUserSelf($0) } dict[-138301121] = { return Api.InputUser.parse_inputUserSelf($0) }
dict[-668391402] = { return Api.InputUser.parse_inputUser($0) } dict[-668391402] = { return Api.InputUser.parse_inputUser($0) }
@ -1200,14 +1200,14 @@ public struct Api {
_1.serialize(buffer, boxed) _1.serialize(buffer, boxed)
case let _1 as Api.SecureValueHash: case let _1 as Api.SecureValueHash:
_1.serialize(buffer, boxed) _1.serialize(buffer, boxed)
case let _1 as Api.ContactBlocked:
_1.serialize(buffer, boxed)
case let _1 as Api.messages.SearchCounter: case let _1 as Api.messages.SearchCounter:
_1.serialize(buffer, boxed) _1.serialize(buffer, boxed)
case let _1 as Api.auth.CheckedPhone: case let _1 as Api.auth.CheckedPhone:
_1.serialize(buffer, boxed) _1.serialize(buffer, boxed)
case let _1 as Api.PageListItem: case let _1 as Api.PageListItem:
_1.serialize(buffer, boxed) _1.serialize(buffer, boxed)
case let _1 as Api.PeerBlocked:
_1.serialize(buffer, boxed)
case let _1 as Api.InputUser: case let _1 as Api.InputUser:
_1.serialize(buffer, boxed) _1.serialize(buffer, boxed)
case let _1 as Api.Page: case let _1 as Api.Page:

View File

@ -5004,13 +5004,13 @@ public extension Api {
} }
public enum EmojiURL: TypeConstructorDescription { public enum EmojiURL: TypeConstructorDescription {
case EmojiURL(url: String) case emojiURL(url: String)
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
switch self { switch self {
case .EmojiURL(let url): case .emojiURL(let url):
if boxed { if boxed {
buffer.appendInt32(1152191385) buffer.appendInt32(-1519029347)
} }
serializeString(url, buffer: buffer, boxed: false) serializeString(url, buffer: buffer, boxed: false)
break break
@ -5019,17 +5019,17 @@ public extension Api {
public func descriptionFields() -> (String, [(String, Any)]) { public func descriptionFields() -> (String, [(String, Any)]) {
switch self { switch self {
case .EmojiURL(let url): case .emojiURL(let url):
return ("EmojiURL", [("url", url)]) return ("emojiURL", [("url", url)])
} }
} }
public static func parse_EmojiURL(_ reader: BufferReader) -> EmojiURL? { public static func parse_emojiURL(_ reader: BufferReader) -> EmojiURL? {
var _1: String? var _1: String?
_1 = parseString(reader) _1 = parseString(reader)
let _c1 = _1 != nil let _c1 = _1 != nil
if _c1 { if _c1 {
return Api.EmojiURL.EmojiURL(url: _1!) return Api.EmojiURL.emojiURL(url: _1!)
} }
else { else {
return nil return nil
@ -6104,7 +6104,6 @@ public extension Api {
case updateChatParticipantAdd(chatId: Int32, userId: Int32, inviterId: Int32, date: Int32, version: Int32) case updateChatParticipantAdd(chatId: Int32, userId: Int32, inviterId: Int32, date: Int32, version: Int32)
case updateChatParticipantDelete(chatId: Int32, userId: Int32, version: Int32) case updateChatParticipantDelete(chatId: Int32, userId: Int32, version: Int32)
case updateDcOptions(dcOptions: [Api.DcOption]) case updateDcOptions(dcOptions: [Api.DcOption])
case updateUserBlocked(userId: Int32, blocked: Api.Bool)
case updateNotifySettings(peer: Api.NotifyPeer, notifySettings: Api.PeerNotifySettings) case updateNotifySettings(peer: Api.NotifyPeer, notifySettings: Api.PeerNotifySettings)
case updateServiceNotification(flags: Int32, inboxDate: Int32?, type: String, message: String, media: Api.MessageMedia, entities: [Api.MessageEntity]) case updateServiceNotification(flags: Int32, inboxDate: Int32?, type: String, message: String, media: Api.MessageMedia, entities: [Api.MessageEntity])
case updatePrivacy(key: Api.PrivacyKey, rules: [Api.PrivacyRule]) case updatePrivacy(key: Api.PrivacyKey, rules: [Api.PrivacyRule])
@ -6172,6 +6171,7 @@ public extension Api {
case updateChannelParticipant(flags: Int32, channelId: Int32, date: Int32, userId: Int32, prevParticipant: Api.ChannelParticipant?, newParticipant: Api.ChannelParticipant?, qts: Int32) case updateChannelParticipant(flags: Int32, channelId: Int32, date: Int32, userId: Int32, prevParticipant: Api.ChannelParticipant?, newParticipant: Api.ChannelParticipant?, qts: Int32)
case updateChannelMessageForwards(channelId: Int32, id: Int32, forwards: Int32) case updateChannelMessageForwards(channelId: Int32, id: Int32, forwards: Int32)
case updateReadDiscussion(peer: Api.Peer, msgId: Int32, readMaxId: Int32) case updateReadDiscussion(peer: Api.Peer, msgId: Int32, readMaxId: Int32)
case updatePeerBlocked(peerId: Api.Peer, blocked: Api.Bool)
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
switch self { switch self {
@ -6304,13 +6304,6 @@ public extension Api {
item.serialize(buffer, true) item.serialize(buffer, true)
} }
break break
case .updateUserBlocked(let userId, let blocked):
if boxed {
buffer.appendInt32(-2131957734)
}
serializeInt32(userId, buffer: buffer, boxed: false)
blocked.serialize(buffer, true)
break
case .updateNotifySettings(let peer, let notifySettings): case .updateNotifySettings(let peer, let notifySettings):
if boxed { if boxed {
buffer.appendInt32(-1094555409) buffer.appendInt32(-1094555409)
@ -6880,6 +6873,13 @@ public extension Api {
serializeInt32(msgId, buffer: buffer, boxed: false) serializeInt32(msgId, buffer: buffer, boxed: false)
serializeInt32(readMaxId, buffer: buffer, boxed: false) serializeInt32(readMaxId, buffer: buffer, boxed: false)
break break
case .updatePeerBlocked(let peerId, let blocked):
if boxed {
buffer.appendInt32(610945826)
}
peerId.serialize(buffer, true)
blocked.serialize(buffer, true)
break
} }
} }
@ -6917,8 +6917,6 @@ public extension Api {
return ("updateChatParticipantDelete", [("chatId", chatId), ("userId", userId), ("version", version)]) return ("updateChatParticipantDelete", [("chatId", chatId), ("userId", userId), ("version", version)])
case .updateDcOptions(let dcOptions): case .updateDcOptions(let dcOptions):
return ("updateDcOptions", [("dcOptions", dcOptions)]) return ("updateDcOptions", [("dcOptions", dcOptions)])
case .updateUserBlocked(let userId, let blocked):
return ("updateUserBlocked", [("userId", userId), ("blocked", blocked)])
case .updateNotifySettings(let peer, let notifySettings): case .updateNotifySettings(let peer, let notifySettings):
return ("updateNotifySettings", [("peer", peer), ("notifySettings", notifySettings)]) return ("updateNotifySettings", [("peer", peer), ("notifySettings", notifySettings)])
case .updateServiceNotification(let flags, let inboxDate, let type, let message, let media, let entities): case .updateServiceNotification(let flags, let inboxDate, let type, let message, let media, let entities):
@ -7053,6 +7051,8 @@ public extension Api {
return ("updateChannelMessageForwards", [("channelId", channelId), ("id", id), ("forwards", forwards)]) return ("updateChannelMessageForwards", [("channelId", channelId), ("id", id), ("forwards", forwards)])
case .updateReadDiscussion(let peer, let msgId, let readMaxId): case .updateReadDiscussion(let peer, let msgId, let readMaxId):
return ("updateReadDiscussion", [("peer", peer), ("msgId", msgId), ("readMaxId", readMaxId)]) return ("updateReadDiscussion", [("peer", peer), ("msgId", msgId), ("readMaxId", readMaxId)])
case .updatePeerBlocked(let peerId, let blocked):
return ("updatePeerBlocked", [("peerId", peerId), ("blocked", blocked)])
} }
} }
@ -7329,22 +7329,6 @@ public extension Api {
return nil return nil
} }
} }
public static func parse_updateUserBlocked(_ reader: BufferReader) -> Update? {
var _1: Int32?
_1 = reader.readInt32()
var _2: Api.Bool?
if let signature = reader.readInt32() {
_2 = Api.parse(reader, signature: signature) as? Api.Bool
}
let _c1 = _1 != nil
let _c2 = _2 != nil
if _c1 && _c2 {
return Api.Update.updateUserBlocked(userId: _1!, blocked: _2!)
}
else {
return nil
}
}
public static func parse_updateNotifySettings(_ reader: BufferReader) -> Update? { public static func parse_updateNotifySettings(_ reader: BufferReader) -> Update? {
var _1: Api.NotifyPeer? var _1: Api.NotifyPeer?
if let signature = reader.readInt32() { if let signature = reader.readInt32() {
@ -8467,6 +8451,24 @@ public extension Api {
return nil return nil
} }
} }
public static func parse_updatePeerBlocked(_ reader: BufferReader) -> Update? {
var _1: Api.Peer?
if let signature = reader.readInt32() {
_1 = Api.parse(reader, signature: signature) as? Api.Peer
}
var _2: Api.Bool?
if let signature = reader.readInt32() {
_2 = Api.parse(reader, signature: signature) as? Api.Bool
}
let _c1 = _1 != nil
let _c2 = _2 != nil
if _c1 && _c2 {
return Api.Update.updatePeerBlocked(peerId: _1!, blocked: _2!)
}
else {
return nil
}
}
} }
public enum PopularContact: TypeConstructorDescription { public enum PopularContact: TypeConstructorDescription {
@ -14302,44 +14304,6 @@ public extension Api {
} }
} }
}
public enum ContactBlocked: TypeConstructorDescription {
case contactBlocked(userId: Int32, date: Int32)
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
switch self {
case .contactBlocked(let userId, let date):
if boxed {
buffer.appendInt32(1444661369)
}
serializeInt32(userId, buffer: buffer, boxed: false)
serializeInt32(date, buffer: buffer, boxed: false)
break
}
}
public func descriptionFields() -> (String, [(String, Any)]) {
switch self {
case .contactBlocked(let userId, let date):
return ("contactBlocked", [("userId", userId), ("date", date)])
}
}
public static func parse_contactBlocked(_ reader: BufferReader) -> ContactBlocked? {
var _1: Int32?
_1 = reader.readInt32()
var _2: Int32?
_2 = reader.readInt32()
let _c1 = _1 != nil
let _c2 = _2 != nil
if _c1 && _c2 {
return Api.ContactBlocked.contactBlocked(userId: _1!, date: _2!)
}
else {
return nil
}
}
} }
public enum PageListItem: TypeConstructorDescription { public enum PageListItem: TypeConstructorDescription {
case pageListItemText(text: Api.RichText) case pageListItemText(text: Api.RichText)
@ -14402,6 +14366,46 @@ public extension Api {
} }
} }
}
public enum PeerBlocked: TypeConstructorDescription {
case peerBlocked(peerId: Api.Peer, date: Int32)
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
switch self {
case .peerBlocked(let peerId, let date):
if boxed {
buffer.appendInt32(-386039788)
}
peerId.serialize(buffer, true)
serializeInt32(date, buffer: buffer, boxed: false)
break
}
}
public func descriptionFields() -> (String, [(String, Any)]) {
switch self {
case .peerBlocked(let peerId, let date):
return ("peerBlocked", [("peerId", peerId), ("date", date)])
}
}
public static func parse_peerBlocked(_ reader: BufferReader) -> PeerBlocked? {
var _1: Api.Peer?
if let signature = reader.readInt32() {
_1 = Api.parse(reader, signature: signature) as? Api.Peer
}
var _2: Int32?
_2 = reader.readInt32()
let _c1 = _1 != nil
let _c2 = _2 != nil
if _c1 && _c2 {
return Api.PeerBlocked.peerBlocked(peerId: _1!, date: _2!)
}
else {
return nil
}
}
} }
public enum InputUser: TypeConstructorDescription { public enum InputUser: TypeConstructorDescription {
case inputUserEmpty case inputUserEmpty

View File

@ -1315,14 +1315,14 @@ public struct auth {
public extension Api { public extension Api {
public struct contacts { public struct contacts {
public enum Blocked: TypeConstructorDescription { public enum Blocked: TypeConstructorDescription {
case blocked(blocked: [Api.ContactBlocked], users: [Api.User]) case blocked(blocked: [Api.PeerBlocked], chats: [Api.Chat], users: [Api.User])
case blockedSlice(count: Int32, blocked: [Api.ContactBlocked], users: [Api.User]) case blockedSlice(count: Int32, blocked: [Api.PeerBlocked], chats: [Api.Chat], users: [Api.User])
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
switch self { switch self {
case .blocked(let blocked, let users): case .blocked(let blocked, let chats, let users):
if boxed { if boxed {
buffer.appendInt32(471043349) buffer.appendInt32(182326673)
} }
buffer.appendInt32(481674261) buffer.appendInt32(481674261)
buffer.appendInt32(Int32(blocked.count)) buffer.appendInt32(Int32(blocked.count))
@ -1330,14 +1330,19 @@ public struct contacts {
item.serialize(buffer, true) item.serialize(buffer, true)
} }
buffer.appendInt32(481674261) buffer.appendInt32(481674261)
buffer.appendInt32(Int32(chats.count))
for item in chats {
item.serialize(buffer, true)
}
buffer.appendInt32(481674261)
buffer.appendInt32(Int32(users.count)) buffer.appendInt32(Int32(users.count))
for item in users { for item in users {
item.serialize(buffer, true) item.serialize(buffer, true)
} }
break break
case .blockedSlice(let count, let blocked, let users): case .blockedSlice(let count, let blocked, let chats, let users):
if boxed { if boxed {
buffer.appendInt32(-1878523231) buffer.appendInt32(-513392236)
} }
serializeInt32(count, buffer: buffer, boxed: false) serializeInt32(count, buffer: buffer, boxed: false)
buffer.appendInt32(481674261) buffer.appendInt32(481674261)
@ -1346,6 +1351,11 @@ public struct contacts {
item.serialize(buffer, true) item.serialize(buffer, true)
} }
buffer.appendInt32(481674261) buffer.appendInt32(481674261)
buffer.appendInt32(Int32(chats.count))
for item in chats {
item.serialize(buffer, true)
}
buffer.appendInt32(481674261)
buffer.appendInt32(Int32(users.count)) buffer.appendInt32(Int32(users.count))
for item in users { for item in users {
item.serialize(buffer, true) item.serialize(buffer, true)
@ -1356,37 +1366,21 @@ public struct contacts {
public func descriptionFields() -> (String, [(String, Any)]) { public func descriptionFields() -> (String, [(String, Any)]) {
switch self { switch self {
case .blocked(let blocked, let users): case .blocked(let blocked, let chats, let users):
return ("blocked", [("blocked", blocked), ("users", users)]) return ("blocked", [("blocked", blocked), ("chats", chats), ("users", users)])
case .blockedSlice(let count, let blocked, let users): case .blockedSlice(let count, let blocked, let chats, let users):
return ("blockedSlice", [("count", count), ("blocked", blocked), ("users", users)]) return ("blockedSlice", [("count", count), ("blocked", blocked), ("chats", chats), ("users", users)])
} }
} }
public static func parse_blocked(_ reader: BufferReader) -> Blocked? { public static func parse_blocked(_ reader: BufferReader) -> Blocked? {
var _1: [Api.ContactBlocked]? var _1: [Api.PeerBlocked]?
if let _ = reader.readInt32() { if let _ = reader.readInt32() {
_1 = Api.parseVector(reader, elementSignature: 0, elementType: Api.ContactBlocked.self) _1 = Api.parseVector(reader, elementSignature: 0, elementType: Api.PeerBlocked.self)
} }
var _2: [Api.User]? var _2: [Api.Chat]?
if let _ = reader.readInt32() { if let _ = reader.readInt32() {
_2 = Api.parseVector(reader, elementSignature: 0, elementType: Api.User.self) _2 = Api.parseVector(reader, elementSignature: 0, elementType: Api.Chat.self)
}
let _c1 = _1 != nil
let _c2 = _2 != nil
if _c1 && _c2 {
return Api.contacts.Blocked.blocked(blocked: _1!, users: _2!)
}
else {
return nil
}
}
public static func parse_blockedSlice(_ reader: BufferReader) -> Blocked? {
var _1: Int32?
_1 = reader.readInt32()
var _2: [Api.ContactBlocked]?
if let _ = reader.readInt32() {
_2 = Api.parseVector(reader, elementSignature: 0, elementType: Api.ContactBlocked.self)
} }
var _3: [Api.User]? var _3: [Api.User]?
if let _ = reader.readInt32() { if let _ = reader.readInt32() {
@ -1396,7 +1390,33 @@ public struct contacts {
let _c2 = _2 != nil let _c2 = _2 != nil
let _c3 = _3 != nil let _c3 = _3 != nil
if _c1 && _c2 && _c3 { if _c1 && _c2 && _c3 {
return Api.contacts.Blocked.blockedSlice(count: _1!, blocked: _2!, users: _3!) return Api.contacts.Blocked.blocked(blocked: _1!, chats: _2!, users: _3!)
}
else {
return nil
}
}
public static func parse_blockedSlice(_ reader: BufferReader) -> Blocked? {
var _1: Int32?
_1 = reader.readInt32()
var _2: [Api.PeerBlocked]?
if let _ = reader.readInt32() {
_2 = Api.parseVector(reader, elementSignature: 0, elementType: Api.PeerBlocked.self)
}
var _3: [Api.Chat]?
if let _ = reader.readInt32() {
_3 = Api.parseVector(reader, elementSignature: 0, elementType: Api.Chat.self)
}
var _4: [Api.User]?
if let _ = reader.readInt32() {
_4 = Api.parseVector(reader, elementSignature: 0, elementType: Api.User.self)
}
let _c1 = _1 != nil
let _c2 = _2 != nil
let _c3 = _3 != nil
let _c4 = _4 != nil
if _c1 && _c2 && _c3 && _c4 {
return Api.contacts.Blocked.blockedSlice(count: _1!, blocked: _2!, chats: _3!, users: _4!)
} }
else { else {
return nil return nil

View File

@ -4957,34 +4957,6 @@ public extension Api {
}) })
} }
public static func block(id: Api.InputUser) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.Bool>) {
let buffer = Buffer()
buffer.appendInt32(858475004)
id.serialize(buffer, true)
return (FunctionDescription(name: "contacts.block", parameters: [("id", id)]), buffer, DeserializeFunctionResponse { (buffer: Buffer) -> Api.Bool? in
let reader = BufferReader(buffer)
var result: Api.Bool?
if let signature = reader.readInt32() {
result = Api.parse(reader, signature: signature) as? Api.Bool
}
return result
})
}
public static func unblock(id: Api.InputUser) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.Bool>) {
let buffer = Buffer()
buffer.appendInt32(-448724803)
id.serialize(buffer, true)
return (FunctionDescription(name: "contacts.unblock", parameters: [("id", id)]), buffer, DeserializeFunctionResponse { (buffer: Buffer) -> Api.Bool? in
let reader = BufferReader(buffer)
var result: Api.Bool?
if let signature = reader.readInt32() {
result = Api.parse(reader, signature: signature) as? Api.Bool
}
return result
})
}
public static func getBlocked(offset: Int32, limit: Int32) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.contacts.Blocked>) { public static func getBlocked(offset: Int32, limit: Int32) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.contacts.Blocked>) {
let buffer = Buffer() let buffer = Buffer()
buffer.appendInt32(-176409329) buffer.appendInt32(-176409329)
@ -5232,6 +5204,34 @@ public extension Api {
return result return result
}) })
} }
public static func block(id: Api.InputPeer) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.Bool>) {
let buffer = Buffer()
buffer.appendInt32(1758204945)
id.serialize(buffer, true)
return (FunctionDescription(name: "contacts.block", parameters: [("id", id)]), buffer, DeserializeFunctionResponse { (buffer: Buffer) -> Api.Bool? in
let reader = BufferReader(buffer)
var result: Api.Bool?
if let signature = reader.readInt32() {
result = Api.parse(reader, signature: signature) as? Api.Bool
}
return result
})
}
public static func unblock(id: Api.InputPeer) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.Bool>) {
let buffer = Buffer()
buffer.appendInt32(-1096393392)
id.serialize(buffer, true)
return (FunctionDescription(name: "contacts.unblock", parameters: [("id", id)]), buffer, DeserializeFunctionResponse { (buffer: Buffer) -> Api.Bool? in
let reader = BufferReader(buffer)
var result: Api.Bool?
if let signature = reader.readInt32() {
result = Api.parse(reader, signature: signature) as? Api.Bool
}
return result
})
}
} }
public struct help { public struct help {
public static func getConfig() -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.Config>) { public static func getConfig() -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.Config>) {

View File

@ -1129,8 +1129,8 @@ private func finalStateWithUpdatesAndServerTime(postbox: Postbox, network: Netwo
} }
return previous.withUpdatedPinnedMessageId(id == 0 ? nil : MessageId(peerId: groupPeerId, namespace: Namespaces.Message.Cloud, id: id)) return previous.withUpdatedPinnedMessageId(id == 0 ? nil : MessageId(peerId: groupPeerId, namespace: Namespaces.Message.Cloud, id: id))
}) })
case let .updateUserBlocked(userId, blocked): case let .updatePeerBlocked(peerId, blocked):
let userPeerId = PeerId(namespace: Namespaces.Peer.CloudUser, id: userId) let userPeerId = peerId.peerId
updatedState.updateCachedPeerData(userPeerId, { current in updatedState.updateCachedPeerData(userPeerId, { current in
let previous: CachedUserData let previous: CachedUserData
if let current = current as? CachedUserData { if let current = current as? CachedUserData {

View File

@ -13,11 +13,19 @@ public func requestBlockedPeers(account: Account) -> Signal<[Peer], NoError> {
return account.postbox.transaction { transaction -> [Peer] in return account.postbox.transaction { transaction -> [Peer] in
var peers: [Peer] = [] var peers: [Peer] = []
let apiUsers: [Api.User] let apiUsers: [Api.User]
let apiChats: [Api.Chat]
switch result { switch result {
case let .blocked(_, users): case let .blocked(_, chats, users):
apiUsers = users apiUsers = users
case let .blockedSlice(_, _, users): apiChats = chats
case let .blockedSlice(_, _, chats, users):
apiUsers = users apiUsers = users
apiChats = chats
}
for chat in apiChats {
if let groupOrChannel = parseTelegramGroupOrChannel(chat: chat) {
peers.append(groupOrChannel)
}
} }
for user in apiUsers { for user in apiUsers {
let parsed = TelegramUser(user: user) let parsed = TelegramUser(user: user)
@ -35,12 +43,12 @@ public func requestBlockedPeers(account: Account) -> Signal<[Peer], NoError> {
public func requestUpdatePeerIsBlocked(account: Account, peerId: PeerId, isBlocked: Bool) -> Signal<Void, NoError> { public func requestUpdatePeerIsBlocked(account: Account, peerId: PeerId, isBlocked: Bool) -> Signal<Void, NoError> {
return account.postbox.transaction { transaction -> Signal<Void, NoError> in return account.postbox.transaction { transaction -> Signal<Void, NoError> in
if let peer = transaction.getPeer(peerId), let inputUser = apiInputUser(peer) { if let peer = transaction.getPeer(peerId), let inputPeer = apiInputPeer(peer) {
let signal: Signal<Api.Bool, MTRpcError> let signal: Signal<Api.Bool, MTRpcError>
if isBlocked { if isBlocked {
signal = account.network.request(Api.functions.contacts.block(id: inputUser)) signal = account.network.request(Api.functions.contacts.block(id: inputPeer))
} else { } else {
signal = account.network.request(Api.functions.contacts.unblock(id: inputUser)) signal = account.network.request(Api.functions.contacts.unblock(id: inputPeer))
} }
return signal return signal
|> map(Optional.init) |> map(Optional.init)

View File

@ -64,8 +64,13 @@ public final class BlockedPeersContext {
|> mapToSignal { result -> Signal<(peers: [RenderedPeer], canLoadMore: Bool, totalCount: Int?), NoError> in |> mapToSignal { result -> Signal<(peers: [RenderedPeer], canLoadMore: Bool, totalCount: Int?), NoError> in
return postbox.transaction { transaction -> (peers: [RenderedPeer], canLoadMore: Bool, totalCount: Int?) in return postbox.transaction { transaction -> (peers: [RenderedPeer], canLoadMore: Bool, totalCount: Int?) in
switch result { switch result {
case let .blocked(blocked, users): case let .blocked(blocked, chats, users):
var peers: [Peer] = [] var peers: [Peer] = []
for chat in chats {
if let groupOrChannel = parseTelegramGroupOrChannel(chat: chat) {
peers.append(groupOrChannel)
}
}
for user in users { for user in users {
peers.append(TelegramUser(user: user)) peers.append(TelegramUser(user: user))
} }
@ -74,16 +79,21 @@ public final class BlockedPeersContext {
var renderedPeers: [RenderedPeer] = [] var renderedPeers: [RenderedPeer] = []
for blockedPeer in blocked { for blockedPeer in blocked {
switch blockedPeer { switch blockedPeer {
case let .contactBlocked(userId, _): case let .peerBlocked(peerId, _):
if let peer = transaction.getPeer(PeerId(namespace: Namespaces.Peer.CloudUser, id: userId)) { if let peer = transaction.getPeer(peerId.peerId) {
renderedPeers.append(RenderedPeer(peer: peer)) renderedPeers.append(RenderedPeer(peer: peer))
} }
} }
} }
return (renderedPeers, false, nil) return (renderedPeers, false, nil)
case let .blockedSlice(count, blocked, users): case let .blockedSlice(count, blocked, chats, users):
var peers: [Peer] = [] var peers: [Peer] = []
for chat in chats {
if let groupOrChannel = parseTelegramGroupOrChannel(chat: chat) {
peers.append(groupOrChannel)
}
}
for user in users { for user in users {
peers.append(TelegramUser(user: user)) peers.append(TelegramUser(user: user))
} }
@ -92,8 +102,8 @@ public final class BlockedPeersContext {
var renderedPeers: [RenderedPeer] = [] var renderedPeers: [RenderedPeer] = []
for blockedPeer in blocked { for blockedPeer in blocked {
switch blockedPeer { switch blockedPeer {
case let .contactBlocked(userId, _): case let .peerBlocked(peerId, _):
if let peer = transaction.getPeer(PeerId(namespace: Namespaces.Peer.CloudUser, id: userId)) { if let peer = transaction.getPeer(peerId.peerId) {
renderedPeers.append(RenderedPeer(peer: peer)) renderedPeers.append(RenderedPeer(peer: peer))
} }
} }
@ -135,15 +145,15 @@ public final class BlockedPeersContext {
let postbox = self.account.postbox let postbox = self.account.postbox
let network = self.account.network let network = self.account.network
return self.account.postbox.transaction { transaction -> Api.InputUser? in return self.account.postbox.transaction { transaction -> Api.InputPeer? in
return transaction.getPeer(peerId).flatMap(apiInputUser) return transaction.getPeer(peerId).flatMap(apiInputPeer)
} }
|> castError(BlockedPeersContextAddError.self) |> castError(BlockedPeersContextAddError.self)
|> mapToSignal { [weak self] inputUser -> Signal<Never, BlockedPeersContextAddError> in |> mapToSignal { [weak self] inputPeer -> Signal<Never, BlockedPeersContextAddError> in
guard let inputUser = inputUser else { guard let inputPeer = inputPeer else {
return .fail(.generic) return .fail(.generic)
} }
return network.request(Api.functions.contacts.block(id: inputUser)) return network.request(Api.functions.contacts.block(id: inputPeer))
|> mapError { _ -> BlockedPeersContextAddError in |> mapError { _ -> BlockedPeersContextAddError in
return .generic return .generic
} }
@ -192,15 +202,15 @@ public final class BlockedPeersContext {
assert(Queue.mainQueue().isCurrent()) assert(Queue.mainQueue().isCurrent())
let postbox = self.account.postbox let postbox = self.account.postbox
let network = self.account.network let network = self.account.network
return self.account.postbox.transaction { transaction -> Api.InputUser? in return self.account.postbox.transaction { transaction -> Api.InputPeer? in
return transaction.getPeer(peerId).flatMap(apiInputUser) return transaction.getPeer(peerId).flatMap(apiInputPeer)
} }
|> castError(BlockedPeersContextRemoveError.self) |> castError(BlockedPeersContextRemoveError.self)
|> mapToSignal { [weak self] inputUser -> Signal<Never, BlockedPeersContextRemoveError> in |> mapToSignal { [weak self] inputPeer -> Signal<Never, BlockedPeersContextRemoveError> in
guard let inputUser = inputUser else { guard let inputPeer = inputPeer else {
return .fail(.generic) return .fail(.generic)
} }
return network.request(Api.functions.contacts.unblock(id: inputUser)) return network.request(Api.functions.contacts.unblock(id: inputPeer))
|> mapError { _ -> BlockedPeersContextRemoveError in |> mapError { _ -> BlockedPeersContextRemoveError in
return .generic return .generic
} }