mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-10-09 03:20:48 +00:00
Various improvements
This commit is contained in:
parent
85fb4c244a
commit
6109477015
@ -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,
|
||||||
|
@ -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?))?
|
||||||
|
@ -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
|
||||||
|
@ -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?))?
|
||||||
|
@ -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 {
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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 {
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user