From 140526941eee2265d5556254d2b3984daf31762e Mon Sep 17 00:00:00 2001 From: Isaac <> Date: Tue, 16 Jul 2024 19:28:54 +0800 Subject: [PATCH 1/2] Fix build --- .../Sources/PeerInfoScreen.swift | 8 ++-- .../Sources/PeerInfoStoryPaneNode.swift | 48 ++++++++++++++++++- 2 files changed, 51 insertions(+), 5 deletions(-) diff --git a/submodules/TelegramUI/Components/PeerInfo/PeerInfoScreen/Sources/PeerInfoScreen.swift b/submodules/TelegramUI/Components/PeerInfo/PeerInfoScreen/Sources/PeerInfoScreen.swift index 459fd6c012..fa40e249e0 100644 --- a/submodules/TelegramUI/Components/PeerInfo/PeerInfoScreen/Sources/PeerInfoScreen.swift +++ b/submodules/TelegramUI/Components/PeerInfo/PeerInfoScreen/Sources/PeerInfoScreen.swift @@ -10792,8 +10792,6 @@ final class PeerInfoScreenNode: ViewControllerTracingNode, PeerInfoScreenNodePro return } - let _ = pane - var items: [ContextMenuItem] = [] let strings = self.presentationData.strings @@ -10831,14 +10829,16 @@ final class PeerInfoScreenNode: ViewControllerTracingNode, PeerInfoScreenNodePro items.append(.action(ContextMenuActionItem(text: "Select", icon: { theme in return generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/Select"), color: theme.contextMenu.primaryColor) - }, action: { [weak self] _, a in + }, action: { [weak pane] _, a in if ignoreNextActions { return } ignoreNextActions = true a(.default) - let _ = self + if let pane { + pane.setIsSelectionModeActive(true) + } }))) let contextController = ContextController(presentationData: self.presentationData, source: .reference(PeerInfoContextReferenceContentSource(controller: controller, sourceNode: source)), items: .single(ContextController.Items(content: .list(items))), gesture: gesture) diff --git a/submodules/TelegramUI/Components/PeerInfo/PeerInfoVisualMediaPaneNode/Sources/PeerInfoStoryPaneNode.swift b/submodules/TelegramUI/Components/PeerInfo/PeerInfoVisualMediaPaneNode/Sources/PeerInfoStoryPaneNode.swift index c5741a30f7..1feae9dcbd 100644 --- a/submodules/TelegramUI/Components/PeerInfo/PeerInfoVisualMediaPaneNode/Sources/PeerInfoStoryPaneNode.swift +++ b/submodules/TelegramUI/Components/PeerInfo/PeerInfoVisualMediaPaneNode/Sources/PeerInfoStoryPaneNode.swift @@ -3132,7 +3132,7 @@ public final class PeerInfoStoryPaneNode: ASDisplayNode, PeerInfoPaneNode, ASScr parentController.cancelItemSelection() } - let _ = self.context.engine.messages.deleteBotPreviews(peerId: peerId, ids: mappedItemIds) + let _ = self.context.engine.messages.deleteBotPreviews(peerId: peerId, ids: mappedItemIds).startStandalone() }) ]), ActionSheetItemGroup(items: [ActionSheetButtonItem(title: presentationData.strings.Common_Cancel, action: { dismissAction() })]) @@ -3459,6 +3459,52 @@ public final class PeerInfoStoryPaneNode: ASDisplayNode, PeerInfoPaneNode, ASScr } )) + let selectionPanelSize = selectionPanel.update( + transition: selectionPanelTransition, + component: AnyComponent(BottomActionsPanelComponent( + theme: presentationData.theme, + insets: UIEdgeInsets(top: 0.0, left: sideInset, bottom: bottomInset, right: sideInset), + items: selectionItems + )), + environment: {}, + containerSize: size + ) + let selectionPanelFrame = CGRect(origin: CGPoint(x: 0.0, y: size.height - selectionPanelSize.height), size: selectionPanelSize) + if let selectionPanelView = selectionPanel.view { + if selectionPanelView.superview == nil { + self.view.addSubview(selectionPanelView) + transition.animatePositionAdditive(layer: selectionPanelView.layer, offset: CGPoint(x: 0.0, y: selectionPanelFrame.height)) + } + selectionPanelTransition.setFrame(view: selectionPanelView, frame: selectionPanelFrame) + } + bottomInset = selectionPanelSize.height + } else if self.isProfileEmbedded, let selectedIds = self.itemInteraction.selectedIds, self.canManageStories, case .botPreview = self.scope { + let selectionPanel: ComponentView + var selectionPanelTransition = ComponentTransition(transition) + if let current = self.selectionPanel { + selectionPanel = current + } else { + selectionPanelTransition = selectionPanelTransition.withAnimation(.none) + selectionPanel = ComponentView() + self.selectionPanel = selectionPanel + } + + var selectionItems: [BottomActionsPanelComponent.Item] = [] + + selectionItems.append(BottomActionsPanelComponent.Item( + id: "delete", + color: .destructive, + title: presentationData.strings.StoryList_ActionPanel_Delete, + isEnabled: !selectedIds.isEmpty, + action: { [weak self] in + guard let self, let selectedIds = self.itemInteraction.selectedIds else { + return + } + + self.presentDeleteConfirmation(ids: selectedIds) + } + )) + let selectionPanelSize = selectionPanel.update( transition: selectionPanelTransition, component: AnyComponent(BottomActionsPanelComponent( From 6c7c6c8002236fe46378d8bc02ca25d273de88a3 Mon Sep 17 00:00:00 2001 From: Isaac <> Date: Tue, 16 Jul 2024 19:29:05 +0800 Subject: [PATCH 2/2] Fix layout --- .../Sources/PeerInfoStoryPaneNode.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/submodules/TelegramUI/Components/PeerInfo/PeerInfoVisualMediaPaneNode/Sources/PeerInfoStoryPaneNode.swift b/submodules/TelegramUI/Components/PeerInfo/PeerInfoVisualMediaPaneNode/Sources/PeerInfoStoryPaneNode.swift index 1feae9dcbd..a75d500d8d 100644 --- a/submodules/TelegramUI/Components/PeerInfo/PeerInfoVisualMediaPaneNode/Sources/PeerInfoStoryPaneNode.swift +++ b/submodules/TelegramUI/Components/PeerInfo/PeerInfoVisualMediaPaneNode/Sources/PeerInfoStoryPaneNode.swift @@ -4100,7 +4100,9 @@ private final class BottomActionsPanelComponent: Component { let itemCenterX: CGFloat = CGFloat(i) * (floor((availableSize.width - sideInset * 2.0) / CGFloat(itemsAndSizes.count - 1))) let itemX: CGFloat - if i == 0 { + if itemsAndSizes.count == 1 { + itemX = floor((availableSize.width - itemSize.width) * 0.5) + } else if i == 0 { itemX = sideInset } else if i == itemsAndSizes.count - 1 { itemX = availableSize.width - sideInset - itemSize.width