Various improvements

This commit is contained in:
Ilya Laktyushin 2024-08-11 00:14:00 +02:00
parent 85fb4c244a
commit 6109477015
10 changed files with 20 additions and 19 deletions

View File

@ -32,7 +32,7 @@ public final class OpenChatMessageParams {
public let navigationController: NavigationController? public let navigationController: NavigationController?
public let modal: Bool public let modal: Bool
public let dismissInput: () -> Void public let dismissInput: () -> Void
public let present: (ViewController, Any?) -> Void public let present: (ViewController, Any?, PresentationContextType) -> Void
public let transitionNode: (MessageId, Media, Bool) -> (ASDisplayNode, CGRect, () -> (UIView?, UIView?))? public let transitionNode: (MessageId, Media, Bool) -> (ASDisplayNode, CGRect, () -> (UIView?, UIView?))?
public let addToTransitionSurface: (UIView) -> Void public let addToTransitionSurface: (UIView) -> Void
public let openUrl: (String) -> Void public let openUrl: (String) -> Void
@ -63,7 +63,7 @@ public final class OpenChatMessageParams {
navigationController: NavigationController?, navigationController: NavigationController?,
modal: Bool = false, modal: Bool = false,
dismissInput: @escaping () -> Void, dismissInput: @escaping () -> Void,
present: @escaping (ViewController, Any?) -> Void, present: @escaping (ViewController, Any?, PresentationContextType) -> Void,
transitionNode: @escaping (MessageId, Media, Bool) -> (ASDisplayNode, CGRect, () -> (UIView?, UIView?))?, transitionNode: @escaping (MessageId, Media, Bool) -> (ASDisplayNode, CGRect, () -> (UIView?, UIView?))?,
addToTransitionSurface: @escaping (UIView) -> Void, addToTransitionSurface: @escaping (UIView) -> Void,
openUrl: @escaping (String) -> Void, openUrl: @escaping (String) -> Void,

View File

@ -2705,7 +2705,7 @@ final class ChatListSearchListPaneNode: ASDisplayNode, ChatListSearchPaneNode {
openMediaMessageImpl = { message, mode in openMediaMessageImpl = { message, mode in
let _ = context.sharedContext.openChatMessage(OpenChatMessageParams(context: context, chatLocation: nil, chatFilterTag: nil, chatLocationContextHolder: nil, message: message._asMessage(), standalone: false, reverseMessageGalleryOrder: true, mode: mode, navigationController: navigationController, dismissInput: { let _ = context.sharedContext.openChatMessage(OpenChatMessageParams(context: context, chatLocation: nil, chatFilterTag: nil, chatLocationContextHolder: nil, message: message._asMessage(), standalone: false, reverseMessageGalleryOrder: true, mode: mode, navigationController: navigationController, dismissInput: {
interaction.dismissInput() interaction.dismissInput()
}, present: { c, a in }, present: { c, a, _ in
interaction.present(c, a) interaction.present(c, a)
}, transitionNode: { messageId, media, _ in }, transitionNode: { messageId, media, _ in
return transitionNodeImpl?(messageId, EngineMedia(media)) return transitionNodeImpl?(messageId, EngineMedia(media))
@ -2861,7 +2861,7 @@ final class ChatListSearchListPaneNode: ASDisplayNode, ChatListSearchPaneNode {
return context.sharedContext.openChatMessage(OpenChatMessageParams(context: context, chatLocation: .peer(id: message.id.peerId), chatFilterTag: nil, chatLocationContextHolder: nil, message: message, standalone: false, reverseMessageGalleryOrder: true, mode: mode, navigationController: navigationController, dismissInput: { return context.sharedContext.openChatMessage(OpenChatMessageParams(context: context, chatLocation: .peer(id: message.id.peerId), chatFilterTag: nil, chatLocationContextHolder: nil, message: message, standalone: false, reverseMessageGalleryOrder: true, mode: mode, navigationController: navigationController, dismissInput: {
interaction.dismissInput() interaction.dismissInput()
}, present: { c, a in }, present: { c, a, _ in
interaction.present(c, a) interaction.present(c, a)
}, transitionNode: { messageId, media, _ in }, transitionNode: { messageId, media, _ in
var transitionNode: (ASDisplayNode, CGRect, () -> (UIView?, UIView?))? var transitionNode: (ASDisplayNode, CGRect, () -> (UIView?, UIView?))?

View File

@ -31,7 +31,7 @@ private func presentLiveLocationController(context: AccountContext, peerId: Peer
if let message = message, let strongController = controller { if let message = message, let strongController = controller {
let _ = context.sharedContext.openChatMessage(OpenChatMessageParams(context: context, chatLocation: nil, chatFilterTag: nil, chatLocationContextHolder: nil, message: message._asMessage(), standalone: false, reverseMessageGalleryOrder: false, navigationController: strongController.navigationController as? NavigationController, modal: true, dismissInput: { let _ = context.sharedContext.openChatMessage(OpenChatMessageParams(context: context, chatLocation: nil, chatFilterTag: nil, chatLocationContextHolder: nil, message: message._asMessage(), standalone: false, reverseMessageGalleryOrder: false, navigationController: strongController.navigationController as? NavigationController, modal: true, dismissInput: {
controller?.view.endEditing(true) controller?.view.endEditing(true)
}, present: { c, a in }, present: { c, a, _ in
controller?.present(c, in: .window(.root), with: a, blockInteraction: true) controller?.present(c, in: .window(.root), with: a, blockInteraction: true)
}, transitionNode: { _, _, _ in }, transitionNode: { _, _, _ in
return nil return nil

View File

@ -239,7 +239,7 @@ final class ChatRecentActionsControllerNode: ViewControllerTracingNode {
let gallerySource = GalleryControllerItemSource.standaloneMessage(message, nil) let gallerySource = GalleryControllerItemSource.standaloneMessage(message, nil)
return context.sharedContext.openChatMessage(OpenChatMessageParams(context: context, chatLocation: nil, chatFilterTag: nil, chatLocationContextHolder: nil, message: message, standalone: true, reverseMessageGalleryOrder: false, navigationController: navigationController, dismissInput: { return context.sharedContext.openChatMessage(OpenChatMessageParams(context: context, chatLocation: nil, chatFilterTag: nil, chatLocationContextHolder: nil, message: message, standalone: true, reverseMessageGalleryOrder: false, navigationController: navigationController, dismissInput: {
//self?.chatDisplayNode.dismissInput() //self?.chatDisplayNode.dismissInput()
}, present: { c, a in }, present: { c, a, _ in
self?.presentController(c, .window(.root), a) self?.presentController(c, .window(.root), a)
}, transitionNode: { messageId, media, adjustRect in }, transitionNode: { messageId, media, adjustRect in
var selectedNode: (ASDisplayNode, CGRect, () -> (UIView?, UIView?))? var selectedNode: (ASDisplayNode, CGRect, () -> (UIView?, UIView?))?

View File

@ -5073,7 +5073,7 @@ final class PeerInfoScreenNode: ViewControllerTracingNode, PeerInfoScreenNodePro
return self.context.sharedContext.openChatMessage(OpenChatMessageParams(context: self.context, chatLocation: self.chatLocation, chatFilterTag: nil, chatLocationContextHolder: self.chatLocationContextHolder, message: galleryMessage, standalone: false, reverseMessageGalleryOrder: true, navigationController: navigationController, dismissInput: { [weak self] in return self.context.sharedContext.openChatMessage(OpenChatMessageParams(context: self.context, chatLocation: self.chatLocation, chatFilterTag: nil, chatLocationContextHolder: self.chatLocationContextHolder, message: galleryMessage, standalone: false, reverseMessageGalleryOrder: true, navigationController: navigationController, dismissInput: { [weak self] in
self?.view.endEditing(true) self?.view.endEditing(true)
}, present: { [weak self] c, a in }, present: { [weak self] c, a, _ in
self?.controller?.present(c, in: .window(.root), with: a, blockInteraction: true) self?.controller?.present(c, in: .window(.root), with: a, blockInteraction: true)
}, transitionNode: { [weak self] messageId, media, _ in }, transitionNode: { [weak self] messageId, media, _ in
guard let strongSelf = self else { guard let strongSelf = self else {

View File

@ -2733,7 +2733,8 @@ final class StorageUsageScreenComponent: Component {
navigationController: navigationController, navigationController: navigationController,
dismissInput: { [weak self] in dismissInput: { [weak self] in
self?.endEditing(true) self?.endEditing(true)
}, present: { [weak self] c, a in },
present: { [weak self] c, a, _ in
guard let self else { guard let self else {
return return
} }

View File

@ -177,6 +177,6 @@ extension ChatControllerImpl {
contextController?.present(c, in: .current) contextController?.present(c, in: .current)
} }
let _ = self.context.sharedContext.openChatMessage(OpenChatMessageParams(context: self.context, chatLocation: nil, chatFilterTag: nil, chatLocationContextHolder: nil, message: message, standalone: false, reverseMessageGalleryOrder: false, navigationController: nil, dismissInput: { }, present: { _, _ in }, transitionNode: { _, _, _ in return nil }, addToTransitionSurface: { _ in }, openUrl: { _ in }, openPeer: { _, _ in }, callPeer: { _, _ in }, enqueueMessage: { _ in }, sendSticker: nil, sendEmoji: nil, setupTemporaryHiddenMedia: { _, _, _ in }, chatAvatarHiddenMedia: { _, _ in }, playlistLocation: .singleMessage(message.id))) let _ = self.context.sharedContext.openChatMessage(OpenChatMessageParams(context: self.context, chatLocation: nil, chatFilterTag: nil, chatLocationContextHolder: nil, message: message, standalone: false, reverseMessageGalleryOrder: false, navigationController: nil, dismissInput: { }, present: { _, _, _ in }, transitionNode: { _, _, _ in return nil }, addToTransitionSurface: { _ in }, openUrl: { _ in }, openPeer: { _, _ in }, callPeer: { _, _ in }, enqueueMessage: { _ in }, sendSticker: nil, sendEmoji: nil, setupTemporaryHiddenMedia: { _, _, _ in }, chatAvatarHiddenMedia: { _, _ in }, playlistLocation: .singleMessage(message.id)))
} }
} }

View File

@ -1275,8 +1275,8 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
return context.sharedContext.openChatMessage(OpenChatMessageParams(context: context, updatedPresentationData: strongSelf.updatedPresentationData, chatLocation: openChatLocation, chatFilterTag: chatFilterTag, chatLocationContextHolder: strongSelf.chatLocationContextHolder, message: message, mediaIndex: params.mediaIndex, standalone: standalone, reverseMessageGalleryOrder: false, mode: mode, navigationController: strongSelf.effectiveNavigationController, dismissInput: { return context.sharedContext.openChatMessage(OpenChatMessageParams(context: context, updatedPresentationData: strongSelf.updatedPresentationData, chatLocation: openChatLocation, chatFilterTag: chatFilterTag, chatLocationContextHolder: strongSelf.chatLocationContextHolder, message: message, mediaIndex: params.mediaIndex, standalone: standalone, reverseMessageGalleryOrder: false, mode: mode, navigationController: strongSelf.effectiveNavigationController, dismissInput: {
self?.chatDisplayNode.dismissInput() self?.chatDisplayNode.dismissInput()
}, present: { c, a in }, present: { c, a, i in
if c is GalleryController { if case .current = i {
c.presentationArguments = a c.presentationArguments = a
self?.galleryPresentationContext.present(c, on: PresentationSurfaceLevel(rawValue: 0), blockInteraction: true, completion: {}) self?.galleryPresentationContext.present(c, on: PresentationSurfaceLevel(rawValue: 0), blockInteraction: true, completion: {})
} else { } else {

View File

@ -164,7 +164,7 @@ func openChatMessageImpl(_ params: OpenChatMessageParams) -> Bool {
return GalleryTransitionArguments(transitionNode: selectedTransitionNode, addToTransitionSurface: params.addToTransitionSurface) return GalleryTransitionArguments(transitionNode: selectedTransitionNode, addToTransitionSurface: params.addToTransitionSurface)
} }
return nil return nil
})) }), .window(.root))
return true return true
case .map: case .map:
params.dismissInput() params.dismissInput()
@ -221,14 +221,14 @@ func openChatMessageImpl(_ params: OpenChatMessageParams) -> Bool {
} }
}, getSourceRect: params.getSourceRect) }, getSourceRect: params.getSourceRect)
params.dismissInput() params.dismissInput()
params.present(controller, nil) params.present(controller, nil, .window(.root))
return true return true
case let .document(file, immediateShare): case let .document(file, immediateShare):
params.dismissInput() params.dismissInput()
let presentationData = params.context.sharedContext.currentPresentationData.with { $0 } let presentationData = params.context.sharedContext.currentPresentationData.with { $0 }
if immediateShare { if immediateShare {
let controller = ShareController(context: params.context, subject: .media(.standalone(media: file)), immediateExternalShare: true) let controller = ShareController(context: params.context, subject: .media(.standalone(media: file)), immediateExternalShare: true)
params.present(controller, nil) params.present(controller, nil, .window(.root))
} else if let rootController = params.navigationController?.view.window?.rootViewController { } else if let rootController = params.navigationController?.view.window?.rootViewController {
let proceed = { let proceed = {
let canShare = !params.message.isCopyProtected() let canShare = !params.message.isCopyProtected()
@ -252,7 +252,7 @@ func openChatMessageImpl(_ params: OpenChatMessageParams) -> Bool {
} }
if file.mimeType.contains("image/svg") { if file.mimeType.contains("image/svg") {
let presentationData = params.context.sharedContext.currentPresentationData.with { $0 } let presentationData = params.context.sharedContext.currentPresentationData.with { $0 }
params.present(textAlertController(context: params.context, title: nil, text: presentationData.strings.OpenFile_PotentiallyDangerousContentAlert, actions: [TextAlertAction(type: .genericAction, title: presentationData.strings.Common_Cancel, action: {}), TextAlertAction(type: .defaultAction, title: presentationData.strings.OpenFile_Proceed, action: { proceed() })] ), nil) params.present(textAlertController(context: params.context, title: nil, text: presentationData.strings.OpenFile_PotentiallyDangerousContentAlert, actions: [TextAlertAction(type: .genericAction, title: presentationData.strings.Common_Cancel, action: {}), TextAlertAction(type: .defaultAction, title: presentationData.strings.OpenFile_Proceed, action: { proceed() })] ), nil, .window(.root))
} else { } else {
proceed() proceed()
} }
@ -314,7 +314,7 @@ func openChatMessageImpl(_ params: OpenChatMessageParams) -> Bool {
return GalleryTransitionArguments(transitionNode: selectedTransitionNode, addToTransitionSurface: params.addToTransitionSurface) return GalleryTransitionArguments(transitionNode: selectedTransitionNode, addToTransitionSurface: params.addToTransitionSurface)
} }
return nil return nil
})) }), params.message.adAttribute != nil ? .current : .window(.root))
}) })
return true return true
case let .secretGallery(gallery): case let .secretGallery(gallery):
@ -325,7 +325,7 @@ func openChatMessageImpl(_ params: OpenChatMessageParams) -> Bool {
return GalleryTransitionArguments(transitionNode: selectedTransitionNode, addToTransitionSurface: params.addToTransitionSurface) return GalleryTransitionArguments(transitionNode: selectedTransitionNode, addToTransitionSurface: params.addToTransitionSurface)
} }
return nil return nil
})) }), .window(.root))
return true return true
case let .other(otherMedia): case let .other(otherMedia):
params.dismissInput() params.dismissInput()
@ -368,7 +368,7 @@ func openChatMessageImpl(_ params: OpenChatMessageParams) -> Bool {
return GalleryTransitionArguments(transitionNode: selectedTransitionNode, addToTransitionSurface: params.addToTransitionSurface) return GalleryTransitionArguments(transitionNode: selectedTransitionNode, addToTransitionSurface: params.addToTransitionSurface)
} }
return nil return nil
})) }), .window(.root))
case let .theme(media): case let .theme(media):
params.dismissInput() params.dismissInput()
let path = params.context.account.postbox.mediaBox.completedResourcePath(media.resource) let path = params.context.account.postbox.mediaBox.completedResourcePath(media.resource)

View File

@ -311,7 +311,7 @@ final class OverlayAudioPlayerControllerNode: ViewControllerTracingNode, ASGestu
if let location = strongSelf.playlistLocation as? PeerMessagesPlaylistLocation, case let .custom(messages, _, loadMore) = location { if let location = strongSelf.playlistLocation as? PeerMessagesPlaylistLocation, case let .custom(messages, _, loadMore) = location {
playlistLocation = .custom(messages: messages, at: id, loadMore: loadMore) playlistLocation = .custom(messages: messages, at: id, loadMore: loadMore)
} }
return strongSelf.context.sharedContext.openChatMessage(OpenChatMessageParams(context: strongSelf.context, chatLocation: nil, chatFilterTag: nil, chatLocationContextHolder: nil, message: message, standalone: false, reverseMessageGalleryOrder: false, navigationController: nil, dismissInput: { }, present: { _, _ in }, transitionNode: { _, _, _ in return nil }, addToTransitionSurface: { _ in }, openUrl: { _ in }, openPeer: { _, _ in }, callPeer: { _, _ in }, enqueueMessage: { _ in }, sendSticker: nil, sendEmoji: nil, setupTemporaryHiddenMedia: { _, _, _ in }, chatAvatarHiddenMedia: { _, _ in }, playlistLocation: playlistLocation)) return strongSelf.context.sharedContext.openChatMessage(OpenChatMessageParams(context: strongSelf.context, chatLocation: nil, chatFilterTag: nil, chatLocationContextHolder: nil, message: message, standalone: false, reverseMessageGalleryOrder: false, navigationController: nil, dismissInput: { }, present: { _, _, _ in }, transitionNode: { _, _, _ in return nil }, addToTransitionSurface: { _ in }, openUrl: { _ in }, openPeer: { _, _ in }, callPeer: { _, _ in }, enqueueMessage: { _ in }, sendSticker: nil, sendEmoji: nil, setupTemporaryHiddenMedia: { _, _, _ in }, chatAvatarHiddenMedia: { _, _ in }, playlistLocation: playlistLocation))
} }
return false return false
} }