Provide a temporary legacy messagesSlice constructor

This commit is contained in:
Peter 2019-05-18 23:51:38 +02:00
parent 4cc7101f24
commit 2df4d568b0
13 changed files with 120 additions and 5 deletions

View File

@ -1369,6 +1369,8 @@ private func resolveAssociatedMessages(network: Network, state: AccountMutableSt
return (messages, chats, users)
case let .messagesSlice(_, _, _, messages, chats, users):
return (messages, chats, users)
case let .messagesSliceLegacy(_, _, messages, chats, users):
return (messages, chats, users)
case let .channelMessages(_, _, _, messages, chats, users):
return (messages, chats, users)
case .messagesNotModified:

View File

@ -92,6 +92,10 @@ private func fetchWebpage(account: Account, messageId: MessageId) -> Signal<Void
messages = apiMessages
chats = apiChats
users = apiUsers
case let .messagesSliceLegacy(_, _, messages: apiMessages, chats: apiChats, users: apiUsers):
messages = apiMessages
chats = apiChats
users = apiUsers
case let .channelMessages(_, _, _, apiMessages, apiChats, apiUsers):
messages = apiMessages
chats = apiChats
@ -612,6 +616,8 @@ public final class AccountViewTracker {
return (messages, chats, users)
case let .messagesSlice(_, _, _, messages, chats, users):
return (messages, chats, users)
case let .messagesSliceLegacy(_, _, messages, chats, users):
return (messages, chats, users)
case let .channelMessages(_, _, _, messages, chats, users):
return (messages, chats, users)
case .messagesNotModified:

View File

@ -476,6 +476,7 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = {
dict[1951620897] = { return Api.messages.Messages.parse_messagesNotModified($0) }
dict[-1725551049] = { return Api.messages.Messages.parse_channelMessages($0) }
dict[-923939298] = { return Api.messages.Messages.parse_messagesSlice($0) }
dict[-1497072982] = { return Api.messages.Messages.parse_messagesSliceLegacy($0) }
dict[-1022713000] = { return Api.Invoice.parse_invoice($0) }
dict[-2122045747] = { return Api.PeerSettings.parse_peerSettings($0) }
dict[955951967] = { return Api.auth.SentCode.parse_sentCode($0) }
@ -2227,6 +2228,7 @@ struct messages {
case messagesNotModified(count: Int32)
case channelMessages(flags: Int32, pts: Int32, count: Int32, messages: [Api.Message], chats: [Api.Chat], users: [Api.User])
case messagesSlice(flags: Int32, count: Int32, nextRate: Int32?, messages: [Api.Message], chats: [Api.Chat], users: [Api.User])
case messagesSliceLegacy(flags: Int32, count: Int32, messages: [Api.Message], chats: [Api.Chat], users: [Api.User])
func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
switch self {
@ -2302,6 +2304,28 @@ struct messages {
item.serialize(buffer, true)
}
break
case .messagesSliceLegacy(let flags, let count, let messages, let chats, let users):
if boxed {
buffer.appendInt32(-1497072982)
}
serializeInt32(flags, buffer: buffer, boxed: false)
serializeInt32(count, buffer: buffer, boxed: false)
buffer.appendInt32(481674261)
buffer.appendInt32(Int32(messages.count))
for item in messages {
item.serialize(buffer, true)
}
buffer.appendInt32(481674261)
buffer.appendInt32(Int32(chats.count))
for item in chats {
item.serialize(buffer, true)
}
buffer.appendInt32(481674261)
buffer.appendInt32(Int32(users.count))
for item in users {
item.serialize(buffer, true)
}
break
}
}
@ -2315,6 +2339,8 @@ struct messages {
return ("channelMessages", [("flags", flags), ("pts", pts), ("count", count), ("messages", messages), ("chats", chats), ("users", users)])
case .messagesSlice(let flags, let count, let nextRate, let messages, let chats, let users):
return ("messagesSlice", [("flags", flags), ("count", count), ("nextRate", nextRate), ("messages", messages), ("chats", chats), ("users", users)])
case .messagesSliceLegacy(let flags, let count, let messages, let chats, let users):
return ("messagesSliceLegacy", [("flags", flags), ("count", count), ("messages", messages), ("chats", chats), ("users", users)])
}
}
@ -2416,6 +2442,35 @@ struct messages {
return nil
}
}
static func parse_messagesSliceLegacy(_ reader: BufferReader) -> Messages? {
var _1: Int32?
_1 = reader.readInt32()
var _2: Int32?
_2 = reader.readInt32()
var _3: [Api.Message]?
if let _ = reader.readInt32() {
_3 = Api.parseVector(reader, elementSignature: 0, elementType: Api.Message.self)
}
var _4: [Api.Chat]?
if let _ = reader.readInt32() {
_4 = Api.parseVector(reader, elementSignature: 0, elementType: Api.Chat.self)
}
var _5: [Api.User]?
if let _ = reader.readInt32() {
_5 = 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
let _c5 = _5 != nil
if _c1 && _c2 && _c3 && _c4 && _c5 {
return Api.messages.Messages.messagesSliceLegacy(flags: _1!, count: _2!, messages: _3!, chats: _4!, users: _5!)
}
else {
return nil
}
}
}
enum PeerDialogs: TypeConstructorDescription {

View File

@ -346,6 +346,10 @@ private func validateBatch(postbox: Postbox, network: Network, accountPeerId: Pe
messages = apiMessages
chats = apiChats
users = apiUsers
case let .messagesSliceLegacy(_, _, messages: apiMessages, chats: apiChats, users: apiUsers):
messages = apiMessages
chats = apiChats
users = apiUsers
case let .channelMessages(_, pts, _, apiMessages, apiChats, apiUsers):
messages = apiMessages
chats = apiChats
@ -418,6 +422,8 @@ private func validateBatch(postbox: Postbox, network: Network, accountPeerId: Pe
apiMessages = messages
case let .messagesSlice(_, _, _, messages, _, _):
apiMessages = messages
case let .messagesSliceLegacy(_, _, messages, _, _):
apiMessages = messages
case .messagesNotModified:
return Set()
}

View File

@ -78,6 +78,8 @@ func withResolvedAssociatedMessages(postbox: Postbox, source: FetchMessageHistor
return (messages, chats, users)
case let .messagesSlice(_, _, _, messages, chats, users):
return (messages, chats, users)
case let .messagesSliceLegacy(_, _, messages, chats, users):
return (messages, chats, users)
case let .channelMessages(_, _, _, messages, chats, users):
return (messages, chats, users)
case .messagesNotModified:
@ -257,6 +259,10 @@ func fetchMessageHistoryHole(accountPeerId: PeerId, source: FetchMessageHistoryH
messages = apiMessages
chats = apiChats
users = apiUsers
case let .messagesSliceLegacy(_, _, messages: apiMessages, chats: apiChats, users: apiUsers):
messages = apiMessages
chats = apiChats
users = apiUsers
case let .channelMessages(_, pts, _, apiMessages, apiChats, apiUsers):
messages = apiMessages
chats = apiChats
@ -445,6 +451,10 @@ func fetchCallListHole(network: Network, postbox: Postbox, accountPeerId: PeerId
messages = apiMessages
chats = apiChats
users = apiUsers
case let .messagesSliceLegacy(_, _, messages: apiMessages, chats: apiChats, users: apiUsers):
messages = apiMessages
chats = apiChats
users = apiUsers
case let .channelMessages(_, _, _, apiMessages, apiChats, apiUsers):
messages = apiMessages
chats = apiChats

View File

@ -63,6 +63,8 @@ public func getMessagesLoadIfNecessary(_ messageIds: [MessageId], postbox: Postb
return (messages, chats, users)
case let .messagesSlice(_, _, _, messages, chats, users):
return (messages, chats, users)
case let .messagesSliceLegacy(_, _, messages, chats, users):
return (messages, chats, users)
case let .channelMessages(_, _, _, messages, chats, users):
return (messages, chats, users)
case .messagesNotModified:

View File

@ -41,6 +41,8 @@ public func loadedPeerFromMessage(account: Account, peerId: PeerId, messageId: M
apiUsers = users
case let .messagesSlice(_, _, _, _, _, users):
apiUsers = users
case let .messagesSliceLegacy(_, _, _, _, users):
apiUsers = users
case let .channelMessages(_, _, _, _, _, users):
apiUsers = users
case .messagesNotModified:

View File

@ -138,6 +138,8 @@ private func synchronizeMarkAllUnseen(transaction: Transaction, postbox: Postbox
return .single([])
case let .messagesSlice(messagesSlice):
return .single(messagesSlice.messages.compactMap({ $0.id }))
case let .messagesSliceLegacy(messagesSlice):
return .single(messagesSlice.messages.compactMap({ $0.id }))
}
}
|> mapToSignal { ids -> Signal<Int32?, MTRpcError> in

View File

@ -83,7 +83,11 @@ public func requestPeerPhotos(account:Account, peerId: PeerId) -> Signal<[Telegr
messages = apiMessages
chats = apiChats
users = apiUsers
case let.messagesSlice(_, _, _, apiMessages, apiChats, apiUsers):
case let .messagesSlice(_, _, _, apiMessages, apiChats, apiUsers):
messages = apiMessages
chats = apiChats
users = apiUsers
case let .messagesSliceLegacy(_, _, apiMessages, apiChats, apiUsers):
messages = apiMessages
chats = apiChats
users = apiUsers

View File

@ -84,6 +84,12 @@ private func mergedState(transaction: Transaction, state: SearchMessagesPeerStat
users = apiUsers
totalCount = count
nextRate = apiNextRate
case let .messagesSliceLegacy(_, count, apiMessages, apiChats, apiUsers):
messages = apiMessages
chats = apiChats
users = apiUsers
totalCount = count
nextRate = nil
case .messagesNotModified:
messages = []
chats = []
@ -359,7 +365,11 @@ public func downloadMessage(postbox: Postbox, network: Network, messageId: Messa
messages = apiMessages
chats = apiChats
users = apiUsers
case let.messagesSlice(_, _, _, apiMessages, apiChats, apiUsers):
case let .messagesSlice(_, _, _, apiMessages, apiChats, apiUsers):
messages = apiMessages
chats = apiChats
users = apiUsers
case let .messagesSliceLegacy(_, _, apiMessages, apiChats, apiUsers):
messages = apiMessages
chats = apiChats
users = apiUsers
@ -446,6 +456,10 @@ func fetchRemoteMessage(postbox: Postbox, source: FetchMessageHistoryHoleSource,
messages = apiMessages
chats = apiChats
users = apiUsers
case let .messagesSliceLegacy(_, _, apiMessages, apiChats, apiUsers):
messages = apiMessages
chats = apiChats
users = apiUsers
case .messagesNotModified:
messages = []
chats = []
@ -514,7 +528,9 @@ public func searchMessageIdByTimestamp(account: Account, peerId: PeerId, timesta
messages = apiMessages
case let .channelMessages(_, _, _, apiMessages, _, _):
messages = apiMessages
case let.messagesSlice(_, _, _, apiMessages, _, _):
case let .messagesSlice(_, _, _, apiMessages, _, _):
messages = apiMessages
case let .messagesSliceLegacy(_, _, apiMessages, _, _):
messages = apiMessages
case .messagesNotModified:
messages = []
@ -538,7 +554,9 @@ public func searchMessageIdByTimestamp(account: Account, peerId: PeerId, timesta
messages = apiMessages
case let .channelMessages(_, _, _, apiMessages, _, _):
messages = apiMessages
case let.messagesSlice(_, _, _, apiMessages, _, _):
case let .messagesSlice(_, _, _, apiMessages, _, _):
messages = apiMessages
case let .messagesSliceLegacy(_, _, apiMessages, _, _):
messages = apiMessages
case .messagesNotModified:
messages = []

View File

@ -60,6 +60,10 @@ private func fetchMessage(transaction: Transaction, account: Account, messageId:
apiMessages = messages
apiChats = chats
apiUsers = users
case let .messagesSliceLegacy(_, _, messages, chats, users):
apiMessages = messages
apiChats = chats
apiUsers = users
case let .channelMessages(_, _, _, messages, chats, users):
apiMessages = messages
apiChats = chats

View File

@ -53,6 +53,8 @@ private func dialogTopMessage(network: Network, postbox: Postbox, peerId: PeerId
apiMessages = messages
case let .messagesSlice(_, _, _, messages, _, _):
apiMessages = messages
case let .messagesSliceLegacy(_, _, messages, _, _):
apiMessages = messages
case .messagesNotModified:
apiMessages = []
}

View File

@ -17,7 +17,9 @@ public func requestAccountPrivacySettings(account: Account) -> Signal<AccountPri
let phoneNumberPrivacy = account.network.request(Api.functions.account.getPrivacy(key: .inputPrivacyKeyPhoneNumber))
let autoremoveTimeout = account.network.request(Api.functions.account.getAccountTTL())
return combineLatest(lastSeenPrivacy, groupPrivacy, voiceCallPrivacy, voiceCallP2P, profilePhotoPrivacy, forwardPrivacy, phoneNumberPrivacy, autoremoveTimeout)
|> retryRequest
|> `catch` { _ in
return .complete()
}
|> mapToSignal { lastSeenPrivacy, groupPrivacy, voiceCallPrivacy, voiceCallP2P, profilePhotoPrivacy, forwardPrivacy, phoneNumberPrivacy, autoremoveTimeout -> Signal<AccountPrivacySettings, NoError> in
let accountTimeoutSeconds: Int32
switch autoremoveTimeout {