From 340cc2c3852ee4a9222ff72ec3dd59b088b7c07c Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Sun, 31 Dec 2023 16:31:08 +0400 Subject: [PATCH] Various fixes --- .../Components/MediaEditor/Sources/MediaEditor.swift | 2 +- .../MediaEditorScreen/Sources/MediaEditorScreen.swift | 2 +- .../Sources/StoryItemSetContainerComponent.swift | 2 +- .../Sources/StoryItemSetContainerViewSendMessage.swift | 9 ++++++++- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/submodules/TelegramUI/Components/MediaEditor/Sources/MediaEditor.swift b/submodules/TelegramUI/Components/MediaEditor/Sources/MediaEditor.swift index 3815e2ac1b..899204a09e 100644 --- a/submodules/TelegramUI/Components/MediaEditor/Sources/MediaEditor.swift +++ b/submodules/TelegramUI/Components/MediaEditor/Sources/MediaEditor.swift @@ -625,7 +625,7 @@ public final class MediaEditor { textureSource = self.context.engine.data.get(TelegramEngine.EngineData.Item.Messages.Message(id: messageId)) |> mapToSignal { message in var player: AVPlayer? - if let message { + if let message, !"".isEmpty { if let maybeFile = message.media.first(where: { $0 is TelegramMediaFile }) as? TelegramMediaFile, maybeFile.isVideo, let path = self.context.account.postbox.mediaBox.completedResourcePath(maybeFile.resource, pathExtension: "mp4") { let asset = AVURLAsset(url: URL(fileURLWithPath: path)) player = makePlayer(asset: asset) diff --git a/submodules/TelegramUI/Components/MediaEditorScreen/Sources/MediaEditorScreen.swift b/submodules/TelegramUI/Components/MediaEditorScreen/Sources/MediaEditorScreen.swift index 246fc32968..1ce7002286 100644 --- a/submodules/TelegramUI/Components/MediaEditorScreen/Sources/MediaEditorScreen.swift +++ b/submodules/TelegramUI/Components/MediaEditorScreen/Sources/MediaEditorScreen.swift @@ -2473,7 +2473,7 @@ public final class MediaEditorScreen: ViewController, UIDropInteractionDelegate messageEntity.secondaryRenderImage = result.nightImage messageEntity.overlayRenderImage = result.overlayImage messageEntity.referenceDrawingSize = storyDimensions - messageEntity.position = CGPoint(x: storyDimensions.width / 2.0, y: storyDimensions.height / 2.0) + messageEntity.position = CGPoint(x: storyDimensions.width / 2.0 - 16.0, y: storyDimensions.height / 2.0) let fraction = max(result.size.width, result.size.height) / 353.0 messageEntity.scale = min(6.0, 3.3 * fraction) diff --git a/submodules/TelegramUI/Components/Stories/StoryContainerScreen/Sources/StoryItemSetContainerComponent.swift b/submodules/TelegramUI/Components/Stories/StoryContainerScreen/Sources/StoryItemSetContainerComponent.swift index 88a5109fbc..ca36a5d451 100644 --- a/submodules/TelegramUI/Components/Stories/StoryContainerScreen/Sources/StoryItemSetContainerComponent.swift +++ b/submodules/TelegramUI/Components/Stories/StoryContainerScreen/Sources/StoryItemSetContainerComponent.swift @@ -992,7 +992,7 @@ public final class StoryItemSetContainerComponent: Component { } if let selectedMediaArea { - self.sendMessageContext.activateMediaArea(view: self, mediaArea: selectedMediaArea) + self.sendMessageContext.activateMediaArea(view: self, mediaArea: selectedMediaArea, position: point) } else { var direction: NavigationDirection? if point.x < itemLayout.containerSize.width * 0.25 { diff --git a/submodules/TelegramUI/Components/Stories/StoryContainerScreen/Sources/StoryItemSetContainerViewSendMessage.swift b/submodules/TelegramUI/Components/Stories/StoryContainerScreen/Sources/StoryItemSetContainerViewSendMessage.swift index 4fa7ef5151..e30e658258 100644 --- a/submodules/TelegramUI/Components/Stories/StoryContainerScreen/Sources/StoryItemSetContainerViewSendMessage.swift +++ b/submodules/TelegramUI/Components/Stories/StoryContainerScreen/Sources/StoryItemSetContainerViewSendMessage.swift @@ -3279,7 +3279,7 @@ final class StoryItemSetContainerSendMessage { } private var selectedMediaArea: MediaArea? - func activateMediaArea(view: StoryItemSetContainerComponent.View, mediaArea: MediaArea, immediate: Bool = false) { + func activateMediaArea(view: StoryItemSetContainerComponent.View, mediaArea: MediaArea, position: CGPoint? = nil, immediate: Bool = false) { guard let component = view.component, let controller = component.controller() else { return } @@ -3289,6 +3289,8 @@ final class StoryItemSetContainerSendMessage { let context = component.context + var useGesturePosition = false + var actions: [ContextMenuAction] = [] switch mediaArea { case let .venue(_, venue): @@ -3325,6 +3327,7 @@ final class StoryItemSetContainerSendMessage { action() })) case let .channelMessage(_, messageId): + useGesturePosition = true let action = { [weak self, weak view, weak controller] in let _ = ((context.engine.messages.getMessagesLoadIfNecessary([messageId], strategy: .cloud(skipLocal: true)) |> mapToSignal { result -> Signal in @@ -3384,6 +3387,10 @@ final class StoryItemSetContainerSendMessage { var frame = CGRect(x: mediaArea.coordinates.x / 100.0 * referenceSize.width - size.width / 2.0, y: mediaArea.coordinates.y / 100.0 * referenceSize.height - size.height / 2.0, width: size.width, height: size.height) frame = view.controlsContainerView.convert(frame, to: nil) + if useGesturePosition, let position { + frame = CGRect(origin: position.offsetBy(dx: 0.0, dy: 44.0), size: .zero) + } + let node = controller.displayNode let menuController = makeContextMenuController(actions: actions, blurred: true) menuController.centerHorizontally = true