Update API
This commit is contained in:
parent
a5825d5a67
commit
ef9c1def4e
2 changed files with 74 additions and 0 deletions
|
|
@ -7807,6 +7807,22 @@ public extension Api.functions.messages {
|
|||
})
|
||||
}
|
||||
}
|
||||
public extension Api.functions.messages {
|
||||
static func getRichMessage(peer: Api.InputPeer, id: Int32) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.messages.Messages>) {
|
||||
let buffer = Buffer()
|
||||
buffer.appendInt32(1343580623)
|
||||
peer.serialize(buffer, true)
|
||||
serializeInt32(id, buffer: buffer, boxed: false)
|
||||
return (FunctionDescription(name: "messages.getRichMessage", parameters: [("peer", ConstructorParameterDescription(peer)), ("id", ConstructorParameterDescription(id))]), buffer, DeserializeFunctionResponse { (buffer: Buffer) -> Api.messages.Messages? in
|
||||
let reader = BufferReader(buffer)
|
||||
var result: Api.messages.Messages?
|
||||
if let signature = reader.readInt32() {
|
||||
result = Api.parse(reader, signature: signature) as? Api.messages.Messages
|
||||
}
|
||||
return result
|
||||
})
|
||||
}
|
||||
}
|
||||
public extension Api.functions.messages {
|
||||
static func getSavedDialogs(flags: Int32, parentPeer: Api.InputPeer?, offsetDate: Int32, offsetId: Int32, offsetPeer: Api.InputPeer, limit: Int32, hash: Int64) -> (FunctionDescription, Buffer, DeserializeFunctionResponse<Api.messages.SavedDialogs>) {
|
||||
let buffer = Buffer()
|
||||
|
|
|
|||
|
|
@ -1866,6 +1866,64 @@ public extension TelegramEngine {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
public func requestFullRichText(id: EngineMessage.Id) -> Signal<RichTextMessageAttribute?, NoError> {
|
||||
let account = self.account
|
||||
return self.account.postbox.transaction { transaction -> Api.InputPeer? in
|
||||
return transaction.getPeer(id.peerId).flatMap(apiInputPeer)
|
||||
}
|
||||
|> mapToSignal { inputPeer -> Signal<RichTextMessageAttribute?, NoError> in
|
||||
guard let inputPeer else {
|
||||
return .single(nil)
|
||||
}
|
||||
if id.namespace != Namespaces.Message.Cloud {
|
||||
return .single(nil)
|
||||
}
|
||||
return account.network.request(Api.functions.messages.getRichMessage(peer: inputPeer, id: id.id))
|
||||
|> map(Optional.init)
|
||||
|> `catch` { _ -> Signal<Api.messages.Messages?, NoError> in
|
||||
return .single(nil)
|
||||
}
|
||||
|> mapToSignal { result -> Signal<RichTextMessageAttribute?, NoError> in
|
||||
guard let result else {
|
||||
return .single(nil)
|
||||
}
|
||||
|
||||
let messages: [Api.Message]
|
||||
let users: [Api.User]
|
||||
let chats: [Api.Chat]
|
||||
switch result {
|
||||
case let .channelMessages(channelMessages):
|
||||
messages = channelMessages.messages
|
||||
users = channelMessages.users
|
||||
chats = channelMessages.chats
|
||||
case let .messages(messagesValue):
|
||||
messages = messagesValue.messages
|
||||
users = messagesValue.users
|
||||
chats = messagesValue.chats
|
||||
case .messagesNotModified:
|
||||
return .single(nil)
|
||||
case let .messagesSlice(messagesSlice):
|
||||
messages = messagesSlice.messages
|
||||
users = messagesSlice.users
|
||||
chats = messagesSlice.chats
|
||||
}
|
||||
|
||||
return account.postbox.transaction { transaction -> RichTextMessageAttribute? in
|
||||
var peerIsForum = false
|
||||
if let peer = transaction.getPeer(id.peerId), peer.isForum {
|
||||
peerIsForum = true
|
||||
}
|
||||
updatePeers(transaction: transaction, accountPeerId: account.peerId, peers: AccumulatedPeers(chats: chats, users: users))
|
||||
let _ = transaction.addMessages(messages.compactMap { message -> StoreMessage? in
|
||||
return StoreMessage(apiMessage: message, accountPeerId: account.peerId, peerIsForum: peerIsForum)
|
||||
}, location: .Random)
|
||||
|
||||
return transaction.getMessage(id)?.attributes.first(where: { $0 is RichTextMessageAttribute }) as? RichTextMessageAttribute
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue