Skip to content

Commit ef4d0ad

Browse files
committed
Various improvements
1 parent 85b6a8f commit ef4d0ad

File tree

16 files changed

+565
-338
lines changed

16 files changed

+565
-338
lines changed

submodules/BrowserUI/Sources/BrowserWebContent.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -905,7 +905,7 @@ final class BrowserWebContent: UIView, BrowserContent, WKNavigationDelegate, WKU
905905
}
906906
} else {
907907
let controller = legacyICloudFilePicker(theme: self.presentationData.theme, mode: .export, url: url, documentTypes: [], forceDarkTheme: false, dismissed: {}, completion: { _ in
908-
908+
let _ = tempFile
909909
})
910910
self.present(controller, nil)
911911
}

submodules/TelegramApi/Sources/Api0.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1309,7 +1309,7 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = {
13091309
dict[-83926371] = { return Api.messages.MyStickers.parse_myStickers($0) }
13101310
dict[863093588] = { return Api.messages.PeerDialogs.parse_peerDialogs($0) }
13111311
dict[1753266509] = { return Api.messages.PeerSettings.parse_peerSettings($0) }
1312-
dict[1636301421] = { return Api.messages.PreparedInlineMessage.parse_preparedInlineMessage($0) }
1312+
dict[-11046771] = { return Api.messages.PreparedInlineMessage.parse_preparedInlineMessage($0) }
13131313
dict[-963811691] = { return Api.messages.QuickReplies.parse_quickReplies($0) }
13141314
dict[1603398491] = { return Api.messages.QuickReplies.parse_quickRepliesNotModified($0) }
13151315
dict[-352454890] = { return Api.messages.Reactions.parse_reactions($0) }

submodules/TelegramApi/Sources/Api32.swift

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -866,13 +866,13 @@ public extension Api.messages {
866866
}
867867
public extension Api.messages {
868868
enum PreparedInlineMessage: TypeConstructorDescription {
869-
case preparedInlineMessage(queryId: Int64, result: Api.BotInlineResult, peerTypes: [Api.InlineQueryPeerType], users: [Api.User])
869+
case preparedInlineMessage(queryId: Int64, result: Api.BotInlineResult, peerTypes: [Api.InlineQueryPeerType], cacheTime: Int32, users: [Api.User])
870870

871871
public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) {
872872
switch self {
873-
case .preparedInlineMessage(let queryId, let result, let peerTypes, let users):
873+
case .preparedInlineMessage(let queryId, let result, let peerTypes, let cacheTime, let users):
874874
if boxed {
875-
buffer.appendInt32(1636301421)
875+
buffer.appendInt32(-11046771)
876876
}
877877
serializeInt64(queryId, buffer: buffer, boxed: false)
878878
result.serialize(buffer, true)
@@ -881,6 +881,7 @@ public extension Api.messages {
881881
for item in peerTypes {
882882
item.serialize(buffer, true)
883883
}
884+
serializeInt32(cacheTime, buffer: buffer, boxed: false)
884885
buffer.appendInt32(481674261)
885886
buffer.appendInt32(Int32(users.count))
886887
for item in users {
@@ -892,8 +893,8 @@ public extension Api.messages {
892893

893894
public func descriptionFields() -> (String, [(String, Any)]) {
894895
switch self {
895-
case .preparedInlineMessage(let queryId, let result, let peerTypes, let users):
896-
return ("preparedInlineMessage", [("queryId", queryId as Any), ("result", result as Any), ("peerTypes", peerTypes as Any), ("users", users as Any)])
896+
case .preparedInlineMessage(let queryId, let result, let peerTypes, let cacheTime, let users):
897+
return ("preparedInlineMessage", [("queryId", queryId as Any), ("result", result as Any), ("peerTypes", peerTypes as Any), ("cacheTime", cacheTime as Any), ("users", users as Any)])
897898
}
898899
}
899900

@@ -908,16 +909,19 @@ public extension Api.messages {
908909
if let _ = reader.readInt32() {
909910
_3 = Api.parseVector(reader, elementSignature: 0, elementType: Api.InlineQueryPeerType.self)
910911
}
911-
var _4: [Api.User]?
912+
var _4: Int32?
913+
_4 = reader.readInt32()
914+
var _5: [Api.User]?
912915
if let _ = reader.readInt32() {
913-
_4 = Api.parseVector(reader, elementSignature: 0, elementType: Api.User.self)
916+
_5 = Api.parseVector(reader, elementSignature: 0, elementType: Api.User.self)
914917
}
915918
let _c1 = _1 != nil
916919
let _c2 = _2 != nil
917920
let _c3 = _3 != nil
918921
let _c4 = _4 != nil
919-
if _c1 && _c2 && _c3 && _c4 {
920-
return Api.messages.PreparedInlineMessage.preparedInlineMessage(queryId: _1!, result: _2!, peerTypes: _3!, users: _4!)
922+
let _c5 = _5 != nil
923+
if _c1 && _c2 && _c3 && _c4 && _c5 {
924+
return Api.messages.PreparedInlineMessage.preparedInlineMessage(queryId: _1!, result: _2!, peerTypes: _3!, cacheTime: _4!, users: _5!)
921925
}
922926
else {
923927
return nil

submodules/TelegramCore/Sources/ApiUtils/ReplyMarkupMessageAttribute.swift

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,23 @@ import Postbox
33
import TelegramApi
44

55
extension ReplyMarkupButtonAction.PeerTypes {
6-
init?(apiType: Api.InlineQueryPeerType) {
7-
switch apiType {
8-
case .inlineQueryPeerTypePM:
9-
self = .users
10-
case .inlineQueryPeerTypeBotPM:
11-
self = .bots
12-
case .inlineQueryPeerTypeBroadcast:
13-
self = .channels
14-
case .inlineQueryPeerTypeChat, .inlineQueryPeerTypeMegagroup:
15-
self = .groups
16-
case .inlineQueryPeerTypeSameBotPM:
17-
return nil
6+
init(apiType: [Api.InlineQueryPeerType]) {
7+
var rawValue: Int32 = 0
8+
for type in apiType {
9+
switch type {
10+
case .inlineQueryPeerTypePM:
11+
rawValue |= ReplyMarkupButtonAction.PeerTypes.users.rawValue
12+
case .inlineQueryPeerTypeBotPM:
13+
rawValue |= ReplyMarkupButtonAction.PeerTypes.bots.rawValue
14+
case .inlineQueryPeerTypeBroadcast:
15+
rawValue |= ReplyMarkupButtonAction.PeerTypes.channels.rawValue
16+
case .inlineQueryPeerTypeChat, .inlineQueryPeerTypeMegagroup:
17+
rawValue |= ReplyMarkupButtonAction.PeerTypes.groups.rawValue
18+
case .inlineQueryPeerTypeSameBotPM:
19+
break
20+
}
1821
}
22+
self.init(rawValue: rawValue)
1923
}
2024
}
2125

submodules/TelegramCore/Sources/TelegramEngine/Data/PeersData.swift

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2162,6 +2162,34 @@ public extension TelegramEngine.EngineData.Item {
21622162
}
21632163
}
21642164

2165+
public struct BotAppSettings: TelegramEngineDataItem, TelegramEngineMapKeyDataItem, PostboxViewDataItem {
2166+
public typealias Result = Optional<TelegramCore.BotAppSettings>
2167+
2168+
fileprivate var id: EnginePeer.Id
2169+
public var mapKey: EnginePeer.Id {
2170+
return self.id
2171+
}
2172+
2173+
public init(id: EnginePeer.Id) {
2174+
self.id = id
2175+
}
2176+
2177+
var key: PostboxViewKey {
2178+
return .cachedPeerData(peerId: self.id)
2179+
}
2180+
2181+
func extract(view: PostboxView) -> Result {
2182+
guard let view = view as? CachedPeerDataView else {
2183+
preconditionFailure()
2184+
}
2185+
if let cachedData = view.cachedPeerData as? CachedUserData {
2186+
return cachedData.botInfo?.appSettings
2187+
} else {
2188+
return nil
2189+
}
2190+
}
2191+
}
2192+
21652193
public struct BotCommands: TelegramEngineDataItem, TelegramEngineMapKeyDataItem, PostboxViewDataItem {
21662194
public typealias Result = Optional<[BotCommand]>
21672195

submodules/TelegramCore/Sources/TelegramEngine/Messages/PreparedInlineMessages.swift

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,10 @@ import TelegramApi
55
import MtProtoKit
66

77
public struct PreparedInlineMessage: Equatable {
8-
let queryId: Int64
9-
let result: ChatContextResult
10-
let peerTypes: [ReplyMarkupButtonAction.PeerTypes]
8+
public let botId: EnginePeer.Id
9+
public let queryId: Int64
10+
public let result: ChatContextResult
11+
public let peerTypes: ReplyMarkupButtonAction.PeerTypes
1112
}
1213

1314
func _internal_getPreparedInlineMessage(account: Account, botId: EnginePeer.Id, id: String) -> Signal<PreparedInlineMessage?, NoError> {
@@ -29,10 +30,15 @@ func _internal_getPreparedInlineMessage(account: Account, botId: EnginePeer.Id,
2930
}
3031
return account.postbox.transaction { transaction -> PreparedInlineMessage? in
3132
switch result {
32-
case let .preparedInlineMessage(queryId, result, peerTypes, users):
33+
case let .preparedInlineMessage(queryId, result, apiPeerTypes, cacheTime, users):
3334
updatePeers(transaction: transaction, accountPeerId: account.peerId, peers: AccumulatedPeers(users: users))
34-
35-
return PreparedInlineMessage(queryId: queryId, result: ChatContextResult(apiResult: result, queryId: queryId), peerTypes: peerTypes.compactMap { ReplyMarkupButtonAction.PeerTypes(apiType: $0) })
35+
let _ = cacheTime
36+
return PreparedInlineMessage(
37+
botId: botId,
38+
queryId: queryId,
39+
result: ChatContextResult(apiResult: result, queryId: queryId),
40+
peerTypes: ReplyMarkupButtonAction.PeerTypes(apiType: apiPeerTypes)
41+
)
3642
}
3743
}
3844
}

submodules/TelegramCore/Sources/TelegramEngine/Messages/TelegramEngineMessages.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ public enum EngineOutgoingMessageContent {
77
case text(String, [MessageTextEntity])
88
case file(FileMediaReference)
99
case contextResult(ChatContextResultCollection, ChatContextResult)
10+
case preparedInlineMessage(PreparedInlineMessage)
1011
}
1112

1213
public final class StoryPreloadInfo {
@@ -249,7 +250,9 @@ public extension TelegramEngine {
249250
scheduleTime: Int32? = nil
250251
) -> Signal<[MessageId?], NoError> {
251252
var message: EnqueueMessage?
252-
if case let .contextResult(results, result) = content {
253+
if case let .preparedInlineMessage(preparedInlineMessage) = content {
254+
message = self.outgoingMessageWithChatContextResult(to: peerId, threadId: nil, botId: preparedInlineMessage.botId, result: preparedInlineMessage.result, replyToMessageId: replyToMessageId, replyToStoryId: storyId, hideVia: true, silentPosting: silentPosting, scheduleTime: scheduleTime, correlationId: nil)
255+
} else if case let .contextResult(results, result) = content {
253256
message = self.outgoingMessageWithChatContextResult(to: peerId, threadId: nil, botId: results.botId, result: result, replyToMessageId: replyToMessageId, replyToStoryId: storyId, hideVia: true, silentPosting: silentPosting, scheduleTime: scheduleTime, correlationId: nil)
254257
} else {
255258
var attributes: [MessageAttribute] = []

submodules/TelegramUI/Components/Chat/ChatMessageBubbleItemNode/Sources/ChatMessageBubbleItemNode.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1610,6 +1610,11 @@ public class ChatMessageBubbleItemNode: ChatMessageItemView, ChatMessagePreviewI
16101610
}
16111611
}
16121612

1613+
if isPreview, let peer = firstMessage.peers[firstMessage.id.peerId] as? TelegramUser, peer.firstName == nil {
1614+
hasAvatar = false
1615+
effectiveAuthor = nil
1616+
}
1617+
16131618
var isInstantVideo = false
16141619
if let forwardInfo = item.content.firstMessage.forwardInfo, forwardInfo.source == nil, forwardInfo.author?.id.namespace == Namespaces.Peer.CloudUser {
16151620
for media in item.content.firstMessage.media {

submodules/TelegramUI/Components/PeerInfo/PeerInfoScreen/Sources/PeerInfoScreen.swift

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1555,7 +1555,7 @@ private func infoItems(data: PeerInfoScreenData?, context: AccountContext, prese
15551555
|> deliverOnMainQueue).startStandalone()
15561556
}))
15571557

1558-
if data.webAppPermissions?.location?.isRequested == true {
1558+
if data.webAppPermissions?.location?.isRequested == true || data.webAppPermissions?.location?.isAllowed == true {
15591559
items[.permissions]!.append(PeerInfoScreenSwitchItem(id: 32, text: "Geolocation", value: data.webAppPermissions?.location?.isAllowed ?? false, icon: UIImage(bundleImageName: "Chat/Info/Location"), isLocked: false, toggled: { value in
15601560
let _ = updateWebAppPermissionsStateInteractively(context: context, peerId: user.id) { current in
15611561
return WebAppPermissionsState(location: WebAppPermissionsState.Location(isRequested: true, isAllowed: value))
@@ -5459,14 +5459,19 @@ final class PeerInfoScreenNode: ViewControllerTracingNode, PeerInfoScreenNodePro
54595459
}
54605460
}
54615461

5462+
var appSettings: BotAppSettings?
5463+
if let settings = self.data?.cachedData as? CachedUserData {
5464+
appSettings = settings.botInfo?.appSettings
5465+
}
5466+
54625467
let presentationData = self.presentationData
54635468
let proceed: (Bool) -> Void = { [weak self] installed in
54645469
guard let self else {
54655470
return
54665471
}
54675472
let context = self.context
54685473
let peerId = self.peerId
5469-
let params = WebAppParameters(source: .settings, peerId: self.context.account.peerId, botId: bot.peer.id, botName: bot.peer.compactDisplayTitle, botVerified: bot.peer.isVerified, url: nil, queryId: nil, payload: nil, buttonText: nil, keepAliveSignal: nil, forceHasSettings: bot.flags.contains(.hasSettings), fullSize: true)
5474+
let params = WebAppParameters(source: .settings, peerId: self.context.account.peerId, botId: bot.peer.id, botName: bot.peer.compactDisplayTitle, botVerified: bot.peer.isVerified, botAddress: bot.peer.addressName ?? "", url: nil, queryId: nil, payload: nil, buttonText: nil, keepAliveSignal: nil, forceHasSettings: bot.flags.contains(.hasSettings), fullSize: true, appSettings: appSettings)
54705475

54715476
var openUrlImpl: ((String, Bool, Bool, @escaping () -> Void) -> Void)?
54725477
var presentImpl: ((ViewController, Any?) -> Void)?

0 commit comments

Comments
 (0)