mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-22 14:20:20 +00:00
Bot previews
This commit is contained in:
@@ -199,16 +199,7 @@ func _internal_fetchAndUpdateCachedPeerData(accountPeerId: PeerId, peerId rawPee
|
||||
|
||||
let botPreview: Signal<CachedUserData.BotPreview?, NoError>
|
||||
if let user = maybePeer as? TelegramUser, let _ = user.botInfo {
|
||||
botPreview = network.request(Api.functions.bots.getPreviewMedias(bot: inputUser))
|
||||
|> `catch` { _ -> Signal<[Api.MessageMedia], NoError> in
|
||||
return .single([])
|
||||
}
|
||||
|> map { result -> CachedUserData.BotPreview? in
|
||||
return CachedUserData.BotPreview(media: result.compactMap { item -> Media? in
|
||||
let value = textMediaAndExpirationTimerFromApiMedia(item, user.id)
|
||||
return value.media
|
||||
})
|
||||
}
|
||||
botPreview = _internal_requestBotPreview(network: network, peerId: user.id, inputUser: inputUser, language: nil)
|
||||
} else {
|
||||
botPreview = .single(nil)
|
||||
}
|
||||
@@ -843,3 +834,33 @@ extension CachedPeerAutoremoveTimeout.Value {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func _internal_requestBotPreview(network: Network, peerId: PeerId, inputUser: Api.InputUser, language: String?) -> Signal<CachedUserData.BotPreview?, NoError> {
|
||||
return network.request(Api.functions.bots.getPreviewInfo(bot: inputUser, langCode: language ?? ""))
|
||||
|> map(Optional.init)
|
||||
|> `catch` { _ -> Signal<Api.bots.PreviewInfo?, NoError> in
|
||||
return .single(nil)
|
||||
}
|
||||
|> map { result -> CachedUserData.BotPreview? in
|
||||
guard let result else {
|
||||
return nil
|
||||
}
|
||||
switch result {
|
||||
case let .previewInfo(media, langCodes):
|
||||
return CachedUserData.BotPreview(
|
||||
items: media.compactMap { item -> CachedUserData.BotPreview.Item? in
|
||||
switch item {
|
||||
case let .botPreviewMedia(date, media):
|
||||
let value = textMediaAndExpirationTimerFromApiMedia(media, peerId)
|
||||
if let media = value.media {
|
||||
return CachedUserData.BotPreview.Item(media: media, timestamp: date)
|
||||
} else {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
},
|
||||
alternativeLanguageCodes: langCodes
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user