mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-07-31 15:37:01 +00:00
Fix bot preview api usage
(cherry picked from commit 32af470ffd00cc7f854964f66c9ad4f5a7a2a54c)
This commit is contained in:
parent
c4b406528a
commit
76c07d07c2
@ -2326,7 +2326,7 @@ public final class BotPreviewStoryListContext: StoryListContext {
|
||||
guard let peer, let inputUser = apiInputUser(peer) else {
|
||||
return .single((nil, nil))
|
||||
}
|
||||
return _internal_requestBotPreview(network: account.network, peerId: peerId, inputUser: inputUser, language: language)
|
||||
return _internal_requestBotAdminPreview(network: account.network, peerId: peerId, inputUser: inputUser, language: language)
|
||||
|> map { botPreview in
|
||||
return (botPreview, peer)
|
||||
}
|
||||
|
@ -198,8 +198,12 @@ func _internal_fetchAndUpdateCachedPeerData(accountPeerId: PeerId, peerId rawPee
|
||||
}
|
||||
|
||||
let botPreview: Signal<CachedUserData.BotPreview?, NoError>
|
||||
if let user = maybePeer as? TelegramUser, let _ = user.botInfo {
|
||||
botPreview = _internal_requestBotPreview(network: network, peerId: user.id, inputUser: inputUser, language: nil)
|
||||
if let user = maybePeer as? TelegramUser, let botInfo = user.botInfo {
|
||||
if botInfo.flags.contains(.canEdit) {
|
||||
botPreview = _internal_requestBotAdminPreview(network: network, peerId: user.id, inputUser: inputUser, language: nil)
|
||||
} else {
|
||||
botPreview = _internal_requestBotUserPreview(network: network, peerId: user.id, inputUser: inputUser)
|
||||
}
|
||||
} else {
|
||||
botPreview = .single(nil)
|
||||
}
|
||||
@ -835,7 +839,7 @@ extension CachedPeerAutoremoveTimeout.Value {
|
||||
}
|
||||
}
|
||||
|
||||
func _internal_requestBotPreview(network: Network, peerId: PeerId, inputUser: Api.InputUser, language: String?) -> Signal<CachedUserData.BotPreview?, NoError> {
|
||||
func _internal_requestBotAdminPreview(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
|
||||
@ -864,3 +868,30 @@ func _internal_requestBotPreview(network: Network, peerId: PeerId, inputUser: Ap
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func _internal_requestBotUserPreview(network: Network, peerId: PeerId, inputUser: Api.InputUser) -> Signal<CachedUserData.BotPreview?, NoError> {
|
||||
return network.request(Api.functions.bots.getPreviewMedias(bot: inputUser))
|
||||
|> map(Optional.init)
|
||||
|> `catch` { _ -> Signal<[Api.BotPreviewMedia]?, NoError> in
|
||||
return .single(nil)
|
||||
}
|
||||
|> map { result -> CachedUserData.BotPreview? in
|
||||
guard let result else {
|
||||
return nil
|
||||
}
|
||||
return CachedUserData.BotPreview(
|
||||
items: result.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: []
|
||||
)
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user