mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
Web app improvements
This commit is contained in:
parent
e203405b3e
commit
9146416f68
@ -11,6 +11,7 @@ import AccountContext
|
|||||||
import TelegramNotices
|
import TelegramNotices
|
||||||
import PresentationDataUtils
|
import PresentationDataUtils
|
||||||
import UndoUI
|
import UndoUI
|
||||||
|
import UrlHandling
|
||||||
|
|
||||||
public extension ChatControllerImpl {
|
public extension ChatControllerImpl {
|
||||||
func openWebApp(buttonText: String, url: String, simple: Bool, source: ChatOpenWebViewSource) {
|
func openWebApp(buttonText: String, url: String, simple: Bool, source: ChatOpenWebViewSource) {
|
||||||
@ -89,8 +90,13 @@ public extension ChatControllerImpl {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var fullSize = false
|
||||||
|
if isTelegramMeLink(url), let internalUrl = parseFullInternalUrl(sharedContext: self.context.sharedContext, url: url), case .peer(_, .appStart) = internalUrl {
|
||||||
|
fullSize = !url.contains("?mode=compact")
|
||||||
|
}
|
||||||
|
|
||||||
let context = self.context
|
let context = self.context
|
||||||
let params = WebAppParameters(source: .menu, peerId: peerId, botId: peerId, botName: botName, url: url, queryId: nil, payload: nil, buttonText: buttonText, keepAliveSignal: nil, forceHasSettings: false, fullSize: false)
|
let params = WebAppParameters(source: .menu, peerId: peerId, botId: peerId, botName: botName, url: url, queryId: nil, payload: nil, buttonText: buttonText, keepAliveSignal: nil, forceHasSettings: false, fullSize: fullSize)
|
||||||
let controller = standaloneWebAppController(context: self.context, updatedPresentationData: self.updatedPresentationData, params: params, threadId: self.chatLocation.threadId, openUrl: { [weak self] url, concealed, commit in
|
let controller = standaloneWebAppController(context: self.context, updatedPresentationData: self.updatedPresentationData, params: params, threadId: self.chatLocation.threadId, openUrl: { [weak self] url, concealed, commit in
|
||||||
self?.openUrl(url, concealed: concealed, forceExternal: true, commit: commit)
|
self?.openUrl(url, concealed: concealed, forceExternal: true, commit: commit)
|
||||||
}, requestSwitchInline: { [weak self] query, chatTypes, completion in
|
}, requestSwitchInline: { [weak self] query, chatTypes, completion in
|
||||||
|
@ -487,12 +487,31 @@ public final class WebAppController: ViewController, AttachmentContainable {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
let _ = (self.context.engine.messages.requestWebView(peerId: controller.peerId, botId: controller.botId, url: controller.url, payload: controller.payload, themeParams: generateWebAppThemeParams(presentationData.theme), fromMenu: controller.source == .menu, replyToMessageId: controller.replyToMessageId, threadId: controller.threadId)
|
if let url = controller.url, isTelegramMeLink(url), let internalUrl = parseFullInternalUrl(sharedContext: self.context.sharedContext, url: url), case .peer(_, .appStart) = internalUrl {
|
||||||
|> deliverOnMainQueue).start(next: { [weak self] result in
|
let _ = (self.context.sharedContext.resolveUrl(context: self.context, peerId: controller.peerId, url: url, skipUrlAuth: false)
|
||||||
guard let strongSelf = self else {
|
|> deliverOnMainQueue).startStandalone(next: { [weak self] result in
|
||||||
return
|
guard let self, let controller = self.controller else {
|
||||||
}
|
return
|
||||||
if let parsedUrl = URL(string: result.url) {
|
}
|
||||||
|
guard case let .peer(peer, params) = result, let peer, case let .withBotApp(appStart) = params else {
|
||||||
|
controller.dismiss()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
let _ = (self.context.engine.messages.requestAppWebView(peerId: peer.id, appReference: .id(id: appStart.botApp.id, accessHash: appStart.botApp.accessHash), payload: appStart.payload, themeParams: generateWebAppThemeParams(self.presentationData.theme), compact: appStart.compact, allowWrite: true)
|
||||||
|
|> deliverOnMainQueue).startStandalone(next: { [weak self] result in
|
||||||
|
guard let self, let parsedUrl = URL(string: result.url) else {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
self.controller?.titleView?.title = CounterControllerTitle(title: appStart.botApp.title, counter: self.presentationData.strings.Bot_GenericBotStatus)
|
||||||
|
self.webView?.load(URLRequest(url: parsedUrl))
|
||||||
|
})
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
let _ = (self.context.engine.messages.requestWebView(peerId: controller.peerId, botId: controller.botId, url: controller.url, payload: controller.payload, themeParams: generateWebAppThemeParams(presentationData.theme), fromMenu: controller.source == .menu, replyToMessageId: controller.replyToMessageId, threadId: controller.threadId)
|
||||||
|
|> deliverOnMainQueue).start(next: { [weak self] result in
|
||||||
|
guard let strongSelf = self, let parsedUrl = URL(string: result.url) else {
|
||||||
|
return
|
||||||
|
}
|
||||||
strongSelf.queryId = result.queryId
|
strongSelf.queryId = result.queryId
|
||||||
strongSelf.webView?.load(URLRequest(url: parsedUrl))
|
strongSelf.webView?.load(URLRequest(url: parsedUrl))
|
||||||
|
|
||||||
@ -509,8 +528,8 @@ public final class WebAppController: ViewController, AttachmentContainable {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
})
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user