mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Various improvements
This commit is contained in:
parent
83364952d0
commit
8180c08855
@ -5471,7 +5471,7 @@ final class PeerInfoScreenNode: ViewControllerTracingNode, PeerInfoScreenNodePro
|
|||||||
}
|
}
|
||||||
let context = self.context
|
let context = self.context
|
||||||
let peerId = self.peerId
|
let peerId = self.peerId
|
||||||
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)
|
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 ?? "", appName: "", url: nil, queryId: nil, payload: nil, buttonText: nil, keepAliveSignal: nil, forceHasSettings: bot.flags.contains(.hasSettings), fullSize: true, appSettings: appSettings)
|
||||||
|
|
||||||
var openUrlImpl: ((String, Bool, Bool, @escaping () -> Void) -> Void)?
|
var openUrlImpl: ((String, Bool, Bool, @escaping () -> Void) -> Void)?
|
||||||
var presentImpl: ((ViewController, Any?) -> Void)?
|
var presentImpl: ((ViewController, Any?) -> Void)?
|
||||||
|
@ -128,7 +128,7 @@ func openWebAppImpl(
|
|||||||
}
|
}
|
||||||
|
|
||||||
var presentImpl: ((ViewController, Any?) -> Void)?
|
var presentImpl: ((ViewController, Any?) -> Void)?
|
||||||
let params = WebAppParameters(source: .menu, peerId: chatPeer?.id ?? botPeer.id, botId: botPeer.id, botName: botName, botVerified: botVerified, botAddress: botPeer.addressName ?? "", url: url, queryId: nil, payload: nil, buttonText: buttonText, keepAliveSignal: nil, forceHasSettings: false, fullSize: fullSize, isFullscreen: isFullscreen, appSettings: appSettings)
|
let params = WebAppParameters(source: .menu, peerId: chatPeer?.id ?? botPeer.id, botId: botPeer.id, botName: botName, botVerified: botVerified, botAddress: botPeer.addressName ?? "", appName: nil, url: url, queryId: nil, payload: nil, buttonText: buttonText, keepAliveSignal: nil, forceHasSettings: false, fullSize: fullSize, isFullscreen: isFullscreen, appSettings: appSettings)
|
||||||
|
|
||||||
let controller = standaloneWebAppController(context: context, updatedPresentationData: updatedPresentationData, params: params, threadId: threadId, openUrl: { [weak parentController] url, concealed, forceUpdate, commit in
|
let controller = standaloneWebAppController(context: context, updatedPresentationData: updatedPresentationData, params: params, threadId: threadId, openUrl: { [weak parentController] url, concealed, forceUpdate, commit in
|
||||||
ChatControllerImpl.botOpenUrl(context: context, peerId: chatPeer?.id ?? botPeer.id, controller: parentController as? ChatControllerImpl, url: url, concealed: concealed, forceUpdate: forceUpdate, present: { c, a in
|
ChatControllerImpl.botOpenUrl(context: context, peerId: chatPeer?.id ?? botPeer.id, controller: parentController as? ChatControllerImpl, url: url, concealed: concealed, forceUpdate: forceUpdate, present: { c, a in
|
||||||
@ -222,7 +222,7 @@ func openWebAppImpl(
|
|||||||
} else {
|
} else {
|
||||||
source = url.isEmpty ? .generic : .simple
|
source = url.isEmpty ? .generic : .simple
|
||||||
}
|
}
|
||||||
let params = WebAppParameters(source: source, peerId: chatPeer?.id ?? botId, botId: botId, botName: botName, botVerified: botVerified, botAddress: botPeer.addressName ?? "", url: result.url, queryId: nil, payload: payload, buttonText: buttonText, keepAliveSignal: nil, forceHasSettings: false, fullSize: result.flags.contains(.fullSize), isFullscreen: result.flags.contains(.fullScreen), appSettings: appSettings)
|
let params = WebAppParameters(source: source, peerId: chatPeer?.id ?? botId, botId: botId, botName: botName, botVerified: botVerified, botAddress: botPeer.addressName ?? "", appName: nil, url: result.url, queryId: nil, payload: payload, buttonText: buttonText, keepAliveSignal: nil, forceHasSettings: false, fullSize: result.flags.contains(.fullSize), isFullscreen: result.flags.contains(.fullScreen), appSettings: appSettings)
|
||||||
let controller = standaloneWebAppController(context: context, updatedPresentationData: updatedPresentationData, params: params, threadId: threadId, openUrl: { [weak parentController] url, concealed, forceUpdate, commit in
|
let controller = standaloneWebAppController(context: context, updatedPresentationData: updatedPresentationData, params: params, threadId: threadId, openUrl: { [weak parentController] url, concealed, forceUpdate, commit in
|
||||||
ChatControllerImpl.botOpenUrl(context: context, peerId: chatPeer?.id ?? botId, controller: parentController as? ChatControllerImpl, url: url, concealed: concealed, forceUpdate: forceUpdate, present: { c, a in
|
ChatControllerImpl.botOpenUrl(context: context, peerId: chatPeer?.id ?? botId, controller: parentController as? ChatControllerImpl, url: url, concealed: concealed, forceUpdate: forceUpdate, present: { c, a in
|
||||||
presentImpl?(c, a)
|
presentImpl?(c, a)
|
||||||
@ -268,7 +268,7 @@ func openWebAppImpl(
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
var presentImpl: ((ViewController, Any?) -> Void)?
|
var presentImpl: ((ViewController, Any?) -> Void)?
|
||||||
let params = WebAppParameters(source: .button, peerId: chatPeer?.id ?? botPeer.id, botId: botPeer.id, botName: botName, botVerified: botVerified, botAddress: botPeer.addressName ?? "", url: result.url, queryId: result.queryId, payload: nil, buttonText: buttonText, keepAliveSignal: result.keepAliveSignal, forceHasSettings: false, fullSize: result.flags.contains(.fullSize), isFullscreen: result.flags.contains(.fullScreen), appSettings: appSettings)
|
let params = WebAppParameters(source: .button, peerId: chatPeer?.id ?? botPeer.id, botId: botPeer.id, botName: botName, botVerified: botVerified, botAddress: botPeer.addressName ?? "", appName: nil, url: result.url, queryId: result.queryId, payload: nil, buttonText: buttonText, keepAliveSignal: result.keepAliveSignal, forceHasSettings: false, fullSize: result.flags.contains(.fullSize), isFullscreen: result.flags.contains(.fullScreen), appSettings: appSettings)
|
||||||
let controller = standaloneWebAppController(context: context, updatedPresentationData: updatedPresentationData, params: params, threadId: threadId, openUrl: { [weak parentController] url, concealed, forceUpdate, commit in
|
let controller = standaloneWebAppController(context: context, updatedPresentationData: updatedPresentationData, params: params, threadId: threadId, openUrl: { [weak parentController] url, concealed, forceUpdate, commit in
|
||||||
ChatControllerImpl.botOpenUrl(context: context, peerId: chatPeer?.id ?? botPeer.id, controller: parentController as? ChatControllerImpl, url: url, concealed: concealed, forceUpdate: forceUpdate, present: { c, a in
|
ChatControllerImpl.botOpenUrl(context: context, peerId: chatPeer?.id ?? botPeer.id, controller: parentController as? ChatControllerImpl, url: url, concealed: concealed, forceUpdate: forceUpdate, present: { c, a in
|
||||||
presentImpl?(c, a)
|
presentImpl?(c, a)
|
||||||
@ -499,7 +499,7 @@ public extension ChatControllerImpl {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
let context = strongSelf.context
|
let context = strongSelf.context
|
||||||
let params = WebAppParameters(source: .generic, peerId: peerId, botId: botPeer.id, botName: botApp.title, botVerified: botPeer.isVerified, botAddress: botPeer.addressName ?? "", url: result.url, queryId: 0, payload: payload, buttonText: "", keepAliveSignal: nil, forceHasSettings: botApp.flags.contains(.hasSettings), fullSize: result.flags.contains(.fullSize), isFullscreen: result.flags.contains(.fullScreen), appSettings: nil)
|
let params = WebAppParameters(source: .generic, peerId: peerId, botId: botPeer.id, botName: botApp.title, botVerified: botPeer.isVerified, botAddress: botPeer.addressName ?? "", appName: botApp.shortName, url: result.url, queryId: 0, payload: payload, buttonText: "", keepAliveSignal: nil, forceHasSettings: botApp.flags.contains(.hasSettings), fullSize: result.flags.contains(.fullSize), isFullscreen: result.flags.contains(.fullScreen), appSettings: nil)
|
||||||
var presentImpl: ((ViewController, Any?) -> Void)?
|
var presentImpl: ((ViewController, Any?) -> Void)?
|
||||||
let controller = standaloneWebAppController(context: strongSelf.context, updatedPresentationData: strongSelf.updatedPresentationData, params: params, threadId: strongSelf.chatLocation.threadId, openUrl: { [weak self] url, concealed, forceUpdate, commit in
|
let controller = standaloneWebAppController(context: strongSelf.context, updatedPresentationData: strongSelf.updatedPresentationData, params: params, threadId: strongSelf.chatLocation.threadId, openUrl: { [weak self] url, concealed, forceUpdate, commit in
|
||||||
ChatControllerImpl.botOpenUrl(context: context, peerId: peerId, controller: self, url: url, concealed: concealed, forceUpdate: forceUpdate, present: { c, a in
|
ChatControllerImpl.botOpenUrl(context: context, peerId: peerId, controller: self, url: url, concealed: concealed, forceUpdate: forceUpdate, present: { c, a in
|
||||||
|
@ -613,7 +613,7 @@ extension ChatControllerImpl {
|
|||||||
payload = botPayload
|
payload = botPayload
|
||||||
fromAttachMenu = false
|
fromAttachMenu = false
|
||||||
}
|
}
|
||||||
let params = WebAppParameters(source: fromAttachMenu ? .attachMenu : .generic, peerId: peer.id, botId: bot.peer.id, botName: bot.shortName, botVerified: bot.peer.isVerified, botAddress: bot.peer.addressName ?? "", url: nil, queryId: nil, payload: payload, buttonText: nil, keepAliveSignal: nil, forceHasSettings: false, fullSize: false, isFullscreen: false)
|
let params = WebAppParameters(source: fromAttachMenu ? .attachMenu : .generic, peerId: peer.id, botId: bot.peer.id, botName: bot.shortName, botVerified: bot.peer.isVerified, botAddress: bot.peer.addressName ?? "", appName: "", url: nil, queryId: nil, payload: payload, buttonText: nil, keepAliveSignal: nil, forceHasSettings: false, fullSize: false, isFullscreen: false)
|
||||||
let replyMessageSubject = strongSelf.presentationInterfaceState.interfaceState.replyMessageSubject
|
let replyMessageSubject = strongSelf.presentationInterfaceState.interfaceState.replyMessageSubject
|
||||||
let controller = WebAppController(context: strongSelf.context, updatedPresentationData: strongSelf.updatedPresentationData, params: params, replyToMessageId: replyMessageSubject?.messageId, threadId: strongSelf.chatLocation.threadId)
|
let controller = WebAppController(context: strongSelf.context, updatedPresentationData: strongSelf.updatedPresentationData, params: params, replyToMessageId: replyMessageSubject?.messageId, threadId: strongSelf.chatLocation.threadId)
|
||||||
controller.openUrl = { [weak self] url, concealed, forceUpdate, commit in
|
controller.openUrl = { [weak self] url, concealed, forceUpdate, commit in
|
||||||
|
@ -782,6 +782,8 @@ func openExternalUrlImpl(context: AccountContext, urlContext: OpenURLContext, ur
|
|||||||
startChannel = ""
|
startChannel = ""
|
||||||
} else if queryItem.name == "profile" {
|
} else if queryItem.name == "profile" {
|
||||||
profile = true
|
profile = true
|
||||||
|
} else if queryItem.name == "startapp" {
|
||||||
|
startApp = ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -63,6 +63,7 @@ public struct WebAppParameters {
|
|||||||
let botName: String
|
let botName: String
|
||||||
let botVerified: Bool
|
let botVerified: Bool
|
||||||
let botAddress: String
|
let botAddress: String
|
||||||
|
let appName: String?
|
||||||
let url: String?
|
let url: String?
|
||||||
let queryId: Int64?
|
let queryId: Int64?
|
||||||
let payload: String?
|
let payload: String?
|
||||||
@ -80,6 +81,7 @@ public struct WebAppParameters {
|
|||||||
botName: String,
|
botName: String,
|
||||||
botVerified: Bool,
|
botVerified: Bool,
|
||||||
botAddress: String,
|
botAddress: String,
|
||||||
|
appName: String?,
|
||||||
url: String?,
|
url: String?,
|
||||||
queryId: Int64?,
|
queryId: Int64?,
|
||||||
payload: String?,
|
payload: String?,
|
||||||
@ -96,6 +98,7 @@ public struct WebAppParameters {
|
|||||||
self.botName = botName
|
self.botName = botName
|
||||||
self.botVerified = botVerified
|
self.botVerified = botVerified
|
||||||
self.botAddress = botAddress
|
self.botAddress = botAddress
|
||||||
|
self.appName = appName
|
||||||
self.url = url
|
self.url = url
|
||||||
self.queryId = queryId
|
self.queryId = queryId
|
||||||
self.payload = payload
|
self.payload = payload
|
||||||
@ -2529,19 +2532,21 @@ public final class WebAppController: ViewController, AttachmentContainable {
|
|||||||
guard let controller = self.controller else {
|
guard let controller = self.controller else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
let _ = (self.context.engine.data.get(TelegramEngine.EngineData.Item.Peer.Peer(id: controller.botId))
|
let _ = (self.context.engine.data.get(TelegramEngine.EngineData.Item.Peer.Peer(id: controller.botId))
|
||||||
|> deliverOnMainQueue
|
|> deliverOnMainQueue
|
||||||
).start(next: { [weak controller] peer in
|
).start(next: { [weak controller] peer in
|
||||||
guard let peer, let addressName = peer.addressName else {
|
guard let controller, let peer, let addressName = peer.addressName else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
let encodedName = peer.compactDisplayTitle.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? ""
|
var appName: String = ""
|
||||||
let encodedUsername = addressName.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? ""
|
if let name = controller.appName {
|
||||||
|
appName = "/\(name)"
|
||||||
let url = URL(string: "http://64.225.73.234/?name=\(encodedName)&username=\(encodedUsername)")!
|
}
|
||||||
|
let url = URL(string: "x-safari-https://t.me/\(addressName)\(appName)?startapp&addToHomeScreen")!
|
||||||
UIApplication.shared.open(url)
|
UIApplication.shared.open(url)
|
||||||
|
|
||||||
controller?.dismiss()
|
controller.dismiss()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2693,6 +2698,7 @@ public final class WebAppController: ViewController, AttachmentContainable {
|
|||||||
fileprivate let botVerified: Bool
|
fileprivate let botVerified: Bool
|
||||||
fileprivate let botAppSettings: BotAppSettings?
|
fileprivate let botAppSettings: BotAppSettings?
|
||||||
fileprivate let botAddress: String
|
fileprivate let botAddress: String
|
||||||
|
fileprivate let appName: String?
|
||||||
private let url: String?
|
private let url: String?
|
||||||
private let queryId: Int64?
|
private let queryId: Int64?
|
||||||
private let payload: String?
|
private let payload: String?
|
||||||
@ -2723,6 +2729,7 @@ public final class WebAppController: ViewController, AttachmentContainable {
|
|||||||
self.botVerified = params.botVerified
|
self.botVerified = params.botVerified
|
||||||
self.botAppSettings = params.appSettings
|
self.botAppSettings = params.appSettings
|
||||||
self.botAddress = params.botAddress
|
self.botAddress = params.botAddress
|
||||||
|
self.appName = params.appName
|
||||||
self.url = params.url
|
self.url = params.url
|
||||||
self.queryId = params.queryId
|
self.queryId = params.queryId
|
||||||
self.payload = params.payload
|
self.payload = params.payload
|
||||||
|
Loading…
x
Reference in New Issue
Block a user