mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-11-07 17:30:12 +00:00
Various fixes
This commit is contained in:
parent
69fda4b94e
commit
ff2dad403c
@ -3368,7 +3368,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
let params = WebAppParameters(peerId: peerId, botId: peerId, botName: botName, url: url, queryId: nil, payload: nil, buttonText: buttonText, keepAliveSignal: nil, fromMenu: true)
|
let params = WebAppParameters(peerId: peerId, botId: peerId, botName: botName, url: url, queryId: nil, payload: nil, buttonText: buttonText, keepAliveSignal: nil, fromMenu: true, isSimple: false)
|
||||||
let controller = standaloneWebAppController(context: strongSelf.context, updatedPresentationData: strongSelf.updatedPresentationData, params: params, openUrl: { [weak self] url in
|
let controller = standaloneWebAppController(context: strongSelf.context, updatedPresentationData: strongSelf.updatedPresentationData, params: params, openUrl: { [weak self] url in
|
||||||
self?.openUrl(url, concealed: true, forceExternal: true)
|
self?.openUrl(url, concealed: true, forceExternal: true)
|
||||||
}, getInputContainerNode: { [weak self] in
|
}, getInputContainerNode: { [weak self] in
|
||||||
@ -3405,7 +3405,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
|||||||
guard let strongSelf = self else {
|
guard let strongSelf = self else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
let params = WebAppParameters(peerId: peerId, botId: peerId, botName: botName, url: url, queryId: nil, payload: nil, buttonText: buttonText, keepAliveSignal: nil, fromMenu: false)
|
let params = WebAppParameters(peerId: peerId, botId: peerId, botName: botName, url: url, queryId: nil, payload: nil, buttonText: buttonText, keepAliveSignal: nil, fromMenu: false, isSimple: true)
|
||||||
let controller = standaloneWebAppController(context: strongSelf.context, updatedPresentationData: strongSelf.updatedPresentationData, params: params, openUrl: { [weak self] url in
|
let controller = standaloneWebAppController(context: strongSelf.context, updatedPresentationData: strongSelf.updatedPresentationData, params: params, openUrl: { [weak self] url in
|
||||||
self?.openUrl(url, concealed: true, forceExternal: true)
|
self?.openUrl(url, concealed: true, forceExternal: true)
|
||||||
})
|
})
|
||||||
@ -3426,7 +3426,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
|||||||
guard let strongSelf = self else {
|
guard let strongSelf = self else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
let params = WebAppParameters(peerId: peerId, botId: peerId, botName: botName, url: result.url, queryId: result.queryId, payload: nil, buttonText: buttonText, keepAliveSignal: result.keepAliveSignal, fromMenu: false)
|
let params = WebAppParameters(peerId: peerId, botId: peerId, botName: botName, url: result.url, queryId: result.queryId, payload: nil, buttonText: buttonText, keepAliveSignal: result.keepAliveSignal, fromMenu: false, isSimple: false)
|
||||||
let controller = standaloneWebAppController(context: strongSelf.context, updatedPresentationData: strongSelf.updatedPresentationData, params: params, openUrl: { [weak self] url in
|
let controller = standaloneWebAppController(context: strongSelf.context, updatedPresentationData: strongSelf.updatedPresentationData, params: params, openUrl: { [weak self] url in
|
||||||
self?.openUrl(url, concealed: true, forceExternal: true)
|
self?.openUrl(url, concealed: true, forceExternal: true)
|
||||||
}, completion: { [weak self] in
|
}, completion: { [weak self] in
|
||||||
@ -10995,7 +10995,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
|||||||
completion(controller, nil)
|
completion(controller, nil)
|
||||||
strongSelf.controllerNavigationDisposable.set(nil)
|
strongSelf.controllerNavigationDisposable.set(nil)
|
||||||
case let .app(bot, botName, _):
|
case let .app(bot, botName, _):
|
||||||
let params = WebAppParameters(peerId: peer.id, botId: bot.id, botName: botName, url: nil, queryId: nil, payload: botPayload, buttonText: nil, keepAliveSignal: nil, fromMenu: false)
|
let params = WebAppParameters(peerId: peer.id, botId: bot.id, botName: botName, url: nil, queryId: nil, payload: botPayload, buttonText: nil, keepAliveSignal: nil, fromMenu: false, isSimple: false)
|
||||||
let replyMessageId = strongSelf.presentationInterfaceState.interfaceState.replyMessageId
|
let replyMessageId = strongSelf.presentationInterfaceState.interfaceState.replyMessageId
|
||||||
let controller = WebAppController(context: strongSelf.context, updatedPresentationData: strongSelf.updatedPresentationData, params: params, replyToMessageId: replyMessageId)
|
let controller = WebAppController(context: strongSelf.context, updatedPresentationData: strongSelf.updatedPresentationData, params: params, replyToMessageId: replyMessageId)
|
||||||
controller.openUrl = { [weak self] url in
|
controller.openUrl = { [weak self] url in
|
||||||
|
|||||||
@ -30,6 +30,7 @@ public struct WebAppParameters {
|
|||||||
let buttonText: String?
|
let buttonText: String?
|
||||||
let keepAliveSignal: Signal<Never, KeepWebViewError>?
|
let keepAliveSignal: Signal<Never, KeepWebViewError>?
|
||||||
let fromMenu: Bool
|
let fromMenu: Bool
|
||||||
|
let isSimple: Bool
|
||||||
|
|
||||||
public init(
|
public init(
|
||||||
peerId: PeerId,
|
peerId: PeerId,
|
||||||
@ -40,7 +41,8 @@ public struct WebAppParameters {
|
|||||||
payload: String?,
|
payload: String?,
|
||||||
buttonText: String?,
|
buttonText: String?,
|
||||||
keepAliveSignal: Signal<Never, KeepWebViewError>?,
|
keepAliveSignal: Signal<Never, KeepWebViewError>?,
|
||||||
fromMenu: Bool
|
fromMenu: Bool,
|
||||||
|
isSimple: Bool
|
||||||
) {
|
) {
|
||||||
self.peerId = peerId
|
self.peerId = peerId
|
||||||
self.botId = botId
|
self.botId = botId
|
||||||
@ -51,6 +53,7 @@ public struct WebAppParameters {
|
|||||||
self.buttonText = buttonText
|
self.buttonText = buttonText
|
||||||
self.keepAliveSignal = keepAliveSignal
|
self.keepAliveSignal = keepAliveSignal
|
||||||
self.fromMenu = fromMenu
|
self.fromMenu = fromMenu
|
||||||
|
self.isSimple = isSimple
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -96,6 +99,11 @@ public final class WebAppController: ViewController, AttachmentContainable {
|
|||||||
private var iconDisposable: Disposable?
|
private var iconDisposable: Disposable?
|
||||||
private var keepAliveDisposable: Disposable?
|
private var keepAliveDisposable: Disposable?
|
||||||
|
|
||||||
|
private var didTransitionIn = false
|
||||||
|
private var dismissed = false
|
||||||
|
|
||||||
|
private var validLayout: (ContainerViewLayout, CGFloat)?
|
||||||
|
|
||||||
init(context: AccountContext, controller: WebAppController, present: @escaping (ViewController, Any?) -> Void) {
|
init(context: AccountContext, controller: WebAppController, present: @escaping (ViewController, Any?) -> Void) {
|
||||||
self.context = context
|
self.context = context
|
||||||
self.controller = controller
|
self.controller = controller
|
||||||
@ -306,8 +314,6 @@ public final class WebAppController: ViewController, AttachmentContainable {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var didTransitionIn = false
|
|
||||||
private func animateTransitionIn() {
|
private func animateTransitionIn() {
|
||||||
guard !self.didTransitionIn, let webView = self.webView else {
|
guard !self.didTransitionIn, let webView = self.webView else {
|
||||||
return
|
return
|
||||||
@ -355,7 +361,6 @@ public final class WebAppController: ViewController, AttachmentContainable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private var validLayout: (ContainerViewLayout, CGFloat)?
|
|
||||||
func containerLayoutUpdated(_ layout: ContainerViewLayout, navigationBarHeight: CGFloat, transition: ContainedViewLayoutTransition) {
|
func containerLayoutUpdated(_ layout: ContainerViewLayout, navigationBarHeight: CGFloat, transition: ContainedViewLayoutTransition) {
|
||||||
let previousLayout = self.validLayout?.0
|
let previousLayout = self.validLayout?.0
|
||||||
self.validLayout = (layout, navigationBarHeight)
|
self.validLayout = (layout, navigationBarHeight)
|
||||||
@ -420,10 +425,12 @@ public final class WebAppController: ViewController, AttachmentContainable {
|
|||||||
|
|
||||||
private var delayedScriptMessage: WKScriptMessage?
|
private var delayedScriptMessage: WKScriptMessage?
|
||||||
private func handleScriptMessage(_ message: WKScriptMessage) {
|
private func handleScriptMessage(_ message: WKScriptMessage) {
|
||||||
|
guard let controller = self.controller else {
|
||||||
|
return
|
||||||
|
}
|
||||||
guard let body = message.body as? [String: Any] else {
|
guard let body = message.body as? [String: Any] else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let eventName = body["eventName"] as? String else {
|
guard let eventName = body["eventName"] as? String else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -432,7 +439,7 @@ public final class WebAppController: ViewController, AttachmentContainable {
|
|||||||
case "web_app_ready":
|
case "web_app_ready":
|
||||||
self.animateTransitionIn()
|
self.animateTransitionIn()
|
||||||
case "web_app_data_send":
|
case "web_app_data_send":
|
||||||
if let eventData = body["eventData"] as? String {
|
if controller.isSimple, let eventData = body["eventData"] as? String {
|
||||||
self.handleSendData(data: eventData)
|
self.handleSendData(data: eventData)
|
||||||
}
|
}
|
||||||
case "web_app_setup_main_button":
|
case "web_app_setup_main_button":
|
||||||
@ -471,7 +478,6 @@ public final class WebAppController: ViewController, AttachmentContainable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private var dismissed = false
|
|
||||||
private func handleSendData(data string: String) {
|
private func handleSendData(data string: String) {
|
||||||
guard let controller = self.controller, let buttonText = controller.buttonText, !self.dismissed else {
|
guard let controller = self.controller, let buttonText = controller.buttonText, !self.dismissed else {
|
||||||
return
|
return
|
||||||
@ -536,6 +542,7 @@ public final class WebAppController: ViewController, AttachmentContainable {
|
|||||||
private let payload: String?
|
private let payload: String?
|
||||||
private let buttonText: String?
|
private let buttonText: String?
|
||||||
private let fromMenu: Bool
|
private let fromMenu: Bool
|
||||||
|
private let isSimple: Bool
|
||||||
private let keepAliveSignal: Signal<Never, KeepWebViewError>?
|
private let keepAliveSignal: Signal<Never, KeepWebViewError>?
|
||||||
private let replyToMessageId: MessageId?
|
private let replyToMessageId: MessageId?
|
||||||
|
|
||||||
@ -556,6 +563,7 @@ public final class WebAppController: ViewController, AttachmentContainable {
|
|||||||
self.payload = params.payload
|
self.payload = params.payload
|
||||||
self.buttonText = params.buttonText
|
self.buttonText = params.buttonText
|
||||||
self.fromMenu = params.fromMenu
|
self.fromMenu = params.fromMenu
|
||||||
|
self.isSimple = params.isSimple
|
||||||
self.keepAliveSignal = params.keepAliveSignal
|
self.keepAliveSignal = params.keepAliveSignal
|
||||||
self.replyToMessageId = replyToMessageId
|
self.replyToMessageId = replyToMessageId
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user