mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-11-07 09:20:08 +00:00
Various Fixes
This commit is contained in:
parent
477d3c2c42
commit
1f0f7bbac7
@ -1192,7 +1192,7 @@ final class ChatItemGalleryFooterContentNode: GalleryFooterContentNode, UIScroll
|
|||||||
shareController.actionCompleted = { [weak self] in
|
shareController.actionCompleted = { [weak self] in
|
||||||
if let strongSelf = self, let actionCompletionText = actionCompletionText {
|
if let strongSelf = self, let actionCompletionText = actionCompletionText {
|
||||||
let presentationData = strongSelf.context.sharedContext.currentPresentationData.with { $0 }
|
let presentationData = strongSelf.context.sharedContext.currentPresentationData.with { $0 }
|
||||||
strongSelf.controllerInteraction?.presentController(UndoOverlayController(presentationData: presentationData, content: .mediaSaved(text: actionCompletionText), elevatedLayout: false, animateInAsReplacement: false, action: { _ in return false }), nil)
|
strongSelf.controllerInteraction?.presentController(UndoOverlayController(presentationData: presentationData, content: .mediaSaved(text: actionCompletionText), elevatedLayout: true, animateInAsReplacement: false, action: { _ in return true }), nil)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
shareController.completed = { [weak self] peerIds in
|
shareController.completed = { [weak self] peerIds in
|
||||||
|
|||||||
@ -301,7 +301,7 @@ public class ItemListVenueItemNode: ListViewItemNode, ItemListItemNode {
|
|||||||
strongSelf.topStripeNode.removeFromSupernode()
|
strongSelf.topStripeNode.removeFromSupernode()
|
||||||
}
|
}
|
||||||
if strongSelf.bottomStripeNode.supernode == nil {
|
if strongSelf.bottomStripeNode.supernode == nil {
|
||||||
strongSelf.addSubnode(strongSelf.bottomStripeNode)
|
strongSelf.insertSubnode(strongSelf.bottomStripeNode, at: 0)
|
||||||
}
|
}
|
||||||
if strongSelf.maskNode.supernode != nil {
|
if strongSelf.maskNode.supernode != nil {
|
||||||
strongSelf.maskNode.removeFromSupernode()
|
strongSelf.maskNode.removeFromSupernode()
|
||||||
|
|||||||
@ -27,6 +27,7 @@ swift_library(
|
|||||||
"//submodules/LegacyComponents:LegacyComponents",
|
"//submodules/LegacyComponents:LegacyComponents",
|
||||||
"//submodules/LegacyMediaPickerUI:LegacyMediaPickerUI",
|
"//submodules/LegacyMediaPickerUI:LegacyMediaPickerUI",
|
||||||
"//submodules/SaveToCameraRoll:SaveToCameraRoll",
|
"//submodules/SaveToCameraRoll:SaveToCameraRoll",
|
||||||
|
"//submodules/UndoUI:UndoUI",
|
||||||
],
|
],
|
||||||
visibility = [
|
visibility = [
|
||||||
"//visibility:public",
|
"//visibility:public",
|
||||||
|
|||||||
@ -12,6 +12,7 @@ import ShareController
|
|||||||
import PhotoResources
|
import PhotoResources
|
||||||
import GalleryUI
|
import GalleryUI
|
||||||
import TelegramUniversalVideoContent
|
import TelegramUniversalVideoContent
|
||||||
|
import UndoUI
|
||||||
|
|
||||||
private struct PeerAvatarImageGalleryThumbnailItem: GalleryThumbnailItem {
|
private struct PeerAvatarImageGalleryThumbnailItem: GalleryThumbnailItem {
|
||||||
let account: Account
|
let account: Account
|
||||||
@ -185,13 +186,22 @@ final class PeerAvatarImageGalleryItemNode: ZoomableContentGalleryItemNode {
|
|||||||
self.footerContentNode.share = { [weak self] interaction in
|
self.footerContentNode.share = { [weak self] interaction in
|
||||||
if let strongSelf = self, let entry = strongSelf.entry, !entry.representations.isEmpty {
|
if let strongSelf = self, let entry = strongSelf.entry, !entry.representations.isEmpty {
|
||||||
let subject: ShareControllerSubject
|
let subject: ShareControllerSubject
|
||||||
|
var actionCompletionText: String?
|
||||||
if let video = entry.videoRepresentations.last, let peerReference = PeerReference(peer) {
|
if let video = entry.videoRepresentations.last, let peerReference = PeerReference(peer) {
|
||||||
let videoFileReference = FileMediaReference.avatarList(peer: peerReference, media: TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: 0), partialReference: nil, resource: video.representation.resource, previewRepresentations: [], videoThumbnails: [], immediateThumbnailData: nil, mimeType: "video/mp4", size: nil, attributes: [.Animated, .Video(duration: 0, size: video.representation.dimensions, flags: [])]))
|
let videoFileReference = FileMediaReference.avatarList(peer: peerReference, media: TelegramMediaFile(fileId: MediaId(namespace: Namespaces.Media.LocalFile, id: 0), partialReference: nil, resource: video.representation.resource, previewRepresentations: [], videoThumbnails: [], immediateThumbnailData: nil, mimeType: "video/mp4", size: nil, attributes: [.Animated, .Video(duration: 0, size: video.representation.dimensions, flags: [])]))
|
||||||
subject = .media(videoFileReference.abstract)
|
subject = .media(videoFileReference.abstract)
|
||||||
|
actionCompletionText = strongSelf.presentationData.strings.Gallery_VideoSaved
|
||||||
} else {
|
} else {
|
||||||
subject = .image(entry.representations)
|
subject = .image(entry.representations)
|
||||||
|
actionCompletionText = strongSelf.presentationData.strings.Gallery_ImageSaved
|
||||||
}
|
}
|
||||||
let shareController = ShareController(context: strongSelf.context, subject: subject, preferredAction: .saveToCameraRoll)
|
let shareController = ShareController(context: strongSelf.context, subject: subject, preferredAction: .saveToCameraRoll)
|
||||||
|
shareController.actionCompleted = { [weak self] in
|
||||||
|
if let strongSelf = self, let actionCompletionText = actionCompletionText {
|
||||||
|
let presentationData = strongSelf.context.sharedContext.currentPresentationData.with { $0 }
|
||||||
|
interaction.presentController(UndoOverlayController(presentationData: presentationData, content: .mediaSaved(text: actionCompletionText), elevatedLayout: true, animateInAsReplacement: false, action: { _ in return true }), nil)
|
||||||
|
}
|
||||||
|
}
|
||||||
interaction.presentController(shareController, nil)
|
interaction.presentController(shareController, nil)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1883,6 +1883,8 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
|||||||
}
|
}
|
||||||
}, presentController: { [weak self] controller, arguments in
|
}, presentController: { [weak self] controller, arguments in
|
||||||
self?.present(controller, in: .window(.root), with: arguments)
|
self?.present(controller, in: .window(.root), with: arguments)
|
||||||
|
}, presentControllerInCurrent: { [weak self] controller, arguments in
|
||||||
|
self?.present(controller, in: .current, with: arguments)
|
||||||
}, navigationController: { [weak self] in
|
}, navigationController: { [weak self] in
|
||||||
return self?.navigationController as? NavigationController
|
return self?.navigationController as? NavigationController
|
||||||
}, chatControllerNode: { [weak self] in
|
}, chatControllerNode: { [weak self] in
|
||||||
|
|||||||
@ -79,6 +79,7 @@ public final class ChatControllerInteraction {
|
|||||||
let updateInputMode: ((ChatInputMode) -> ChatInputMode) -> Void
|
let updateInputMode: ((ChatInputMode) -> ChatInputMode) -> Void
|
||||||
let openMessageShareMenu: (MessageId) -> Void
|
let openMessageShareMenu: (MessageId) -> Void
|
||||||
let presentController: (ViewController, Any?) -> Void
|
let presentController: (ViewController, Any?) -> Void
|
||||||
|
let presentControllerInCurrent: (ViewController, Any?) -> Void
|
||||||
let navigationController: () -> NavigationController?
|
let navigationController: () -> NavigationController?
|
||||||
let chatControllerNode: () -> ASDisplayNode?
|
let chatControllerNode: () -> ASDisplayNode?
|
||||||
let presentGlobalOverlayController: (ViewController, Any?) -> Void
|
let presentGlobalOverlayController: (ViewController, Any?) -> Void
|
||||||
@ -174,6 +175,7 @@ public final class ChatControllerInteraction {
|
|||||||
updateInputMode: @escaping ((ChatInputMode) -> ChatInputMode) -> Void,
|
updateInputMode: @escaping ((ChatInputMode) -> ChatInputMode) -> Void,
|
||||||
openMessageShareMenu: @escaping (MessageId) -> Void,
|
openMessageShareMenu: @escaping (MessageId) -> Void,
|
||||||
presentController: @escaping (ViewController, Any?) -> Void,
|
presentController: @escaping (ViewController, Any?) -> Void,
|
||||||
|
presentControllerInCurrent: @escaping (ViewController, Any?) -> Void,
|
||||||
navigationController: @escaping () -> NavigationController?,
|
navigationController: @escaping () -> NavigationController?,
|
||||||
chatControllerNode: @escaping () -> ASDisplayNode?,
|
chatControllerNode: @escaping () -> ASDisplayNode?,
|
||||||
presentGlobalOverlayController: @escaping (ViewController, Any?) -> Void,
|
presentGlobalOverlayController: @escaping (ViewController, Any?) -> Void,
|
||||||
@ -255,6 +257,7 @@ public final class ChatControllerInteraction {
|
|||||||
self.updateInputMode = updateInputMode
|
self.updateInputMode = updateInputMode
|
||||||
self.openMessageShareMenu = openMessageShareMenu
|
self.openMessageShareMenu = openMessageShareMenu
|
||||||
self.presentController = presentController
|
self.presentController = presentController
|
||||||
|
self.presentControllerInCurrent = presentControllerInCurrent
|
||||||
self.navigationController = navigationController
|
self.navigationController = navigationController
|
||||||
self.chatControllerNode = chatControllerNode
|
self.chatControllerNode = chatControllerNode
|
||||||
self.presentGlobalOverlayController = presentGlobalOverlayController
|
self.presentGlobalOverlayController = presentGlobalOverlayController
|
||||||
@ -311,7 +314,7 @@ public final class ChatControllerInteraction {
|
|||||||
static var `default`: ChatControllerInteraction {
|
static var `default`: ChatControllerInteraction {
|
||||||
return ChatControllerInteraction(openMessage: { _, _ in
|
return ChatControllerInteraction(openMessage: { _, _ in
|
||||||
return false }, openPeer: { _, _, _ in }, openPeerMention: { _ in }, openMessageContextMenu: { _, _, _, _, _ in }, updateMessageReaction: { _ in }, activateMessagePinch: { _ in }, openMessageContextActions: { _, _, _, _ in }, navigateToMessage: { _, _ in }, navigateToMessageStandalone: { _ in }, tapMessage: nil, clickThroughMessage: { }, toggleMessagesSelection: { _, _ in }, sendCurrentMessage: { _ in }, sendMessage: { _ in }, sendSticker: { _, _, _, _, _, _, _ in return false }, sendGif: { _, _, _, _, _ in return false }, sendBotContextResultAsGif: { _, _, _, _, _ in return false }, requestMessageActionCallback: { _, _, _, _ in }, requestMessageActionUrlAuth: { _, _ in }, activateSwitchInline: { _, _ in }, openUrl: { _, _, _, _ in }, shareCurrentLocation: {}, shareAccountContact: {}, sendBotCommand: { _, _ in }, openInstantPage: { _, _ in }, openWallpaper: { _ in }, openTheme: { _ in }, openHashtag: { _, _ in }, updateInputState: { _ in }, updateInputMode: { _ in }, openMessageShareMenu: { _ in
|
return false }, openPeer: { _, _, _ in }, openPeerMention: { _ in }, openMessageContextMenu: { _, _, _, _, _ in }, updateMessageReaction: { _ in }, activateMessagePinch: { _ in }, openMessageContextActions: { _, _, _, _ in }, navigateToMessage: { _, _ in }, navigateToMessageStandalone: { _ in }, tapMessage: nil, clickThroughMessage: { }, toggleMessagesSelection: { _, _ in }, sendCurrentMessage: { _ in }, sendMessage: { _ in }, sendSticker: { _, _, _, _, _, _, _ in return false }, sendGif: { _, _, _, _, _ in return false }, sendBotContextResultAsGif: { _, _, _, _, _ in return false }, requestMessageActionCallback: { _, _, _, _ in }, requestMessageActionUrlAuth: { _, _ in }, activateSwitchInline: { _, _ in }, openUrl: { _, _, _, _ in }, shareCurrentLocation: {}, shareAccountContact: {}, sendBotCommand: { _, _ in }, openInstantPage: { _, _ in }, openWallpaper: { _ in }, openTheme: { _ in }, openHashtag: { _, _ in }, updateInputState: { _ in }, updateInputMode: { _ in }, openMessageShareMenu: { _ in
|
||||||
}, presentController: { _, _ in }, navigationController: {
|
}, presentController: { _, _ in }, presentControllerInCurrent: { _, _ in }, navigationController: {
|
||||||
return nil
|
return nil
|
||||||
}, chatControllerNode: {
|
}, chatControllerNode: {
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@ -786,7 +786,7 @@ func contextMenuForChatPresentationInterfaceState(chatPresentationInterfaceState
|
|||||||
let _ = (saveToCameraRoll(context: context, postbox: context.account.postbox, mediaReference: mediaReference)
|
let _ = (saveToCameraRoll(context: context, postbox: context.account.postbox, mediaReference: mediaReference)
|
||||||
|> deliverOnMainQueue).start(completed: {
|
|> deliverOnMainQueue).start(completed: {
|
||||||
let presentationData = context.sharedContext.currentPresentationData.with { $0 }
|
let presentationData = context.sharedContext.currentPresentationData.with { $0 }
|
||||||
controllerInteraction.presentController(UndoOverlayController(presentationData: presentationData, content: .mediaSaved(text: isVideo ? presentationData.strings.Gallery_VideoSaved : presentationData.strings.Gallery_ImageSaved), elevatedLayout: false, animateInAsReplacement: false, action: { _ in return false }), nil)
|
controllerInteraction.presentControllerInCurrent(UndoOverlayController(presentationData: presentationData, content: .mediaSaved(text: isVideo ? presentationData.strings.Gallery_VideoSaved : presentationData.strings.Gallery_ImageSaved), elevatedLayout: false, animateInAsReplacement: false, action: { _ in return true }), nil)
|
||||||
})
|
})
|
||||||
f(.default)
|
f(.default)
|
||||||
})))
|
})))
|
||||||
|
|||||||
@ -295,6 +295,7 @@ final class ChatRecentActionsControllerNode: ViewControllerTracingNode {
|
|||||||
}))
|
}))
|
||||||
}, updateInputState: { _ in }, updateInputMode: { _ in }, openMessageShareMenu: { _ in
|
}, updateInputState: { _ in }, updateInputMode: { _ in }, openMessageShareMenu: { _ in
|
||||||
}, presentController: { _, _ in
|
}, presentController: { _, _ in
|
||||||
|
}, presentControllerInCurrent: { _, _ in
|
||||||
}, navigationController: { [weak self] in
|
}, navigationController: { [weak self] in
|
||||||
return self?.getNavigationController()
|
return self?.getNavigationController()
|
||||||
}, chatControllerNode: { [weak self] in
|
}, chatControllerNode: { [weak self] in
|
||||||
|
|||||||
@ -111,7 +111,9 @@ private final class DrawingStickersScreenNode: ViewControllerTracingNode {
|
|||||||
return false }, openPeer: { _, _, _ in }, openPeerMention: { _ in }, openMessageContextMenu: { _, _, _, _, _ in }, updateMessageReaction: { _ in }, activateMessagePinch: { _ in
|
return false }, openPeer: { _, _, _ in }, openPeerMention: { _ in }, openMessageContextMenu: { _, _, _, _, _ in }, updateMessageReaction: { _ in }, activateMessagePinch: { _ in
|
||||||
}, openMessageContextActions: { _, _, _, _ in }, navigateToMessage: { _, _ in }, navigateToMessageStandalone: { _ in
|
}, openMessageContextActions: { _, _, _, _ in }, navigateToMessage: { _, _ in }, navigateToMessageStandalone: { _ in
|
||||||
}, tapMessage: nil, clickThroughMessage: { }, toggleMessagesSelection: { _, _ in }, sendCurrentMessage: { _ in }, sendMessage: { _ in }, sendSticker: { fileReference, _, _, _, _, node, rect in return selectStickerImpl?(fileReference, node, rect) ?? false }, sendGif: { _, _, _, _, _ in return false }, sendBotContextResultAsGif: { _, _, _, _, _ in return false }, requestMessageActionCallback: { _, _, _, _ in }, requestMessageActionUrlAuth: { _, _ in }, activateSwitchInline: { _, _ in }, openUrl: { _, _, _, _ in }, shareCurrentLocation: {}, shareAccountContact: {}, sendBotCommand: { _, _ in }, openInstantPage: { _, _ in }, openWallpaper: { _ in }, openTheme: { _ in }, openHashtag: { _, _ in }, updateInputState: { _ in }, updateInputMode: { _ in }, openMessageShareMenu: { _ in
|
}, tapMessage: nil, clickThroughMessage: { }, toggleMessagesSelection: { _, _ in }, sendCurrentMessage: { _ in }, sendMessage: { _ in }, sendSticker: { fileReference, _, _, _, _, node, rect in return selectStickerImpl?(fileReference, node, rect) ?? false }, sendGif: { _, _, _, _, _ in return false }, sendBotContextResultAsGif: { _, _, _, _, _ in return false }, requestMessageActionCallback: { _, _, _, _ in }, requestMessageActionUrlAuth: { _, _ in }, activateSwitchInline: { _, _ in }, openUrl: { _, _, _, _ in }, shareCurrentLocation: {}, shareAccountContact: {}, sendBotCommand: { _, _ in }, openInstantPage: { _, _ in }, openWallpaper: { _ in }, openTheme: { _ in }, openHashtag: { _, _ in }, updateInputState: { _ in }, updateInputMode: { _ in }, openMessageShareMenu: { _ in
|
||||||
}, presentController: { _, _ in }, navigationController: {
|
}, presentController: { _, _ in
|
||||||
|
}, presentControllerInCurrent: { _, _ in
|
||||||
|
}, navigationController: {
|
||||||
return nil
|
return nil
|
||||||
}, chatControllerNode: {
|
}, chatControllerNode: {
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@ -99,6 +99,7 @@ final class OverlayAudioPlayerControllerNode: ViewControllerTracingNode, UIGestu
|
|||||||
}, updateInputMode: { _ in
|
}, updateInputMode: { _ in
|
||||||
}, openMessageShareMenu: { _ in
|
}, openMessageShareMenu: { _ in
|
||||||
}, presentController: { _, _ in
|
}, presentController: { _, _ in
|
||||||
|
}, presentControllerInCurrent: { _, _ in
|
||||||
}, navigationController: {
|
}, navigationController: {
|
||||||
return nil
|
return nil
|
||||||
}, chatControllerNode: {
|
}, chatControllerNode: {
|
||||||
|
|||||||
@ -2039,6 +2039,8 @@ final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewDelegate
|
|||||||
}, openMessageShareMenu: { _ in
|
}, openMessageShareMenu: { _ in
|
||||||
}, presentController: { [weak self] c, a in
|
}, presentController: { [weak self] c, a in
|
||||||
self?.controller?.present(c, in: .window(.root), with: a)
|
self?.controller?.present(c, in: .window(.root), with: a)
|
||||||
|
}, presentControllerInCurrent: { [weak self] c, a in
|
||||||
|
self?.controller?.present(c, in: .current, with: a)
|
||||||
}, navigationController: { [weak self] in
|
}, navigationController: { [weak self] in
|
||||||
return self?.controller?.navigationController as? NavigationController
|
return self?.controller?.navigationController as? NavigationController
|
||||||
}, chatControllerNode: {
|
}, chatControllerNode: {
|
||||||
|
|||||||
@ -1248,7 +1248,9 @@ public final class SharedAccountContextImpl: SharedAccountContext {
|
|||||||
}, toggleMessagesSelection: { _, _ in }, sendCurrentMessage: { _ in }, sendMessage: { _ in }, sendSticker: { _, _, _, _, _, _, _ in return false }, sendGif: { _, _, _, _, _ in return false }, sendBotContextResultAsGif: { _, _, _, _, _ in
|
}, toggleMessagesSelection: { _, _ in }, sendCurrentMessage: { _ in }, sendMessage: { _ in }, sendSticker: { _, _, _, _, _, _, _ in return false }, sendGif: { _, _, _, _, _ in return false }, sendBotContextResultAsGif: { _, _, _, _, _ in
|
||||||
return false
|
return false
|
||||||
}, requestMessageActionCallback: { _, _, _, _ in }, requestMessageActionUrlAuth: { _, _ in }, activateSwitchInline: { _, _ in }, openUrl: { _, _, _, _ in }, shareCurrentLocation: {}, shareAccountContact: {}, sendBotCommand: { _, _ in }, openInstantPage: { _, _ in }, openWallpaper: { _ in }, openTheme: { _ in }, openHashtag: { _, _ in }, updateInputState: { _ in }, updateInputMode: { _ in }, openMessageShareMenu: { _ in
|
}, requestMessageActionCallback: { _, _, _, _ in }, requestMessageActionUrlAuth: { _, _ in }, activateSwitchInline: { _, _ in }, openUrl: { _, _, _, _ in }, shareCurrentLocation: {}, shareAccountContact: {}, sendBotCommand: { _, _ in }, openInstantPage: { _, _ in }, openWallpaper: { _ in }, openTheme: { _ in }, openHashtag: { _, _ in }, updateInputState: { _ in }, updateInputMode: { _ in }, openMessageShareMenu: { _ in
|
||||||
}, presentController: { _, _ in }, navigationController: {
|
}, presentController: { _, _ in
|
||||||
|
}, presentControllerInCurrent: { _, _ in
|
||||||
|
}, navigationController: {
|
||||||
return nil
|
return nil
|
||||||
}, chatControllerNode: {
|
}, chatControllerNode: {
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user