mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-22 22:25:57 +00:00
Various improvements
This commit is contained in:
@@ -294,7 +294,9 @@ func openWebAppImpl(context: AccountContext, parentController: ViewController, u
|
||||
let controller = webAppLaunchConfirmationController(context: context, updatedPresentationData: updatedPresentationData, peer: botPeer, completion: { _ in
|
||||
let _ = ApplicationSpecificNotice.setBotGameNotice(accountManager: context.sharedContext.accountManager, peerId: botPeer.id).startStandalone()
|
||||
openWebView()
|
||||
}, showMore: nil)
|
||||
}, showMore: nil, openTerms: {
|
||||
|
||||
})
|
||||
parentController.present(controller, in: .window(.root))
|
||||
}
|
||||
})
|
||||
@@ -312,38 +314,38 @@ public extension ChatControllerImpl {
|
||||
}
|
||||
|
||||
static func botRequestSwitchInline(context: AccountContext, controller: ChatControllerImpl?, peerId: EnginePeer.Id, botAddress: String, query: String, chatTypes: [ReplyMarkupButtonRequestPeerType]?, completion: @escaping () -> Void) -> Void {
|
||||
let activateSwitchInline = {
|
||||
var chatController: ChatControllerImpl?
|
||||
if let current = controller {
|
||||
chatController = current
|
||||
} else if let navigationController = context.sharedContext.mainWindow?.viewController as? NavigationController {
|
||||
for controller in navigationController.viewControllers.reversed() {
|
||||
if let controller = controller as? ChatControllerImpl {
|
||||
chatController = controller
|
||||
break
|
||||
}
|
||||
let activateSwitchInline: (EnginePeer?) -> Void = { selectedPeer in
|
||||
var chatController: ChatControllerImpl?
|
||||
if let current = controller {
|
||||
chatController = current
|
||||
} else if let navigationController = context.sharedContext.mainWindow?.viewController as? NavigationController {
|
||||
for controller in navigationController.viewControllers.reversed() {
|
||||
if let controller = controller as? ChatControllerImpl {
|
||||
chatController = controller
|
||||
break
|
||||
}
|
||||
}
|
||||
if let chatController {
|
||||
chatController.controllerInteraction?.activateSwitchInline(peerId, "@\(botAddress) \(query)", nil)
|
||||
}
|
||||
}
|
||||
|
||||
if let chatTypes {
|
||||
let peerController = context.sharedContext.makePeerSelectionController(PeerSelectionControllerParams(context: context, filter: [.excludeRecent, .doNotSearchMessages], requestPeerType: chatTypes, hasContactSelector: false, hasCreation: false))
|
||||
peerController.peerSelected = { [weak peerController] peer, _ in
|
||||
completion()
|
||||
peerController?.dismiss()
|
||||
activateSwitchInline()
|
||||
}
|
||||
if let controller {
|
||||
controller.push(peerController)
|
||||
} else {
|
||||
((context.sharedContext.mainWindow?.viewController as? TelegramRootControllerInterface)?.viewControllers.last as? ViewController)?.push(peerController)
|
||||
}
|
||||
if let chatController {
|
||||
chatController.controllerInteraction?.activateSwitchInline(selectedPeer?.id ?? peerId, "@\(botAddress) \(query)", nil)
|
||||
}
|
||||
}
|
||||
|
||||
if let chatTypes {
|
||||
let peerController = context.sharedContext.makePeerSelectionController(PeerSelectionControllerParams(context: context, filter: [.excludeRecent, .doNotSearchMessages], requestPeerType: chatTypes, hasContactSelector: false, hasCreation: false))
|
||||
peerController.peerSelected = { [weak peerController] peer, _ in
|
||||
completion()
|
||||
peerController?.dismiss()
|
||||
activateSwitchInline(peer)
|
||||
}
|
||||
if let controller {
|
||||
controller.push(peerController)
|
||||
} else {
|
||||
activateSwitchInline()
|
||||
((context.sharedContext.mainWindow?.viewController as? TelegramRootControllerInterface)?.viewControllers.last as? ViewController)?.push(peerController)
|
||||
}
|
||||
} else {
|
||||
activateSwitchInline(nil)
|
||||
}
|
||||
}
|
||||
|
||||
private static func botOpenPeer(context: AccountContext, peerId: EnginePeer.Id, navigation: ChatControllerInteractionNavigateToPeer, navigationController: NavigationController) {
|
||||
@@ -547,6 +549,10 @@ public extension ChatControllerImpl {
|
||||
if let self {
|
||||
self.openResolved(result: .peer(botPeer._asPeer(), .info(nil)), sourceMessageId: nil)
|
||||
}
|
||||
}, openTerms: { [weak self] in
|
||||
if let self {
|
||||
self.context.sharedContext.openExternalUrl(context: self.context, urlContext: .generic, url: self.presentationData.strings.WebApp_LaunchTermsConfirmation_URL, forceExternal: false, presentationData: self.presentationData, navigationController: self.effectiveNavigationController, dismissInput: {})
|
||||
}
|
||||
})
|
||||
self.present(controller, in: .window(.root))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user